"""
slide(幻灯片): 一个ppt由一系列的slide构成
slide_master(幻灯片母版): 母版可定义主题样式基准
slide_layouts(模板): 创建幻灯片时可选择的模板
shape(形状): 包含一切可视元素,包含 slide,shapes 可访问 slide 内元素
placeholder(占位符): 在模板中占据位置,如图片、文字等
paragraph(段落): 文本段,可以直接设置整段文本样式
"""
def base_ppt(path):
from pptx import Presentation
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[0])
slide = ppt.slides.add_slide(ppt.slide_layouts[1])
slide = ppt.slides.add_slide(ppt.slide_layouts[2])
slide = ppt.slides.add_slide(ppt.slide_layouts[3])
slide = ppt.slides.add_slide(ppt.slide_layouts[4])
ppt.save(path)
def create_ppt(path):
from pptx import Presentation
from pptx.util import Pt
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[1])
shapes = slide.shapes
title = shapes.title
title.text = 'This is Python-pptx Title !'
content = shapes.placeholders[1]
content.text = 'Content Info'
slide2 = ppt.slides.add_slide(ppt.slide_layouts[1])
shapes2 = slide2.shapes
content = shapes2.placeholders[1]
content.text_frame.text = "这是内容1"
content.text_frame.level = 1
tf = content.text_frame
p1 = tf.add_paragraph()
p1.text = "这是内容2"
p1.level = 2
p2 = tf.add_paragraph()
p2.text = "这是内容3"
p2.level = 3
p3 = tf.add_paragraph()
p3.text = "这是内容4"
p3.font.bold = True
p3.font.size = Pt(30)
slide3 = ppt.slides.add_slide(ppt.slide_layouts[6])
left = top = width = height = Pt(200)
text_box = slide3.shapes.add_textbox(left, top, width, height)
tf3 = text_box.text_frame
tf3.text = '这是文本框内容!'
p4 = tf3.add_paragraph()
p4.text = "这是内容5"
p4.font.bold = True
p4.font.size = Pt(30)
ppt.save(path)
def add_pic(path):
from pptx import Presentation
from pptx.util import Pt
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[6])
shapes = slide.shapes
left = top = Pt(50)
height = Pt(300)
shapes.add_picture(
'D:\\git-python\\前端\\static\\img\\haha.png', left, top, height)
ppt.save(path)
def add_flow_chart(path):
from pptx import Presentation
from pptx.enum.shapes import MSO_AUTO_SHAPE_TYPE
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
from pptx.util import Inches, Pt
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[5])
shapes = slide.shapes
shapes.title.text = '流程图'
left = Inches(0.7)
top = Inches(2)
width = Inches(2)
height = Inches(1)
for n in range(1, 6):
shape = shapes.add_shape(autoshape_type_id=MSO_AUTO_SHAPE_TYPE.CHEVRON,
left=left,
top=top,
width=width,
height=height)
p = shape.text_frame
p.text = 'Step %d' % n
p.fit_text(font_file=r"c:\windows\fonts\calibriz.ttf",
max_size=20, bold=True, italic=True)
textbox = shapes.add_textbox(left=left,
top=top + height + Inches(0.3),
width=width,
height=Inches(4)
)
tf = textbox.text_frame
para = tf.add_paragraph()
para.text = 'do\n\n\n something'
para.alignment = PP_ALIGN.CENTER
font = para.font
font.size = Pt(24)
font.name = 'Arial'
font.bold = True
font.italic = True
font.color.rgb = RGBColor(225, 225, 0)
left = left + width - Inches(0.3)
ppt.save(path)
def get_ppt(path):
from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE_TYPE
ppt = Presentation(path)
slide0 = ppt.slides[0]
for shape in slide0.shapes:
print(shape.shape_type)
if shape.shape_type == MSO_SHAPE_TYPE.TABLE:
for row in shape.table.rows:
for cell in row.cells:
print(cell.text_frame.text)
if __name__ == '__main__':
get_ppt('./办公自动化/files/ppt_flow_chart.pptx')