2016-05-16 124 views
1

我尝试启用自动导入图片,以防止每次手动广告100张图片。我似乎无法访问图片的占位符并用新图片替换它们。 一些正确的方向指导将有很大的帮助。python-pptx在布局中更改图片

代码我开始:

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

回答

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上编辑您的演示文稿大师来了解和设计您的布局,但是您必须猜测这些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