【问题标题】:Python PPTX Slide Layout ImportPython PPTX 幻灯片版式导入
【发布时间】:2017-11-23 01:43:41
【问题描述】:

抱歉,我一直在寻找解决方案,但找不到足够的文档来解决这个问题。我正在尝试导入学校所需的默认幻灯片布局,它有一个特殊的背景和一个标题块和一个字幕块。我假设当我导入它时,python-pptx 会自动为这两个文本块创建占位符 0 和 1,但是当我尝试编辑占位符时,我得到一个属性错误:

AttributeError: 'Presentation' object has no attribute 'placeholders'

我的代码如下:

from pptx import Presentation
prs = Presentation('SeniorDesignTitleSlide.pptx')

Presentation_Title = prs.placeholders[0]
Presentation_Subtitle = prs.placeholders[1]
Presentation_Title.text = 'This Is a Test'
Presentation_Subtitle.text = 'Is This Working?'

prs.save('SlideLayoutImportTest.pptx')

编辑[0]:​​我确实意识到我只是打开了那个特定的演示文稿,但是我如何访问和编辑其中的单张幻灯片?

编辑[1]:我在 2015 年发现了一些关于 python-pptx 扩展此功能的帖子,但没有进一步的信息表明它实际发生了。

python-pptx 如何为导入的幻灯片布局分配占位符?或者它甚至会这样做吗?它需要是 .potx 文件吗?

提前谢谢你。

【问题讨论】:

    标签: python python-pptx


    【解决方案1】:

    占位符属于 slide 对象,而不是演示对象。所以第一件事就是拿一张幻灯片。

    幻灯片是从幻灯片布局创建的,它本质上是克隆以获得一些初始形状,包括在许多情况下的占位符。

    所以第一步是弄清楚你想要哪种幻灯片布局。最简单的方法是打开“开始”演示文稿(有时称为“模板”演示文稿)并使用“视图”>“母版”>“幻灯片母版...”菜单选项检查它的幻灯片母版和布局。

    找到你想要的那个,从第一个布局开始倒计时,从 0 开始,然后你就会得到那个幻灯片布局的 index

    那么你的代码看起来像这样:

    from pptx import Presentation
    
    prs = Presentation('SeniorDesignTitleSlide.pptx')
    
    slide_layout = prs.slide_layouts[0]  # assuming you want the first one
    slide = prs.slides.add_slide(slide_layout)
    
    Presentation_Title = slide.placeholders[0]
    Presentation_Subtitle = slide.placeholders[1]
    Presentation_Title.text = 'This Is a Test'
    Presentation_Subtitle.text = 'Is This Working?'
    
    prs.save('SlideLayoutImportTest.pptx')
    

    就索引访问而言,placeholders 集合的行为类似于dict,因此上面用作索引的 0 和 1 在您的情况下不太可能完全匹配(尽管 0 可能会起作用;标题总是0).

    此文档页面解释了如何发现您的模板可用的索引:http://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html

    之前的页面有更多关于占位符概念的内容: http://python-pptx.readthedocs.io/en/latest/user/placeholders-understanding.html

    【讨论】:

    • 斯堪尼,谢谢。我应该更清楚一点,在从头开始创建演示文稿并使用 11 种布局时,我实际上对 pptx 有一些经验。但是当我打开演示文稿并将幻灯片布局0(标题)添加到演示文稿中的幻灯片时,该标题幻灯片会采用高级设计模板文件中占位符的背景和位置吗?
    • 我也会投票给你,但我还没有那 15 名声望。 :(
    • @CBK 幻灯片显示其布局上的内容,所以是的,使用标题幻灯片布局创建的标题幻灯片采用其背景和占位符。这些项目必须在布局上。如果它只是一张幻灯片(就像他们给你一个包含示例幻灯片的 .pptx,但没有使用这些幻灯片创建布局),你必须自己制作或更新布局以获得继承行为。
    • 斯堪尼,这简直太棒了!它创建了模板的精确副本,并且占位符按照应有的方式进行了排列和排列。非常感谢你的帮助。我应该首先尝试添加一张幻灯片。哦,好吧,你生活,你学习。再次感谢,再次抱歉无法为您投票。如果可以的话,我会的。
    • 如果它回答了你的问题,你仍然可以接受答案:)
    猜你喜欢
    • 1970-01-01
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多