ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AI可以生成无AI味的PPT?有这个东西确实可以

AI可以生成无AI味的PPT?有这个东西确实可以

上一篇博客讲了 PPTX 文件本质是个 ZIP 压缩包,AI 操纵 PPT 的底层逻辑跟操纵 Word 一样,都是直接读写里面的 XML。

但跟 Word 那边不一样的是,PPT 的 XML 更复杂,工具链也没 Word 完善。所以直接让 AI 从零生成一套 PPT,大概率会遇到好几个问题:排版乱、溢出、字体不对、调不动。

所以,如果从一开始就有排版等要求,上来就用AI绝对不是个好注意。但如果你不知道如何下手去调整,你不得不接受一个成品一眼AI味的。

那本文就是教你避开上述路线。不让 AI 从零造,而是让它往你自己的模板里填字。

思路很简单。你先在 PowerPoint 里把常用的那几页模板做好,字体、字号、配色、占位符位置全部预设好。然后 AI 要做的事情就只剩下一件:把你准备好的文字,按模板的布局,一页一页填进去。

这样做有几个好处:

第一,模板是你自己做的,排版、字体、配色都是你喜欢的样子。AI 不会乱改。

第二,AI 不用管格式,只管内容。它不需要从零决定标题用什么字号、正文放在哪里,这些模板里已经写死了。

第三,溢出问题容易解决。这其实是关键。在实际安排工作流的时候,给完文字后,一定要让AI帮你提前算好每一页能装多少字,AI 填之前就知道什么时候该拆页,不会等填完了才发现装不下。


先搞清楚你的模板里有什么

我自己常用的模板叫"经典模板.pptx",是一个非常简单的模板。总共就 6 页示例页,覆盖了 5 种布局类型:

布局类型用途里面有什么
标题幻灯片封面一个居中的主标题占位符 + 一个副标题占位符
章节页章节分隔两个并排的文本框,左窄右宽(左框放编号 01、02,右框放章节标题)
结束页致谢封底一个居中的文本框
标题和内容正文页一个标题横条 + 一个大的内容区
全黑另一种正文页上下两个文本框(上标题下内容)

每种布局里的文本框,专业术语叫占位符(placeholder)。你打开 PowerPoint 新建一页幻灯片的时候,看到的那些虚线框就是占位符。

每个占位符有几个关键属性:

  • 位置和尺寸:用 EMU 单位记录(1/914400 英寸),python-pptx 读出来是整数
  • 占位符类型(ph_type):用数字区分,TITLE(标题横条)是 1,BODY(正文/居中框)是 2,CENTER_TITLE(封面主标题)是 3,SUBTITLE(封面副标题)是 4,OBJECT(正文页内容区)是 7
  • 默认字体和字号:如果母版里预设了,占位符自动继承;如果没预设,python-pptx 不显式指定的话也是继承

为什么要搞清楚占位符的类型和位置?因为 AI 填字的时候,就是靠这些信息来判断"这一块是封面主标题"“这一块是章节页右框”"这一块是正文页内容区"的。

我之前跑过一个探查脚本(inspect_template.py),把经典模板.pptx 里每种布局的占位符全部枚举出来了。结果长这样:

=== 经典模板.pptx 布局探查 === 布局:标题幻灯片(封面) ph_type=3(CENTER_TITLE):宽 10" 高 2.6",位于 (0, 0) → 主标题 ph_type=4(SUBTITLE):宽 10" 高 1.3",位于 (0, 2.8") → 副标题 布局:章节页 BODY 左框:宽 1.9" 高 1.1",位于 (0.5", 3.2") → 编号 01、02 BODY 右框:宽 6.2" 高 1.0",位于 (3.2", 3.2") → 章节标题 (注意:章节页的两个框都是 BODY 类型,得靠宽度区分) 布局:标题和内容(正文页) ph_type=1(TITLE):宽 11.5" 高 0.8",位于 (0, 0) → 标题横条 ph_type=7(OBJECT):宽 11.5" 高 4.8",位于 (0, 1.0") → 内容区

这段探查结果非常有用。它告诉我每个占位符在屏幕上的精确位置和尺寸,这意味着我可以提前算好每个框能装多少字,不用等 AI 填完才发现溢出。


怎么算一页能装多少字

这个公式是我自己摸出来的,不算精确但足够用:

一行字数 ≈ 占位符宽度(英寸) × 72 / 字号(pt) 总容量 ≈ 一行字数 × 最大行数

这里 72 是 1 英寸等于多少 pt(点),是排版里的基本换算单位。

比如经典模板的正文页内容区,宽度 11.5",正文字号我定的是 24pt:

一行字数 ≈ 11.5 × 72 / 24 = 34.5 ≈ 29 字(保守一点) 总容量 ≈ 29 字/行 × 8 行 = 232 字

为什么是 8 行?因为内容区高度 4.8",24pt 字号行高约 30pt(行高系数 1.25),换算一下就是约 8 行。

算出来之后,AI 填字之前就有了硬约束:每页正文不超 232 字、不超 8 行。给它的素材如果超过了,提前拆成两页。

我把所有位置的容量都算了一遍,汇总成一张表:

位置字号一行字数总容量
封面主标题48pt22 字4 行 = 88 字
封面副标题32pt29 字2 行 = 58 字
章节页编号48pt4 字纯数字 01-99 没问题
章节页标题48pt14 字≤ 4 字完全够
正文页标题横条40pt25 字1 行
正文页内容区24pt29 字8 行 = 232 字
PPT 里的表格14pt—约 12 行

有了这张表,AI 填字就像带着标尺干活。


字体字号谁来管

模板里的占位符默认是继承母版的字体和字号。我实操的时候索性放弃了继承,所有字号手动指定。

为什么不靠母版?因为 python-pptx 的高级 API 只看得到当前文本框上显式写的字体属性,母版预设值得扒底层 XML 才能拿到。扒 XML 太麻烦,而且就算拿到了,也不确定母版里写的是什么字体。

所以我直接在代码里硬写死:

  • 封面主标题:48pt,黑体
  • 封面副标题:32pt,黑体
  • 章节页左框编号:48pt,黑体,加粗
  • 章节页右框章节标题:48pt,黑体,加粗
  • 正文页标题横条:40pt,黑体
  • 正文页内容:24pt,黑体,行距 1.25,段前段后各 6pt
  • PPT 里的表格:14pt,宋体

这样做的好处是字体字号完全可控,不管模板的母版里预设了啥,python-pptx 都按我指定的值写进去。坏处是模板不能随便换,换了新模板得重新探查、重新算容量。但我平时就用一个模板,所以没问题。

所以,如果按照上述流程操作,你会发现你的AI能够迅速的帮你在ppt里面填完字,而不会出现排版乱、溢出、字体不对、调不动的问题。而且当你拿给别人看,别人也看不出来任何AI的痕迹。


总结

请预制一个ppt模板。然后把模版告诉给AI。接着让AI使用python-pptx为你填写字。最后你将得到一个无AI痕迹的ppt。

返回列表