夜雨聆风学习资料网

ARTICLE · 1351134

不装Office也能批量做PPT python-pptx实测

不装Office也能批量做PPT python-pptx实测

我前两天刚在公众号里把 PDF 三件套(写、读、转图)拆完,后台就有读者追着问:那做 PPT 呢。我做周报、做活动封面,总不能每次都开 PowerPoint 拖两个小时吧。

我是那种能不手动就不手动的人。所以昨晚我在 Windows 10 上开了一个干净的 Python 3.10 环境,把 python-pptx 从头到尾真装真跑了一遍。它不是什么新东西,GitHub 上开源、MIT 许可,但很多人只听过名字,没真正在本地跑通过。我这篇就把跑通之后能干什么、怎么装、踩了哪些坑,一次性讲透。

先说它能干什么。它是一个纯 Python 的 PPT 生成引擎,不依赖你本机装没装 Microsoft Office。你给它几行代码,它就吐出一个 .pptx 文件。写周报、做课件、批量出几十张活动封面、甚至在服务器上无人值守地自动产出汇报 slides,都能干。最关键是本地跑、断网也照常工作,不调任何外部接口,不烧任何云端额度。你手头那些要发给客户的稿子,全程不出本机。

装只一行命令:pip install python-pptx。我盯着安装过程记了数,从敲回车到装完用了 6.75 秒,装的是 v1.0.2。全程没让我填任何 key,也没弹登录窗。它顺带拉了 lxml、Pillow、XlsxWriter 这几个依赖,算下来净增 5 个包、27.4MB,全落在 F 盘的一次性环境里,我这台机器的 C 盘一个字节都没写。这点对硬盘常年飘红的人特别友好。

真跑起来什么感觉。我写了段脚本,生成一份 4 页的演示稿:一页标题、一页中文要点、一页插了一张图、还塞了张柱状图。建这 4 页花了 0.063 秒,存盘 0.011 秒,文件 39KB,再读回来,4 页一个不少。全程纯 CPU,不联网。你要批量出一百份不同数据的周报,也就是循环跑一百次的事,几分钟搞定。

但真跑下来,我连踩了四个坑,每个都是看文档看不出来的,得亲手撞上去才知道。

第一个坑,默认是 4:3,不是现在谁都在用的 16:9。我第一次生成完,拿到宽屏上一放,两边全是黑边,才发现直接 Presentation() 新建的幻灯片,宽高默认是 10 乘 7.5 英寸,比例 1.3333,是老式 4:3。你要 16:9,必须手动把 slide_width 设成 13.333 英寸、slide_height 设成 7.5 英寸。这一步不写,前面全白做。

第二个坑,中文只设 font.name 是没用的。python-pptx 把拉丁字体和东亚字体分开存储,你写 run.font.name = "微软雅黑",它只改了拉丁字符那部分,中文用的是模板里默认的东亚字体,跟你指定的那套根本不是一套,排版会对不齐、风格会乱。正确做法是把 run 的 XML 节点 rPr 里面的 a:ea 也设成同一个字体,中文才真正听你的。这一条卡了我好一会儿,文档里说得轻描淡写,实际不这么干就是不行。

第三个坑,它所有尺寸用的单位叫 EMU,914400 才等于 1 英寸。Inches 和 Pt 只是给你包了一层皮。我一开始图省事,手写坐标少乘了一个倍数,结果文本框直接飞到了页面外面,导出之后满屏空白。凡是定位、加图片、加图表,老老实实走 Inches/Pt,别裸写像素。

第四个坑,图表的数据其实藏在一个内嵌的 xlsx 里。我加柱状图的时候才发现,这库硬多依赖了一个 XlsxWriter,原因就是图表的那些数字,不是直接写进 pptx 文件,而是塞了一份内嵌的 Excel 工作簿进去。你以后想改图表数据,得动这份内嵌的 xlsx,不是改几行代码里的数字就完事。

正确用法其实就几行。新建之后先设好 16:9 的宽高,拿空白页布局,写中文的时候记得对每一段 run 调一遍东亚字体设置,插图片给真实文件路径,加图表就传一个 CategoryChartData 进去,save 一下就出文件。把上面四个坑认全了,批量做 PPT 就是几行代码的事,比开 PowerPoint 拖快得多。

谁该用。要写周报、做课件、自动产出汇报 slides 的人;要批量生成几十张带图带字的活动封面的人;想在服务器或者 CI 里无人值守产出 PPT 的人;还有在意隐私的人,稿子本地生成,不出本机。

谁别碰。想精细编辑别人发来的复杂 PPT 的人,它能读能改,但占位符和形状 ID 很绕,复杂版式还是开 PowerPoint 靠谱。只设 font.name 不设东亚字体就交中文的人,排版会乱,换台没装对应字体的机器直接变方块。手写像素坐标不做 EMU 换算的人,文本框飞出页面。想做复杂动画和切换特效的人,它只生成静态 slides,动画不在它的活儿里。

它的价值就一句话:把"开 PowerPoint 手动拖"变成几行代码。免费、本地、不出本机,配合前面讲过的 PDF 三件套,你日常工作里和文档打交道的大头活儿基本齐活了。

我是弋然小记,在公众号里持续拆能真装真跑的开源工具。拿不准就找你手头那份最烦人的周报,写十行代码试一次,五分钟就能判断它对你有没有用。想看哪类工具,留言告诉我,我挨个装给你看。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料