用途
pptx 用于处理 .pptx 演示文稿文件,覆盖创建、编辑和分析三类任务。.pptx 文件本质上是一个 ZIP 压缩包,内部包含 XML 文件和其他资源,可通过读取或编辑这些内容来完成操作。
主要能力
读取与分析内容
- 文本提取:如需读取演示文稿的文本内容,可将文档转换为 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 跨所有 XML 文件搜索颜色(<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 等,可据此选择、改编或自行创作。
视觉细节选项包括几何图案(斜向分隔、非对称栏宽、旋转文字标题、圆形/六边形图框、三角强调形状、重叠形状)、边框处理(单边粗边框、双线对比色边框、角括号、L 形边框、标题下划线)、排版处理(极端字号对比、全大写宽字距、超大展示字号编号、等宽字体用于数据/统计/技术内容、窄体字体用于密集信息、描边文字)、图表与数据样式(单色图表加单一强调色、水平条形图、点图、最少或无网格线、数据标签直接标注、关键指标超大数字)、布局创新(满版图像加文字叠加、侧栏栏、模块化网格、Z 型或 F 型内容流、浮动文本框、杂志式多栏布局)、背景处理(纯色块、渐变填充、分割背景、通栏色带、负空间)。
布局提示:含图表或表格时建议使用两栏布局(跨整行标题 + 下方两栏,一栏文字/项目符号,另一栏放图表或表格),也可使用整页布局让图表或表格占满幻灯片;不要把图表或表格垂直堆叠在文字下方。
工作流:必须先完整阅读 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() 保存;进行视觉验证,生成缩略图检查布局问题(文字被裁切、文字重叠、位置问题、对比度问题),发现问题则调整 HTML 的边距/间距/颜色并重新生成,直到所有幻灯片视觉正确。
编辑现有演示文稿
编辑现有演示文稿需处理原始 Office Open XML(OOXML)格式:解压 .pptx、编辑 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 起始索引,按类别逐张列出每张幻灯片。使用缩略图网格识别版式模式、图像占位位置与数量、设计一致性、视觉层级与结构。
基于模板清单创建演示文稿大纲:第一张幻灯片选用介绍或标题模板;其他幻灯片选用安全的、基于文本的版式;版式结构必须与实际内容匹配(单栏用于统一叙述或单一主题;两栏仅在恰好有两个不同条目/概念时使用;三栏仅在恰好有三个不同条目/概念时使用;图像 + 文本版式仅在有实际图像可插入时使用;引用版式仅用于真实的人物引语并附署名,不用于强调);版式中的占位符不要多于实际内容;内容超过 4 项可考虑拆成多张幻灯片或使用列表格式;选择版式前先清点实际内容数量;确认所选版式的每个占位符都将填入有意义的内容。保存 outline.md,包含内容与模板映射。模板映射使用 0 起始索引,示例:template_mapping = [0, 34, 34, 50, 54],并需验证索引在范围内。
用 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,并完整阅读 text-inventory.json。其结构按 "slide-0"、"slide-1" 等组织幻灯片,按视觉位置(从上到下、从左到右)以 "shape-0"、"shape-1" 等组织形状;占位符类型可为 TITLE、CENTER_TITLE、SUBTITLE、BODY、OBJECT 或 null;会从版式占位符提取 default_font_size;SLIDE_NUMBER 占位符类型的形状会被自动排除;当 bullet 为 true 时始终包含 level;space_before、space_after、line_spacing 以磅为单位(仅在设置时包含);颜色为 RGB(如 "FF0000")。
适用场景
适用于需要创建演示文稿、修改或分析 .pptx 文件的场景,例如从零制作演示文稿、沿用模板生成新演示文稿、读取演示文稿文本内容、访问批注与备注等原始 XML 内容、模仿示例设计的排版与颜色。
限制
资料未提供该技能的收费、价格、平台支持范围或效果保证等信息。