PPT 布局质量迭代:从 57 个问题到零缺陷
在生成一份 10 页的算电协同投资报告 PPT 时,第一版发现了 57 个布局问题——主要是文本溢出和元素重叠。经过三轮迭代,全部清零。
这篇文章记录根因分析和修复方法,供后续自动化生成参考。
典型问题根因
| 问题 | 根因 | 修复方式 |
|---|---|---|
| Card item 垂直溢出 | 文字框高度硬编码 0.5",单行 12pt 只需 0.17" | 改为 0.35" |
| 4-card 右边缘溢出 | 硬编码 if/elif 宽度,4 张时计算不准 | 动态计算:_calc_grid(n, SW) |
| Timeline 标签重叠 | date+title+desc 同侧同 offset 堆叠 | 奇偶交错:even 在上、odd 在下 |
| 页码被 bottom bar 覆盖 | 底部文字框 12.0" 过宽 | 改为 11.0" |
| 多方向多子项溢出 | vertical bullet 布局容量不够 | 改用 2×2 flex_cards |
系统化修复原则
- 抽象计算逻辑:将宽度、高度、间距的计算从硬编码抽离为函数,消除单点 bug
- 统一间距系统:使用 SPACING 常量字典,不再各处散落 magic number
- 方向感知布局:不同 slide layout 方向(竖向/横向)分别处理,不共用同一套偏移逻辑
- 对折线处理:文字换行后行数增加→高度随之增加,而非固定高度截断
自动化工具化
这些经验被封装为一个独立的 PPT 质量审查工具(python-pptx 实现),每次生成后自动检查:
- 文本是否溢出容器
- 元素是否相互重叠
- 对齐是否一致
- 间距是否在合理范围内
从此,每次生成的 PPT 不再需要人工逐页检查布局问题。