用途
pptx 用于处理演示文稿(.pptx 文件)相关任务,包括:创建新演示文稿、修改或编辑内容、处理版式、添加批注或演讲者备注,以及其他任何演示文稿任务。用户可能要求创建、编辑或分析 .pptx 文件内容。.pptx 文件本质上是包含 XML 文件和其他资源的 ZIP 压缩包,可以读取或编辑。不同任务有不同工具和工作流程。
主要内容与能力
读取和分析内容
文本提取:若只需读取演示文稿文本内容,可将其转换为 markdown:
python -m markitdown path-to-file.pptx
原始 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(单张幻灯片内容)、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 搜索颜色(<a:solidFill>、<a:srgbClr>)和字体引用。
创建新 PowerPoint 演示文稿(不使用模板)
使用 html2pptx 工作流将 HTML 幻灯片转换为精确定位的 PowerPoint。
设计原则:创建前分析内容并选择设计元素,考虑主题、品牌、配色与内容的匹配,并在写代码前说明设计方法。要求:先说明基于内容的设计方法;仅使用网页安全字体(Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact);通过大小、粗细和颜色建立清晰视觉层次;确保可读性与一致性。
调色板选择:根据主题、行业、情绪、受众、品牌等角度创造性地选择 3-5 种配合良好的颜色(主色+辅助色+强调色),并确保文本与背景对比清晰。资料中提供了多组示例调色板(如经典蓝、青绿与珊瑚、大胆红色、暖腮红、酒红奢华、深紫与翡翠、奶油与森林绿、粉色与紫色、青柠与梅色、黑与金、鼠尾草与赤陶、炭灰与红、活力橙、森林绿、复古彩虹、复古大地、海岸玫瑰、橙与青绿)用于激发创意。
视觉细节选项涵盖几何图案、边框处理、排版处理、图表与数据样式、布局创新、背景处理等(如对角线分隔、不对称列宽、粗单色边框、极端大小对比、单色图表配强调色、满版图片带文本叠加、分割背景等)。
布局提示:创建带图表或表格的幻灯片时推荐两栏布局(跨全宽标题+下方两栏,使用不等列宽 flexbox 如 40%/60%)或全幻灯片布局;切勿垂直堆叠(不要将图表/表格放在单列文本下方)。
工作流:
- 必须完整阅读 html2pptx.md 全文(不设范围限制)。
- 为每张幻灯片创建正确尺寸 HTML(如 16:9 为 720pt × 405pt),使用 <p>、<h1>-<h6>、<ul>、<ol> 处理文本,对图表/表格区域用 class="placeholder"。
- 关键:先使用 Sharp 将渐变和图标光栅化为 PNG,再在 HTML 中引用。
- 创建并运行使用 html2pptx.js 的 JavaScript 文件,用 html2pptx() 处理每个 HTML,用 PptxGenJS API 添加图表和表格到占位符,用 pptx.writeFile() 保存。
- 视觉验证:生成缩略图网格并检查布局问题(文本截断、重叠、定位问题、对比不足),调整后重复直到正确。
编辑现有 PowerPoint 演示文稿
需使用原始 Office Open XML(OOXML)格式:解压、编辑 XML、重新打包。
工作流:
- 必须完整阅读 ooxml.md(约 500 行)全文。
- 解压:
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>
使用模板创建新演示文稿
当需要遵循现有模板设计时,复制和重新排列模板幻灯片,然后替换占位符内容。
工作流:
- 提取模板文本并创建可视化缩略图网格:
python -m markitdown template.pptx > template-content.md,阅读该文件全文,并运行python scripts/thumbnail.py template.pptx。 - 分析模板并将清单保存到 template-inventory.md(含总幻灯片数、从 0 开始索引、每张幻灯片单独列出索引与用途)。
- 根据清单创建演示文稿大纲,将版式结构与实际内容匹配(单列用于统一叙述、两列仅用于正好 2 个项目、三列仅用于正好 3 个项目、图片+文本仅在有实际图片时、引用版式仅用于真实引用),保存 outline.md 和模板映射。
- 使用 rearrange.py 复制、重排和删除幻灯片:
python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52(索引从 0 开始,同一索引可重复以复制)。 - 使用 inventory.py 提取所有文本:
python scripts/inventory.py working.pptx text-inventory.json,阅读该 JSON 全文了解所有形状及属性(含 placeholder_type、位置尺寸、paragraphs 中可选的 bullet、level、alignment、间距、字体、颜色等)。 - 生成替换文本并保存到 JSON(字段为 "paragraphs",未提供该字段的形状将自动清除文本;带项目符号段落自动左对齐,不要在文本中包含项目符号符号)。
- 使用 replace.py 应用替换:
python scripts/replace.py working.pptx replacement-text.json output.pptx。脚本会先提取清单、验证所有形状存在、清除文本、仅对定义 "paragraphs" 的形状应用新文本,并保留格式。
辅助工具
创建缩略图网格:python scripts/thumbnail.py template.pptx [output_prefix],默认 5 列、每网格最多 30 张幻灯片,可用 --cols 调整(3-6,对应每网格 12/20/30/42 张),幻灯片从 0 开始索引。用例包括模板分析、内容审查、导航参考、质量检查。
将幻灯片转换为图片(两步):先 soffice --headless --convert-to pdf template.pptx,再 pdftoppm -jpeg -r 150 template.pdf slide(生成 slide-1.jpg 等)。支持 -r 设置分辨率、-jpeg/-png、-f N 起始页、-l N 结束页等选项。
代码风格指南
生成 PPTX 操作代码时:编写简洁代码;避免冗长变量名和冗余操作;避免不必要的 print 语句。
依赖项
必需的依赖项(应已安装):markitdown(pip install "markitdown[pptx]",从演示文稿提取文本)、pptxgenjs(npm install -g pptxgenjs,通过 html2pptx 创建演示文稿)、playwright(npm install -g playwright,HTML 渲染)、react-icons(npm install -g react-icons react react-dom,图标)、sharp(npm install -g sharp,SVG 光栅化和图片处理)、LibreOffice(sudo apt-get install libreoffice,PDF 转换)、Poppler(sudo apt-get install poppler-utils,pdftoppm 将 PDF 转图片)、defusedxml(pip install defusedxml,安全的 XML 解析)。
适用场景
适用于需要创建、修改、分析 .pptx 演示文稿的场景,包括无模板新建、编辑现有文件、基于模板新建,以及文本提取、版式颜色分析、缩略图与图片生成等。
限制
资料未提供关于收费、价格、平台兼容性或具体效果的信息;部分脚本路径与运行环境依赖需按上述说明定位与安装。