PPT 演示文稿生成技能——用 python-pptx 从零生成、编辑、分析 .pptx 文件。覆盖:创建演示文稿/融资 deck/课件、读取提取文字、编辑更新已有文件、套模板、加图表/图片/图标/演讲者备注。内置配色方案、排版规范、版式灵感和'AI 味避坑清单',确保生成的是有设计感、不像机器套模板的幻灯片。当用户说'做个 PPT''生成演示文稿''把这份大纲做成 slides''读取这个 pptx 的文字''套用这个模板改一版''给每页加演讲者备注'时触发。用 python-pptx 从零生成/编辑
PPT 演示文稿生成(PPTX Generator)是一项面向实际任务的技能,主要用于.pptx 本质是 XML 的 ZIP 包;本技能用 python-pptx 生成与编辑,并强制执行一套「设计感 + 反 AI 味」规范,让产出的幻灯片专业、有辨识度,而不是满屏项目符号的白底套模板;
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
.pptx本质是 XML 的 ZIP 包。本技能用 python-pptx 生成与编辑,并强制执行一套「设计感 + 反 AI 味」规范,让产出的幻灯片专业、有辨识度,而不是满屏项目符号的白底套模板。
做个 PPT、生成演示文稿、幻灯片、slides、把大纲做成 deck、读取 pptx、提取文字、编辑 pptx、套模板、加图表、加演讲者备注、课件、融资 deck、汇报材料
python-pptx 在隔离环境里需要安装一次:
# 用 WorkBuddy 托管的 Python 建 venv 并安装(推荐,隔离干净) "C:/Users/Administrator/.workbuddy/binaries/python/versions/3.13.12/python.exe" -m venv "C:/Users/Administrator/.workbuddy/binaries/python/envs/default" "C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/pip.exe" install python-pptx # 之后运行脚本: "C:/Users/Administrator/.workbuddy/binaries/python/envs/default/Scripts/python.exe" your_script.py
若脚本里
import pptx失败,再装一次即可。不要全局pip install。
from pptx import Presentation → prs = Presentation()prs.slide_width = Inches(13.333); prs.slide_height = Inches(7.5)(16:9 宽屏)。默认的 Presentation() 是 10×7.5 英寸,不够宽。prs.slide_layouts[6] 自由摆放,或选带占位符的版式。slide.shapes.add_textbox(left, top, width, height)、add_picture()、add_chart()、add_shape()。slide.notes_slide.notes_text_frame.text = "..."(每页一次)。prs.save("deck.pptx")。完整可改模板见 references/pptx_template.py(含标题页、两栏、图表页、图标卡、时间轴五种版式,复制即用)。
from pptx import Presentation
prs = Presentation("template.pptx") # 套模板:直接读模板
slide = prs.slides.add_slide(prs.slide_layouts[6])
# 改文字:遍历 slide.shapes,找到 text_frame 后改 run.text(保留格式)
# 加页:prs.slides.add_slide(...)
prs.save("out.pptx")
重要:
run.text = "新内容",不要 text_frame.text = "..."——后者会把整段塌缩成一个无样式的 run,丢失字体/加粗。 列表项;项目符号让版式继承,别在文本里写字面 •(会双 bullets)。| 主题 | 主色 | 辅色 | 强调 |
|---|---|---|---|
| 午夜高管 | 1E2761 深蓝 | CADCFC 冰蓝 | FFFFFF 白 |
| 森林苔藓 | 2C5F2D 森绿 | 97BC62 苔绿 | F5F5F5 米 |
| 珊瑚能量 | F96167 珊瑚 | F9E795 金 | 2F3C7E 蓝 |
| 暖陶土 | B85042 陶土 | E7E8D1 沙 | A7BEAE 鼠尾草 |
| 海洋渐变 | 065A82 深蓝 | 1C7293 青 | 21295C 午夜 |
| 炭灰极简 | 36454F 炭 | F2F2F2 白 | 212121 黑 |
| 青绿信任 | 028090 青 | 00A896 海沫 | 02C39A 薄荷 |
| 莓果奶油 | 6D2E46 莓 | A26769 灰玫 | ECE2D0 奶油 |
| 鼠尾草静 | 84B59F 鼠尾草 | 69A297 桉 | 50808E 板岩 |
| 樱桃大胆 | 990011 樱桃 | FCF6F5 白 | 2F3C7E 蓝 |
| 元素 | 字号 |
|---|---|
| 页面标题 | 36–44pt 粗 |
| 小节标题 | 20–24pt 粗 |
| 正文 | 14–16pt |
| 注释 | 10–12pt 灰 |
图片、图表、图标或形状。纯文字页会被忘记。 版式选项:两栏(左文右图)、图标+文字行(彩圆里的图标+粗标题+下描述)、2×2/2×3 网格、半出血图(一侧满图+内容叠加)。 数据展示:大数字 callout(60–72pt 大数字+小标签)、对比列(前/后、优/劣)、时间轴/流程(编号步骤+箭头)。
text_frame.margin_left = 0 之类from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
chart_data = CategoryChartData()
chart_data.categories = ['Q1','Q2','Q3','Q4']
chart_data.add_series('营收', (12,19,21,28))
slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED,
Inches(1), Inches(2), Inches(8), Inches(4), chart_data)
chart.has_title、chart.plots[0].has_data_labels = True、chart.series[0].format.fill.solid() 上色,别用默认裸图。chart.has_legend = False。生成第一版总有真实问题(重叠、溢出、错位)。改完只重渲改动的页,复查,停。
内容 QA:用 python-pptx 遍历 slide.shapes 打印每页文本,查缺漏、错序、占位残留(如 "lorem"/"TODO"/"[insert")。
视觉 QA(关键):把 pptx 转图片看每页:
# 用 LibreOffice 转 PDF(沙箱里 soffice 可能挂,必要时用系统安装版) soffice --headless --convert-to pdf deck.pptx pdftoppm -jpeg -r 150 deck.pdf slide
看每页图,重点查:文本溢出/截断(最常见、最显眼)、元素重叠、页脚碰内容、间距<0.3"、边距<0.5"、对齐不一致、低对比文字、模板装饰错位、残留占位内容。
文件 QA:确保 prs.save() 成功、能用 PowerPoint 打开。python-pptx 生成的文件兼容性好;若套了模板,检查模板原始占位是否清理干净。
列结构 → 选色板与母题 → 写 references/pptx_template.py 风格的生成脚本 → 跑出 deck → 转图逐页视觉 QA → 修溢出/重叠/对比 → 存档。