Python-pptx更改版式中的图片

4
我希望您能自动导入图片,以避免每次手动添加数百张图片。但我似乎无法访问图片的占位符并用新图片替换它们。 如果您能指点一下正确的方向,将会是极大的帮助。
以下是起始代码:
import pptx
import pptx.util

from pptx import Presentation

prs = Presentation('prepare_2.pptx')

picture_runs = []


for slide in prs.slides:
    for shape in slide.shapes:
        if shape.shape_type == 13:

            slide.get.image('tree.jpg')
          >Picture_runs.append((shape.name,shape.shape_type,shape.id,shape.image))

我获得的信息如下: http://python-pptx.readthedocs.io/en/latest/user/quickstart.html 幻灯片布局
1个回答

1

首先,您需要分析模板中可用的布局(在您的情况下为prepare_2.pptx)。

要做到这一点,只需编写一个脚本,获取演示文稿中的所有布局,并列出所有形状和占位符。类似于以下内容:

prs = Presentation('template.pptx')
for idx, slide_layout in enumerate(prs.slide_layouts):
    slide = prs.add_slide(slide_layout)
    for shape in slide.placeholders:
        print idx, shape.placeholder_format.idx, shape.name

如果您直接使用此脚本,可能需要处理异常情况,以防形状不是占位符。您还可以通过编辑Powerpoint上的演示文稿母版来了解和设计您的布局,但是您将不得不猜测idxs。
一旦您知道哪种布局中有图片占位符,就可以选择这种布局来创建带有图像的新幻灯片。
类似于这样:
slide = prs.slides.add_slide(THE_IDX_OF_YOUR_LAYOUT_WITH_PICTURE)
placeholder = slide.placeholders[THE_IDX_OF_YOUR_PICTURE_PLACEHOLDER]
placeholder.insert_picture(picture)

我建议您阅读这篇绝对精彩的与之相关的文章: http://pbpython.com/creating-powerpoint.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接