PPTX 创建、编辑和分析
概述
用户可能会要求您创建、编辑或分析 .pptx 文件的内容。.pptx 文件本质上是一个包含 XML 文件和其他资源的 ZIP 归档文件,您可以读取或编辑它们。针对不同的任务,您可以使用不同的工具和工作流程。
读取和分析内容
文本提取
如果您只需要读取演示文稿的文本内容,应将文档转换为 Markdown:
# 将文档转换为 Markdown
python -m markitdown path-to-file.pptx
原始 XML 访问
对于评论、演讲者备注、幻灯片布局、动画、设计元素和复杂格式,您需要原始 XML 访问权限。对于这些功能中的任何一个,您需要解包演示文稿并读取其原始 XML 内容。
解包文件
python ooxml/scripts/unpack.py <office_file> <output_dir>
注意:unpack.py 脚本位于项目根目录下的 skills/pptx/ooxml/scripts/unpack.py。如果该路径下不存在脚本,请使用 find . -name "unpack.py" 来定位它。
关键文件结构
ppt/presentation.xml- 主要演示文稿元数据和幻灯片引用ppt/slides/slide{N}.xml- 各个幻灯片的内容(slide1.xml、slide2.xml 等)ppt/notesSlides/notesSlide{N}.xml- 每张幻灯片的演讲者备注ppt/comments/modernComment_*.xml- 特定幻灯片的评论ppt/slideLayouts/- 幻灯片的布局模板ppt/slideMasters/- 母版幻灯片模板ppt/theme/- 主题和样式信息ppt/media/- 图片和其他媒体文件
版式和颜色提取
当给定要模仿的示例设计时:请先使用以下方法分析演示文稿的版式和颜色:
- 读取主题文件:检查
ppt/theme/theme1.xml以获取颜色(<a:clrScheme>)和字体(<a:fontScheme>) - 抽样幻灯片内容:检查
ppt/slides/slide1.xml以获取实际使用的字体(<a:rPr>)和颜色 - 搜索模式:使用 grep 在所有 XML 文件中查找颜色(
<a:solidFill>、<a:srgbClr>)和字体引用
创建新的 PowerPoint 演示文稿(无需模板)
当从头开始创建新的 PowerPoint 演示文稿时,请使用 html2pptx 工作流程将 HTML 幻灯片转换为具有精确定位的 PowerPoint。
设计原则
关键:在创建任何演示文稿之前,分析内容并选择适当的设计元素:
- 考虑主题:这个演示文稿是关于什么的?它暗示了什么基调、行业或情绪?
- 检查品牌:如果用户提到公司/组织,请考虑其品牌颜色和标识
- 将调色板与内容匹配:选择反映主题的颜色
- 说明您的方法:在编写代码之前解释您的设计选择
要求:
- ✅ 在编写代码之前说明您基于内容的设计方法
- ✅ 仅使用网络安全字体:Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact
- ✅ 通过大小、粗细和颜色创建清晰的视觉层次
- ✅ 确保可读性:强对比度、适当大小的文本、清晰的对齐
- ✅ 保持一致:在幻灯片之间重复模式、间距和视觉语言
调色板选择
创意选色:
- 超越默认:哪些颜色真正符合这个特定主题?避免自动选择。
- 考虑多个角度:主题、行业、情绪、活力水平、目标受众、品牌标识(如果提及)
- 勇于尝试:尝试意想不到的组合——医疗保健演示文稿不必是绿色,金融也不必是海军蓝
- 构建调色板:选择 3-5 种可协同工作的颜色(主色 + 辅助色 + 强调色)
- 确保对比度:文本必须在背景上清晰可读
示例调色板(使用这些来激发创意——选择一个、调整它或创建自己的):
- 经典蓝:深海军蓝 (#1C2833)、石板灰 (#2E4053)、银灰色 (#AAB7B8)、灰白色 (#F4F6F6)
- 蓝绿色与珊瑚色:蓝绿色 (#5EA8A7)、深蓝绿 (#277884)、珊瑚色 (#FE4447)、白色 (#FFFFFF)
- 大胆红:红色 (#C0392B)、亮红色 (#E74C3C)、橙色 (#F39C12)、黄色 (#F1C40F)、绿色 (#2ECC71)
- 温暖胭脂色:浅紫灰 (#A49393)、胭脂色 (#EED6D3)、玫瑰色 (#E8B4B8)、奶油色 (#FAF7F2)
- 勃艮第奢华:勃艮第红 (#5D1D2E)、深红色 (#951233)、铁锈色 (#C15937)、金色 (#997929)
- 深紫与祖母绿:紫色 (#B165FB)、深蓝 (#181B24)、祖母绿 (#40695B)、白色 (#FFFFFF)
- 奶油色与森林绿:奶油色 (#FFE1C7)、森林绿 (#40695B)、白色 (#FCFCFC)
- 粉红与紫色:粉色 (#F8275B)、珊瑚色 (#FF574A)、玫瑰色 (#FF737D)、紫色 (#3D2F68)
- 酸橙绿与李子紫:酸橙绿 (#C5DE82)、李子紫 (#7C3A5F)、珊瑚色 (#FD8C6E)、蓝灰色 (#98ACB5)
- 黑与金:金色 (#BF9A4A)、黑色 (#000000)、奶油色 (#F4F6F6)
- 鼠尾草绿与陶土色:鼠尾草绿 (#87A96B)、陶土色 (#E07A5F)、奶油色 (#F4F1DE)、木炭色 (#2C2C2C)
- 木炭色与红色:木炭色 (#292929)、红色 (#E33737)、浅灰色 (#CCCBCB)
- 活力橙:橙色 (#F96D00)、浅灰色 (#F2F2F2)、木炭色 (#222831)
- 森林绿:黑色 (#191A19)、绿色 (#4E9F3D)、深绿色 (#1E5128)、白色 (#FFFFFF)
- 复古彩虹:紫色 (#722880)、粉色 (#D72D51)、橙色 (#EB5C18)、琥珀色 (#F08800)、金色 (#DEB600)
- 复古大地色:芥末黄 (#E3B448)、鼠尾草绿 (#CBD18F)、森林绿 (#3A6B35)、奶油色 (#F4F1DE)
- 海岸玫瑰:陈年玫瑰色 (#AD7670)、海狸灰 (#B49886)、蛋壳色 (#F3ECDC)、灰绿色 (#BFD5BE)
- 橙色与蓝绿色:浅橙色 (#FC993E)、灰蓝绿色 (#667C6F)、白色 (#FCFCFC)
视觉细节选项
几何图案:
- 对角分割线代替水平线
- 不对称列宽(30/70、40/60、25/75)
- 旋转 90° 或 270° 的文本标题
- 用于图片的圆形/六边形框架
- 角落中的三角形装饰形状
- 用于增加深度的重叠形状
边框与框架处理:
- 仅一侧的粗单色边框(10-20pt)
- 对比色的双线边框
- 角括号代替完整框架
- L 形边框(顶部+左侧或底部+右侧)
- 标题下方的下划线强调(3-5pt 粗)
版式处理:
- 极端大小对比(72pt 标题 vs 11pt 正文)
- 全大写标题,字母间距宽
- 超大显示字体中的编号部分
- 用于数据/统计/技术内容的等宽字体(Courier New)
- 用于密集信息的紧凑字体(Arial Narrow)
- 用于强调的轮廓文本
图表与数据样式:
- 单色图表,关键数据使用单一强调色
- 水平条形图代替垂直条形图
- 点图代替条形图
- 极少的网格线或没有网格线
- 数据标签直接放在元素上(无图例)
- 关键指标的过大数字
布局创新:
- 出血图片带文本叠加
- 侧边栏列(20-30% 宽度)用于导航/上下文
- 模块化网格系统(3×3、4×4 块)
- Z 模式或 F 模式内容流
- 彩色形状上的浮动文本框
- 杂志风格的多列布局
背景处理:
- 占据幻灯片 40-60% 的纯色块
- 渐变填充(仅垂直或对角)
- 分割背景(两种颜色,对角或垂直)
- 边缘到边缘的色带
- 负空间作为设计元素
布局技巧
当创建带有图表或表格的幻灯片时:
- 两列布局(首选):使用全宽的标题,然后在下方放置两列——文本/项目符号在一列,特色内容在另一列。这提供了更好的平衡,并使图表/表格更具可读性。使用具有不等列宽(例如 40%/60% 分割)的 flexbox 来优化每种内容类型的空间。
- 全幻灯片布局:让特色内容(图表/表格)占据整个幻灯片,以获得最大的影响力和可读性
- 切勿垂直堆叠:不要将图表/表格放在单列中的文本下方——这会导致可读性差和布局问题
工作流程
- 必须 - 读取整个文件:从头到尾完整阅读
html2pptx.md。读取此文件时切勿设置任何范围限制。 在继续创建演示文稿之前,请阅读完整的文件内容以了解详细的语法、关键的格式化规则和最佳实践。 - 为每张幻灯片创建一个具有适当尺寸(例如 16:9 为 720pt × 405pt)的 HTML 文件
- 对所有文本内容使用
<p>、<h1>-<h6>、<ul>、<ol> - 对于将添加图表/表格的区域使用
class="placeholder"(为可见性渲染为灰色背景) - 关键:首先使用 Sharp 将渐变和图标栅格化为 PNG 图像,然后在 HTML 中引用
- 布局:对于带有图表/表格/图像的幻灯片,使用全幻灯片布局或两列布局以获得更好的可读性
- 对所有文本内容使用
- 创建并运行一个 JavaScript 文件,使用
html2pptx.js库将 HTML 幻灯片转换为 PowerPoint 并保存演示文稿- 使用
html2pptx()函数处理每个 HTML 文件 - 使用 PptxGenJS API 向占位符区域添加图表和表格
- 使用
pptx.writeFile()保存演示文稿
- 使用
- 视觉验证:生成缩略图并检查布局问题
- 创建缩略图网格:
python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4 - 读取并仔细检查缩略图图像,查看是否有:
- 文本截断:文本被标题栏、形状或幻灯片边缘截断
- 文本重叠:文本与其他文本或形状重叠
- 定位问题:内容过于靠近幻灯片边界或其他元素
- 对比度问题:文本与背景之间对比度不足
- 如果发现问题,调整 HTML 边距/间距/颜色并重新生成演示文稿
- 重复直到所有幻灯片视觉上正确
- 创建缩略图网格:
编辑现有的 PowerPoint 演示文稿
当编辑现有 PowerPoint 演示文稿中的幻灯片时,您需要处理原始的 Office Open XML (OOXML) 格式。这涉及解包 .pptx 文件、编辑 XML 内容并重新打包。
工作流程
- 必须 - 读取整个文件:从头到尾完整阅读
ooxml.md(约 500 行)。读取此文件时切勿设置任何范围限制。 在任何演示文稿编辑之前,阅读完整的文件内容以了解 OOXML 结构和编辑工作流程的详细指导。 - 解包演示文稿:
python ooxml/scripts/unpack.py <office_file> <output_dir> - 编辑 XML 文件(主要是
ppt/slides/slide{N}.xml和相关文件) - 关键:每次编辑后立即验证,并在继续之前修复所有验证错误:
python ooxml/scripts/validate.py <dir> --original <file> - 打包最终演示文稿:
python ooxml/scripts/pack.py <input_directory> <office_file>
创建新的 PowerPoint 演示文稿(使用模板)
当您需要创建遵循现有模板设计的演示文稿时,您需要复制和重新排列模板幻灯片,然后替换占位符上下文。
工作流程
-
提取模板文本并创建视觉缩略图网格:
- 提取文本:
python -m markitdown template.pptx > template-content.md - 读取
template-content.md:阅读整个文件以了解模板演示文稿的内容。切勿设置任何范围限制。 - 创建缩略图网格:
python scripts/thumbnail.py template.pptx - 请参阅创建缩略图网格部分以获取更多详细信息
- 提取文本:
-
分析模板并将清单保存到文件:
- 视觉分析:查看缩略图网格以了解幻灯片布局、设计模式和视觉结构
- 创建并保存模板清单文件
template-inventory.md,包含:# 模板清单分析 **总幻灯片数:[计数]** **重要:幻灯片是 0 索引的(第一张幻灯片 = 0,最后一张 = count-1)** ## [类别名称] - 幻灯片 0:[布局代码(如果有)] - 描述/用途 - 幻灯片 1:[布局代码] - 描述/用途 - 幻灯片 2:[布局代码] - 描述/用途 [... 每张幻灯片必须逐个列出其索引 ...] - 使用缩略图网格:参考视觉缩略图来识别:
- 布局模式(标题幻灯片、内容布局、章节分隔符)
- 图片占位符位置和数量
- 跨幻灯片组的设计一致性
- 视觉层次和结构
- 此清单文件是下一步中选择适当模板所必需的
-
基于模板清单创建演示文稿大纲:
- 从步骤 2 中查看可用模板。
- 为第一张幻灯片选择介绍或标题模板。这应该是第一个模板之一。
- 为其他幻灯片选择安全的、基于文本的布局。
- 关键:将布局结构与实际内容匹配:
- 单列布局:用于统一叙述或单一主题
- 两列布局:仅当您恰好有 2 个不同的项目/概念时使用
- 三列布局:仅当您恰好有 3 个不同的项目/概念时使用
- 图片+文本布局:仅当您有实际图片要插入时使用
- 引用布局:仅用于实际的人物引用(带出处),切勿用于强调
- 切勿使用占位符多于内容的布局
- 如果您有 2 个项目,不要强行放入三列布局
- 如果您有 4 个以上的项目,考虑拆分为多张幻灯片或使用列表格式
- 在选择布局之前,先清点您实际的内容片段
- 验证所选布局中的每个占位符都将填充有意义的內容
- 选择一个代表每个内容部分最佳布局的选项。
- 保存
outline.md,其中包含内容和利用可用设计的模板映射 - 示例模板映射: