下面我将为你详细介绍如何使用 python-pptx 库来导出演示文稿为不同格式,并提供一个完整的代码示例。

核心库:python-pptx
python-pptx 是一个功能强大的库,专门用于创建和修改 OpenXML PowerPoint (.pptx) 文件,它允许你以编程的方式添加幻灯片、文本、图片、形状、图表等几乎所有 PowerPoint 支持的元素。
安装: 你需要安装这个库,在终端或命令行中运行:
pip install python-pptx
导出为不同格式
python-pptx 库本身主要处理的是 .pptx 格式。PowerPoint 桌面应用程序本身支持将 .pptx 文件另存为多种其他格式,如 PDF、图片、视频等。
Python 导出的过程分为两步:

- 使用
python-pptx生成或修改.pptx文件。 - 调用 PowerPoint 应用程序(或使用其他库如
comtypes)将.pptx文件转换为其他格式。
直接导出为 .pptx 文件
这是最直接的方式,当你创建完演示文稿后,直接将其保存为一个 .pptx 文件。
示例代码:
from pptx import Presentation
# 1. 创建一个新的演示文稿对象
prs = Presentation()
# 2. 添加一张幻灯片(使用默认的标题和内容版式)slide_layout = prs.slide_layouts[0] # 0 是标题幻灯片版式
slide = prs.slides.add_slide(title_slide_layout)
# 3. 在幻灯片上添加文本= slide.shapes.title= slide.placeholders[1]
text = "你好,Python!"text = "使用 python-pptx 创建的演示文稿"
# 4. 将演示文稿保存为 .pptx 文件
# 这是“导出”过程的核心
output_filename = "my_presentation.pptx"
prs.save(output_filename)
print(f"演示文稿已成功导出为: {output_filename}")
运行这段代码后,你会在当前目录下得到一个名为 my_presentation.pptx 的文件。
通过 PowerPoint 自动化导出为 PDF
将演示文稿导出为 PDF 是一个非常普遍的需求,这需要使用 python-pptx 生成 .pptx 文件,然后利用 pywin32 库(Windows 平台)来调用 PowerPoint 的 COM 接口,实现自动化操作。

步骤:
-
安装
pywin32库:pip install pywin32
-
编写代码: 这段代码会先创建
.pptx文件,然后启动 PowerPoint 应用程序,打开该文件,并将其另存为 PDF,最后关闭 PowerPoint。import os from pptx import Presentation import win32com.client as win32 # --- 第一步:使用 python-pptx 创建 .pptx 文件 --- prs = Presentation()slide_layout = prs.slide_layouts[0] slide = prs.slides.add_slide(title_slide_layout) = slide.shapes.title subtitle = slide.placeholders[1] text = "导出为 PDF 示例" subtitle.text = "此演示文稿将被自动导出为 PDF 文件" pptx_filename = "presentation_to_export.pptx" pdf_filename = "presentation_to_export.pdf" # 确保PDF文件名和PPTX文件名不同 if os.path.exists(pdf_filename): os.remove(pdf_filename) prs.save(pptx_filename) print(f"已创建 {pptx_filename}") # --- 第二步:使用 COM 自动化导出为 PDF --- try: # 启动 PowerPoint 应用程序 powerpoint = win32.Dispatch("PowerPoint.Application") powerpoint.Visible = True # 设置为 True 可以看到 PowerPoint 界面,方便调试 # 打开我们刚刚创建的 .pptx 文件 deck = powerpoint.Presentations.Open(os.path.abspath(pptx_filename)) # 将演示文稿另存为 PDF # 32 是 ppSaveAsPDF 的常量值 deck.SaveAs(os.path.abspath(pdf_filename), 32) print(f"已成功导出为 {pdf_filename}") # 关闭演示文稿和 PowerPoint 应用程序 deck.Close() powerpoint.Quit() print("PowerPoint 应用程序已关闭。") except Exception as e: print(f"导出 PDF 时发生错误: {e}") if 'powerpoint' in locals(): powerpoint.Quit()
注意:
- 此方法仅适用于 Windows 操作系统,因为它依赖于 Windows 的 COM 自动化技术。
- 运行此代码的电脑上必须安装了 Microsoft PowerPoint 桌面应用。
导出为图片(如 PNG)
将每一页幻灯片保存为一张图片,也可以通过 PowerPoint 自动化来实现,原理和导出 PDF 类似,只是保存的格式和参数不同。
示例代码:
import os
from pptx import Presentation
import win32com.client as win32
# --- 第一步:创建 .pptx 文件 ---
prs = Presentation()
# 添加两张幻灯片以演示
prs.slides.add_slide(prs.slide_layouts[1]) # 标题和内容
prs.slides.add_slide(prs.slide_layouts[2]) # 节
pptx_filename = "presentation_to_images.pptx"
image_folder = "exported_images"
# 确保图片文件夹存在
if not os.path.exists(image_folder):
os.makedirs(image_folder)
prs.save(pptx_filename)
print(f"已创建 {pptx_filename}")
# --- 第二步:导出为图片 ---
try:
powerpoint = win32.Dispatch("PowerPoint.Application")
powerpoint.Visible = False # 后台运行,不显示界面
deck = powerpoint.Presentations.Open(os.path.abspath(pptx_filename))
# 遍历每一张幻灯片
for i, slide in enumerate(deck.Slides()):
# 构造图片文件名,slide_1.png, slide_2.png
image_path = os.path.join(image_folder, f"slide_{i+1}.png")
# 导出幻灯片为图片
# 17 是 ppSaveAsPNG 的常量值
# 2 是导出分辨率的常量值 (ppResolutionScreen)
slide.Export(os.path.abspath(image_path), "PNG", 800, 600) # 也可以指定宽高
print(f"已导出幻灯片 {i+1} 为 {image_path}")
deck.Close()
powerpoint.Quit()
print("所有幻灯片已成功导出为图片。")
except Exception as e:
print(f"导出图片时发生错误: {e}")
if 'powerpoint' in locals():
powerpoint.Quit()
运行后,你会得到一个名为 exported_images 的文件夹,里面包含 slide_1.png, slide_2.png 等文件。
总结与推荐方案
| 导出格式 | 核心库 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
.pptx |
python-pptx |
简单、快速、跨平台 | 无法直接导出为其他格式 | 需要生成或修改 PowerPoint 文件本身 |
.pdf |
python-pptx + pywin32 |
功能强大,利用 PowerPoint 的原生能力 | 仅限 Windows,依赖 PowerPoint 桌面应用 | 需要分发、打印或归档演示文稿 |
| 图片 | python-pptx + pywin32 |
灵活,可用于网页展示或缩略图 | 仅限 Windows,依赖 PowerPoint 桌面应用 | 需要将每一页幻灯片单独作为图片使用 |
推荐方案:
- 如果只需要生成
.pptx文件:直接使用python-pptx即可,这是最简单、最可靠的方式。 - 如果需要导出为 PDF 或图片:
- 在 Windows 环境下:采用“
python-pptx生成文件 +pywin32调用 PowerPoint 自动化”的组合方案,这是最标准、功能最完整的方法。 - 在 macOS 或 Linux 环境下:
pywin32不可用,你可以考虑以下替代方案:**使用 LibreOffice 的命令行工具
- 在 Windows 环境下:采用“
