1.设计模板ppt文件

这里我们使用依靠模板ppt文件的方式来自动化创建ppt,减少后续在代码中设置ppt样式。在模板里面我们设置好要填写的区域并设置好样式,之后填写内容时将自动为该样式。
设置模板ppt方式如下:
(1)创建一个新ppt模板model.pptx,打开ppt,点击【视图】->【幻灯片母版】
image
(2)设置需要的填写区域和样式
这里左侧栏是幻灯片母版,应对各种幻灯片的需要设计多种母版幻灯片。我设计了两个幻灯片母版,第一个设计了两块填写区域。
image

2.根据模板自动化创建ppt

(1)加载模板ppt文件
需要导入库:from pptx import Presentation

from pptx import Presentation
prs = Presentation("model.pptx")

(2)按照第一个幻灯片模板创建一张幻灯片对象

# 按照第一个幻灯片母板新添一张幻灯片
oneSlide = prs.slides.add_slide(prs.slide_layouts[0])

prs.slides是获取该ppt全部幻灯片对象
prs.slides[0]是获取该ppt第一个幻灯片对象
prs.slides.add_slide()方法是添加一个新的幻灯片
prs.slide_layouts是获取该ppt全部幻灯片母板对象
prs.slide_layouts[0]是获取该ppt第一个幻灯片母板对象
(3)向幻灯片中添加内容
①添加备注

oneSlide.notes_slide.notes_text_frame.text = "这是一个备注"

②添加正文

# 获取模板可填充的所有位置对象
body_shapes = oneSlide.shapes.placeholders

# 第一个可填充位置对象
shape = body_shapes[0]

# 获取当前位置的text_frame属性
text_frame = shape.text_frame

# 添加一个段落对象
paragraph = text_frame.add_paragraph()

# 给段落添加内容
paragraph.text = "这是一个段落内容"


③调整样式
如果需要再调整样式,可以使用代码来调整

# 该段落设置为大纲等级0的样式
paragraph.level = 0

# 修改段落字体颜色
paragraph.font.color.rgb = RGBColor(128, 0, 0)

# 段落加粗
paragraph.bold = True

④添加图片
需要导入from pptx.util import Inches

# 调整图片位置
left, top, width, height = (Inches(6),Inches(2),Inches(6),Inches(2))
# 填充图片,img为土图片地址
oneSlide.shapes.add_picture(img, left, top, width, height)

(4)保存ppt

# 保存在pptPath路径下
prs.save(pptPath)

演示如下:

from pptx import Presentation
from pptx.util import Inches

prs = Presentation("data_0112\model.pptx")
oneSlide = prs.slides.add_slide(prs.slide_layouts[0])
oneSlide.notes_slide.notes_text_frame.text = "这是一个备注"

# 获取模板可填充的所有位置对象
body_shapes = oneSlide.shapes.placeholders

# 第一个可填充位置对象
shape = body_shapes[0]
# 第二个可填充位置对象
shape2 = body_shapes[1]

# 获取当前位置的text_frame属性
text_frame = shape.text_frame
text_frame2 = shape2.text_frame

# 添加一个段落对象
paragraph = text_frame.add_paragraph()
paragraph2 = text_frame2.add_paragraph()

# 给段落添加内容
paragraph.text = "这是标题"
paragraph2.text = "这是副标题"

# 调整图片位置
left, top, width, height = (Inches(6),Inches(2),Inches(6),Inches(2))
# 填充图片
oneSlide.shapes.add_picture(r'data_0112\assets\2022-02-22-09-14-35.png', left, top, width, height)

# 保存在pptPath路径下
prs.save(r'data_0112\test_0112.pptx')

ppt效果如下图:
image

posted on 2022-07-29 09:19  NoName-Newbee  阅读(777)  评论(0编辑  收藏  举报