Skip to content

PPTX Skill 详解

PowerPoint 演示文稿的创建、编辑和分析

基本信息

属性
名称pptx
类别文档处理
输出格式.pptx
许可证专有(仅源码可见)
yaml
name: pptx
description: "Presentation creation, editing, and analysis. When Claude
needs to work with presentations (.pptx files) for: (1) Creating new
presentations, (2) Modifying or editing content, (3) Working with layouts,
(4) Adding comments or speaker notes, or any other presentation tasks"

1. 核心概念

1.1 PPTX 文件本质

通俗比喻:与 DOCX 类似,.pptx 文件也是一个 ZIP 压缩包,包含 XML 文件和其他资源(图片、媒体等)。

1.2 关键文件结构

文件路径内容
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/图片和媒体文件

2. 读取和分析内容

2.1 文本提取

bash
# 使用 markitdown 转换为 Markdown
python -m markitdown path-to-file.pptx

2.2 原始 XML 访问

需要 XML 访问的场景:批注、演讲者备注、幻灯片布局、动画、设计元素、复杂格式。

bash
# 解包文件
python ooxml/scripts/unpack.py <office_file> <output_dir>

2.3 提取排版和颜色

当需要模仿现有设计时:

markdown
1. **读取主题文件**
   检查 `ppt/theme/theme1.xml`
   - 颜色:`<a:clrScheme>`
   - 字体:`<a:fontScheme>`

2. **检查幻灯片内容**
   检查 `ppt/slides/slide1.xml`
   - 字体使用:`<a:rPr>`
   - 颜色引用

3. **搜索模式**
   使用 grep 查找颜色和字体引用:
   - `<a:solidFill>`
   - `<a:srgbClr>`

3. 创建新演示文稿(无模板)

3.1 设计原则

markdown
**关键**:创建演示文稿前,必须分析内容并选择合适的设计元素:

✓ 考虑主题内容 - 什么主题?什么基调?
✓ 检查品牌需求 - 是否有公司品牌色?
✓ 匹配调色板与内容
✓ 说明设计方法 - 在编码前解释设计选择

3.2 字体要求

只使用网页安全字体

  • Arial, Helvetica
  • Times New Roman, Georgia
  • Courier New, Verdana
  • Tahoma, Trebuchet MS
  • Impact

3.3 配色方案示例

css
/* 经典蓝 */
--primary: #1C2833;
--secondary: #2E4053;
--accent: #AAB7B8;
--background: #F4F6F6;

/* 青橙珊瑚 */
--primary: #5EA8A7;
--secondary: #277884;
--accent: #FE4447;
--background: #FFFFFF;

/* 科技创新 */
--primary: #B165FB;
--secondary: #181B24;
--accent: #40695B;
--background: #FFFFFF;

/* 黑金 */
--primary: #BF9A4A;
--secondary: #000000;
--accent: #F4F6F6;

3.4 html2pptx 工作流

markdown
1. **必须完整阅读** html2pptx.md 文件
   获取详细语法和最佳实践

2. 为每张幻灯片创建 HTML 文件
   - 使用正确的尺寸(如 720pt × 405pt,16:9)
   - 使用 `<p>`, `<h1>`-`<h6>`, `<ul>`, `<ol>` 处理文本
   - 使用 `class="placeholder"` 标记图表/表格位置

3. 使用 html2pptx.js 库转换
   处理每个 HTML 文件,添加图表和表格,保存演示文稿

4. **视觉验证**
   python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4
   检查缩略图是否有布局问题

4. 编辑现有演示文稿

4.1 OOXML 编辑工作流

markdown
1. **必须完整阅读** ooxml.md 文件(~500行)
   获取 OOXML 结构和编辑指南

2. 解包演示文稿
   python ooxml/scripts/unpack.py <file.pptx> <output_dir>

3. 编辑 XML 文件
   主要是 ppt/slides/slide{N}.xml

4. **关键**:每次编辑后立即验证
   python ooxml/scripts/validate.py <dir> --original <file>

5. 打包最终演示文稿
   python ooxml/scripts/pack.py <input_dir> <file.pptx>

5. 使用模板创建

5.1 工作流概览

mermaid
graph LR
    A[提取模板内容] --> B[分析并创建清单]
    B --> C[创建大纲]
    C --> D[重排幻灯片]
    D --> E[提取文本清单]
    E --> F[生成替换文本]
    F --> G[应用替换]

5.2 详细步骤

markdown
**1. 提取模板文本并创建缩略图**
python -m markitdown template.pptx > template-content.md
python scripts/thumbnail.py template.pptx

**2. 分析模板并保存清单**
创建 template-inventory.md 文件,列出所有幻灯片及其用途
注意:幻灯片是 0 索引的(第一张 = 0)

**3. 创建演示文稿大纲**
基于模板清单选择合适的布局
匹配布局结构与实际内容

**4. 使用 rearrange.py 重排幻灯片**
python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52

**5. 提取所有文本**
python scripts/inventory.py working.pptx text-inventory.json

**6. 生成替换文本**
创建 replacement-text.json 文件

**7. 应用替换**
python scripts/replace.py working.pptx replacement-text.json output.pptx

5.3 替换 JSON 示例

json
{
  "slide-0": {
    "shape-0": {
      "paragraphs": [
        {
          "text": "New presentation title",
          "alignment": "CENTER",
          "bold": true
        }
      ]
    }
  },
  "slide-1": {
    "shape-0": {
      "paragraphs": [
        {"text": "Section Header", "bold": true},
        {"text": "First bullet point", "bullet": true, "level": 0},
        {"text": "Second bullet point", "bullet": true, "level": 0}
      ]
    }
  }
}

6. 创建缩略图网格

bash
# 基本用法
python scripts/thumbnail.py presentation.pptx

# 自定义输出路径
python scripts/thumbnail.py template.pptx my-grid

# 调整列数
python scripts/thumbnail.py template.pptx analysis --cols 4

特性

  • 默认:5 列,每网格最多 30 张幻灯片(5×6)
  • 列数范围:3-6
  • 幻灯片是 0 索引的

7. 幻灯片转图片

bash
# 1. PPTX 转 PDF
soffice --headless --convert-to pdf template.pptx

# 2. PDF 转 JPEG
pdftoppm -jpeg -r 150 template.pdf slide
# 生成:slide-1.jpg, slide-2.jpg 等

# 指定页面范围
pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide

8. 布局技巧

8.1 图表/表格布局

markdown
**两列布局(推荐)**
- 标题占满宽度
- 下方两列:一列文字,一列图表/表格
- 使用 flexbox 设置不等宽(如 40%/60%)

**全幻灯片布局**
- 让图表/表格占据整张幻灯片
- 最大化可读性

**避免**
✗ 不要垂直堆叠(文字在上,图表在下)
✗ 这会导致可读性问题

8.2 视觉细节选项

markdown
**几何图案**
- 对角线分隔
- 不对称列宽
- 旋转文字标题
- 圆形/六边形图片框

**边框处理**
- 单边粗边框
- 双线边框
- 角括号
- L 形边框

**排版处理**
- 极端尺寸对比(72pt 标题 vs 11pt 正文)
- 全大写标题 + 宽字距
- 等宽字体用于数据

9. 依赖项

工具安装命令用途
markitdownpip install "markitdown[pptx]"文本提取
pptxgenjsnpm install -g pptxgenjs创建演示文稿
playwrightnpm install -g playwrightHTML 渲染
sharpnpm install -g sharpSVG 光栅化
LibreOfficesudo apt-get install libreofficePDF 转换
Popplersudo apt-get install poppler-utilsPDF 转图片
defusedxmlpip install defusedxml安全 XML 解析

10. 使用示例

10.1 触发方式

"帮我创建一个演示文稿"
"分析这个 PPT 的结构"
"使用这个模板创建新幻灯片"
"create a presentation about AI"
"edit this PowerPoint file"

11. 本节小结

要点说明
文件本质PPTX = ZIP 压缩的 XML
无模板创建html2pptx 工作流
模板创建rearrange + inventory + replace
编辑现有OOXML 编辑 + 验证
设计原则分析内容,选择合适的配色和布局

返回:Skills 目录

基于 MIT 许可证发布。内容版权归作者所有。