用途
该技能面向需要处理 .pptx 演示文稿的场景,支持三类任务:创建新演示文稿、修改现有演示文稿、分析演示文稿内容。.pptx 文件本质上是 ZIP 压缩包,内含 XML 文件和其他资源,可直接读取或编辑。
主要能力
读取与分析内容
- 文本提取:若只需读取文本内容,可将文档转换为 Markdown:
python -m markitdown path-to-file.pptx
- 原始 XML 访问:处理批注、演讲者备注、幻灯片版式、动画、设计元素和复杂格式时,需要解包演示文稿并读取原始 XML。解包命令:
python ooxml/scripts/unpack.py <office_file> <output_dir>
脚本位于 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>)与字体引用。
从零创建演示文稿
无模板时使用 html2pptx 工作流,将 HTML 幻灯片转换为 PowerPoint 并精确定位。
设计原则:创建前先分析内容并选择合适设计元素,考虑主题、行业、氛围;若用户提到公司/组织,考虑其品牌色与识别;配色需匹配内容;写代码前先说明设计思路。要求:仅使用 Web 安全字体(Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact);通过大小、粗细、颜色建立清晰视觉层级;确保可读性(强对比、合适字号、整洁对齐);跨幻灯片保持一致。
配色选择:避免默认套路,从主题、行业、氛围、能量、目标受众、品牌识别多角度考虑,选 3-5 种协调颜色(主色+辅助色+强调色),确保对比度。资料给出多组示例配色(如 Classic Blue、Teal & Coral、Bold Red、Warm Blush、Burgundy Luxury、Deep Purple & Emerald、Cream & Forest Green、Pink & Purple、Lime & Plum、Black & Gold、Sage & Terracotta、Charcoal & Red、Vibrant Orange、Forest Green、Retro Rainbow、Vintage Earthy、Coastal Rose、Orange & Turquoise),可选用、改编或自创。
视觉细节选项涵盖几何图案(对角分隔、非对称列宽、旋转文字、圆形/六边形图片框、三角强调、重叠形状)、边框与框架处理、排版处理(极端字号对比、全大写宽字距、超大编号、等宽字体、窄体字体、描边文字)、图表与数据样式(单色图表+强调色、水平条形图、点图、极简网格、直接数据标签、超大关键指标)、布局创新(全出血图片+文字叠加、侧栏、模块化网格、Z/F 型流、浮动文本框、杂志式多栏)、背景处理(色块、渐变、分割背景、通栏色带、留白)。
布局提示:含图表或表格时优先两栏布局(全宽标题+下方两栏,文字/项目符号一栏、重点内容另一栏,可用 flexbox 非等宽如 40%/60%);或全幻灯片布局;切勿垂直堆叠(不要把图表/表格放在文字下方单栏)。
工作流:必须完整阅读 references/html2pptx.md(不设范围限制);为每页创建合适尺寸 HTML(如 16:9 用 720pt × 405pt);文本用 <p>、<h1>-<h6>、<ul>、<ol>;图表/表格区域用 class="placeholder"(灰色背景);渐变与图标先用 Sharp 栅格化为 PNG 再引用;用 html2pptx.js 库编写并运行 JavaScript 转换,用 html2pptx() 处理每个 HTML,用 PptxGenJS API 向占位区添加图表与表格,用 pptx.writeFile() 保存;视觉校验:生成缩略图网格 python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4,检查文字截断、重叠、定位、对比度问题,调整后重新生成直至正确。
编辑现有演示文稿
需处理原始 Office Open XML(OOXML)格式:解包、编辑 XML、重新打包。工作流:必须完整阅读 references/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 含内容与模板映射(示例 template_mapping 数组,注意索引范围);用 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、位置尺寸(英寸)、段落文本及可选属性(bullet、level、alignment、space_before、space_after、line_spacing、font_name、font_size、bold、italic、underline、color);幻灯片命名为 slide-0 等,形状按视觉位置排序,占位类型含 TITLE、CENTER_TITLE、SUBTITLE、BODY、OBJECT 或 null,SLIDE_NUMBER 形状自动排除。
适用场景
需要生成、修改或分析 .pptx 演示文稿的各类任务,包括从零设计、套用既有模板、以及深入编辑 XML 层面的批注、备注、版式与动画等。
限制
资料未提供该技能的收费、价格、平台支持范围或效果保证等信息。