PPTX Skill 是一个 PowerPoint 转换技能,主要用于将 HTML 幻灯片转换为 PowerPoint 演示文稿文件,并支持对 PPTX 的编辑与缩略图生成。
一、用途 当需要生成 PPTX、编辑 PPTX,或为演示文稿创建缩略图时,可使用该技能。其核心场景是将 HTML 幻灯片转换成可交付的 PPTX 文件。
二、主要能力
- 新建演示文稿(HTML → PPTX):将 HTML 幻灯片文件转换为 PowerPoint 文件。
- 编辑现有演示文稿:修改 PPTX 文件内容。
- 缩略图生成:为演示文稿生成预览图。
三、核心工作流(HTML → PPTX)
- 准备 HTML 幻灯片:在 slides/ 目录中确认 HTML 文件,并验证每个文件是否为 720pt × 405pt(16:9)规格。
- 运行 html2pptx.js: node .claude/skills/pptx-skill/scripts/html2pptx.js
- 验证结果:检查生成的 PPTX 文件,并通过缩略图进行视觉验证。
四、脚本使用方式
-
html2pptx.js:将 HTML 文件转换为 PPTX。 import { html2pptx } from './.claude/skills/pptx-skill/scripts/html2pptx.js'; import PptxGenJS from 'pptxgenjs'; const pres = new PptxGenJS(); pres.layout = 'LAYOUT_WIDE'; // 16:9 await html2pptx('slides/slide-01.html', pres); await html2pptx('slides/slide-02.html', pres); await pres.writeFile({ fileName: 'presentation.pptx' });
-
thumbnail.py:生成演示文稿缩略图网格。 python .claude/skills/pptx-skill/scripts/thumbnail.py presentation.pptx output-thumbnail 选项:--cols N(列数,默认 5,范围 3-6)、--outline-placeholders(显示占位符区域)。
-
pack.py / unpack.py:PPTX 文件打包/解包。 解包:python .claude/skills/pptx-skill/ooxml/scripts/unpack.py presentation.pptx output_dir 打包:python .claude/skills/pptx-skill/ooxml/scripts/pack.py input_dir presentation.pptx
-
validate.py:校验 PPTX 结构。 python .claude/skills/pptx-skill/ooxml/scripts/validate.py unpacked_dir --original presentation.pptx
五、详细文档
- html2pptx.md:HTML 到 PPTX 转换详细指南。
- ooxml.md:Office Open XML 技术参考。
六、PptxGenJS 核心规则
- 颜色代码:正确用法为不带 #,如 { color: 'FF0000' };错误用法为带 #,如 { color: '#FF0000' },会导致文件损坏。
- 添加幻灯片与元素: const slide = pres.addSlide(); slide.addText('标题', { x: 0.5, y: 0.5, w: 9, h: 1, fontSize: 36, color: '1a1a2e', bold: true }); slide.addImage({ path: 'image.png', x: 1, y: 2, w: 4, h: 3 }); slide.addShape(pres.ShapeType.rect, { x: 0.5, y: 1, w: 3, h: 2, fill: { color: '1e3a5f' } });
- 添加图表: slide.addChart(pres.ChartType.bar, [{ name: '系列 1', labels: ['A', 'B', 'C'], values: [10, 20, 30] }], { x: 1, y: 2, w: 8, h: 4 }); 亦支持饼图 pres.ChartType.pie、折线图 pres.ChartType.line 等。
七、完整转换流程 HTML 幻灯片(slides/*.html)→ html2pptx.js(Playwright + PptxGenJS)→ PPTX 文件(presentation.pptx)→ thumbnail.py(预览)。
八、依赖 Node.js:pptxgenjs(生成 PowerPoint)、playwright(浏览器渲染)、sharp(图像处理)。 Python:markitdown(Markdown 转换)、defusedxml(XML 解析)、pillow(图像处理)。 系统:LibreOffice(PDF/图像转换,soffice)、Poppler(PDF 转图像,pdftoppm)。
九、注意事项
- 颜色代码:PptxGenJS 中禁止使用 # 前缀。
- 字体:仅使用 Web 安全字体。
- 文本:仅转换 p、h1-h6、ul、ol 标签。
- 渐变:CSS 渐变以图像替代。
- 验证:转换后必须通过缩略图确认。
十、适用场景与限制 适用于需要批量将 HTML 幻灯片转为 PPTX、编辑现有演示文稿或生成缩略图预览的工作流;支持基于幻灯片规格验证与结构校验,但仅限上述标签的文本转换、要求 Web 安全字体并需注意颜色写法。其他平台支持、收费与价格等信息暂未提供。