python-pptx在布局中更改图片

时间:2016-05-16 09:53:00

标签: python image layout powerpoint python-pptx

我尝试启用自动导入图片,以防止每次手动播放100张图片。我似乎无法访问图片的占位符并用新图片替换它们。 一些正确方向的指南会有很大的帮助。

代码我从:

开始
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

slide layout

1 个答案:

答案 0 :(得分:0)

首先,您必须分析模板中可用的布局(在您的案例中为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

如果按原样使用此脚本,则必须在shape不是占位符时管理异常。您还可以通过在Powerpoint上编辑演示文稿母版来了解和设计您的布局,但您必须猜测idx。

一旦知道哪个布局中包含了图片占位符,就可以选择这种布局来创建带有图像的新幻灯片。

类似的东西:

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