使用演示文稿

python-pptx 允许您创建新的演示文稿,以及对现有的演示文稿进行更改。实际上,它只允许您更改现有的演示文稿;只是,如果你一开始的演讲没有任何幻灯片,你会觉得你是在从零开始。

然而,演示文稿的外观在很大程度上是由删除所有幻灯片后剩下的部分决定的,特别是主题、幻灯片母片和从幻灯片母片派生出来的幻灯片布局。让我们通过例子一步一步地来了解它,从你可以对演示文稿做的两件事开始,打开并保存它。

打开演示文稿

最简单的方法是打开新的演示文稿,而不需要指定要打开的文件:

from pptx import Presentation

prs = Presentation()
prs.save('test.pptx')

这将从内置的默认模板创建新的演示文稿,并将其保存到名为 ‘test.pptx’ 的文件中。有几件事需要注意:

  • 所谓的默认模板实际上只是 PowerPoint 文件,里面没有任何幻灯片,存储在已安装的 python-pptx 包中。这与你从全新的 PowerPoint 安装中创建新的演示文稿时所得到的效果是一样的,基于 “White” 模板的 4x3 宽高比演示文稿。好吧,但它不包含任何幻灯片。默认情况下,PowerPoint 总是会添加一张空白页作为第一张幻灯片。

  • 在保存之前,您不需要对它做任何操作。如果你想知道模板包含了什么,只需查看它创建的 ‘test.pptx’ 文件。

  • 我们称它为 模板,但实际上它只是普通的 PowerPoint 文件,删除了所有的幻灯片。和实际的 PowerPoint 模板文件(.potx)有点不同。稍后可能会详细介绍这些内容,但是在使用 python-pptx 时并不需要它们。

真正打开演示文稿

好的,如果你想要控制最终的演示文稿,或者如果你想要改变现有的演示文稿,你需要打开带文件名的文件:

prs = Presentation('existing-prs-file.pptx')
prs.save('new-file-name.pptx')

注意事项:

  • 你可以用这种方式打开任何 PowerPoint 2007 及以后版本的文件(PowerPoint 2003 及以前版本的 .ppt 文件不行)。虽然您可能还不能操作所有的内容,但已经存在的内容都可以加载和保存。功能集仍在构建中,所以你还不能添加或更改像 Notes Pages 这样的东西,但如果演示文稿已经有了这些功能,那么 python-pptx 就会礼貌地不去理会它们,而聪明地在不了解它们是什么的情况下保存它们。

  • 如果你使用相同的文件名来打开和保存文件,python-pptx 会乖乖地覆盖原来的文件,一眼也看不出来。你要确保这就是你的意图。

打开 ‘file-like’ 演示文稿

python-pptx 可以从所谓的 file-like 对象打开演示文稿。它还可以保存到 file-like 的对象。当您希望通过网络连接或从数据库获得源或目标演示文稿,并且不希望(或不允许)与文件系统交互时,这很方便。在实践中,这意味着你可以像这样传递打开的文件或 StringIO/BytesIO 流对象来打开或保存演示文稿:

f = open('foobar.pptx')
prs = Presentation(f)
f.close()

# or

with open('foobar.pptx') as f:
    source_stream = StringIO(f.read())
prs = Presentation(source_stream)
source_stream.close()
...
target_stream = StringIO()
prs.save(target_stream)

好吧,你已经打开了演示文稿,并且很确定你可以把它保存在某个地方。下一步就是在那里幻灯片……