mcpField
P
pptx

pptx

github.com/jd-opensource文档处理31538 次安装28 周前更新
代码仓库

关于 pptx

pptx 是一项用于创建、编辑和分析 PowerPoint 演示文稿的技能。它分别提供文本提取、检查 OOXML、从 HTML 制作幻灯片、编辑现有文件和套用模板的工作流。

主要功能

  1. 01将演示文稿文本提取为 Markdown
  2. 02通过 OOXML 检查幻灯片内容和设计
  3. 03从 HTML 幻灯片创建演示文稿
  4. 04通过 OOXML 编辑现有演示文稿
  5. 05分析模板并生成幻灯片缩略图

适用场景

  1. 01提取演示文稿中的文本
  2. 02不使用模板创建幻灯片
  3. 03编辑现有演示文稿的幻灯片 XML
  4. 04将演示文稿调整为模板样式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jd-opensource/joysafeter --skill pptx

安装后在 Claude Code 中输入/pptx确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

html2pptx.md
LICENSE.txt
ooxml.md
ooxml/schemas/ecma/fouth-edition/
opc-contentTypes.xsd
opc-coreProperties.xsd
opc-digSig.xsd
opc-relationships.xsd
ooxml/schemas/ISO-IEC29500-4_2016/
dml-chart.xsd
dml-chartDrawing.xsd
dml-diagram.xsd
dml-lockedCanvas.xsd
dml-main.xsd
dml-picture.xsd
dml-spreadsheetDrawing.xsd
dml-wordprocessingDrawing.xsd
pml.xsd
shared-additionalCharacteristics.xsd
shared-bibliography.xsd
shared-commonSimpleTypes.xsd
shared-customXmlDataProperties.xsd
shared-customXmlSchemaProperties.xsd
shared-documentPropertiesCustom.xsd
shared-documentPropertiesExtended.xsd
shared-documentPropertiesVariantTypes.xsd
shared-math.xsd
shared-relationshipReference.xsd
sml.xsd
vml-main.xsd
vml-officeDrawing.xsd
vml-presentationDrawing.xsd

详细介绍

PPTX 的创建、编辑和分析

概述

用户可能会要求你创建、编辑或分析 .pptx 文件的内容。.pptx 文件本质上是一个 ZIP 归档,其中包含 XML 文件和其他资源,你可以读取或编辑这些内容。针对不同任务,你可以使用不同的工具和工作流。

读取和分析内容

文本提取

如果只需要读取演示文稿中的文本内容,应将文档转换为 Markdown:

# Convert document to markdown
python -m markitdown path-to-file.pptx
原始 XML 访问

以下内容需要访问原始 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 - 各张幻灯片的内容(slide1.xml、slide2.xml 等)
  • ppt/notesSlides/notesSlide{N}.xml - 每张幻灯片的演讲者备注
  • ppt/comments/modernComment_*.xml - 特定幻灯片的批注
  • ppt/slideLayouts/ - 幻灯片布局模板
  • ppt/slideMasters/ - 幻灯片母版模板
  • ppt/theme/ - 主题和样式信息
  • ppt/media/ - 图像和其他媒体文件
字体排版和颜色提取

收到需要仿照的设计示例时:务必先使用以下方法分析演示文稿的字体排版和颜色:

  1. 读取主题文件:检查 ppt/theme/theme1.xml 中的颜色(<a:clrScheme>)和字体(<a:fontScheme>)
  2. 抽取幻灯片内容:检查 ppt/slides/slide1.xml 中实际使用的字体(<a:rPr>)和颜色
  3. 搜索模式:使用 grep 在所有 XML 文件中查找颜色(<a:solidFill>、<a:srgbClr>)和字体引用

不使用模板创建新的 PowerPoint 演示文稿

从头创建新的 PowerPoint 演示文稿时,使用 html2pptx 工作流,将 HTML 幻灯片转换为定位精准的 PowerPoint 幻灯片。

设计原则

重要:创建任何演示文稿之前,请分析内容并选择合适的设计元素:

  1. 考虑主题内容:这份演示文稿的主题是什么?它呈现出怎样的语气、行业特征或氛围?
  2. 检查品牌形象:如果用户提及公司或组织,请考虑其品牌色彩和形象
  3. 使配色与内容相符:选择能体现主题的颜色
  4. 说明设计思路:编写代码前,先解释你的设计选择

要求:

  • ✅ 编写代码前,先说明基于内容的设计思路
  • ✅ 仅使用适合 Web 的字体:Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact
  • ✅ 通过字号、字重和颜色建立清晰的视觉层次
  • ✅ 确保易读性:对比度充足、字号合适、对齐整洁
  • ✅ 保持一致:在各张幻灯片中重复使用相同的模式、间距和视觉语言
颜色方案选择

创意选择颜色:

  • 跳出默认选项:哪些颜色真正契合这个特定主题?避免不假思索地选择。
  • 从多个角度考虑:主题、行业、氛围、活力程度、目标受众、品牌形象(如果有提及)
  • 大胆尝试:试试出人意料的搭配——医疗主题的演示文稿不一定非要用绿色,金融主题也不一定非要用海军蓝
  • 构建配色方案:选择 3-5 种相互协调的颜色(主色 + 辅助色调 + 点缀色)
  • 确保对比度:文字在背景上必须清晰易读

配色方案示例(借此激发创意——选择一种、调整一种,或创建自己的方案):

  1. 经典蓝:深海军蓝 (#1C2833)、石板灰 (#2E4053)、银色 (#AAB7B8)、灰白色 (#F4F6F6)
  2. 青绿与珊瑚色:青绿色 (#5EA8A7)、深青绿色 (#277884)、珊瑚色 (#FE4447)、白色 (#FFFFFF)
  3. 醒目红色:红色 (#C0392B)、亮红色 (#E74C3C)、橙色 (#F39C12)、黄色 (#F1C40F)、绿色 (#2ECC71)
  4. 暖腮红色:灰紫色 (#A49393)、腮红色 (#EED6D3)、玫瑰色 (#E8B4B8)、奶油色 (#FAF7F2)
  5. 酒红奢华风:酒红色 (#5D1D2E)、深红色 (#951233)、铁锈色 (#C15937)、金色 (#997929)
  6. 深紫与翡翠绿:紫色 (#B165FB)、深蓝色 (#181B24)、翡翠绿 (#40695B)、白色 (#FFFFFF)
  7. 奶油色与森林绿:奶油色 (#FFE1C7)、森林绿 (#40695B)、白色 (#FCFCFC)
  8. 粉色与紫色:粉色 (#F8275B)、珊瑚色 (#FF574A)、玫瑰色 (#FF737D)、紫色 (#3D2F68)
  9. 青柠绿与李子色:青柠绿 (#C5DE82)、李子色 (#7C3A5F)、珊瑚色 (#FD8C6E)、蓝灰色 (#98ACB5)
  10. 黑与金:金色 (#BF9A4A)、黑色 (#000000)、奶油色 (#F4F6F6)
  11. 鼠尾草绿与陶土色:鼠尾草绿 (#87A96B)、陶土色 (#E07A5F)、奶油色 (#F4F1DE)、炭灰色 (#2C2C2C)
  12. 炭灰与红色:炭灰色 (#292929)、红色 (#E33737)、浅灰色 (#CCCBCB)
  13. 活力橙:橙色 (#F96D00)、浅灰色 (#F2F2F2)、炭灰色 (#222831)
  14. 森林绿:黑色 (#191A19)、绿色 (#4E9F3D)、深绿色 (#1E5128)、白色 (#FFFFFF)
  15. 复古彩虹:紫色 (#722880)、粉色 (#D72D51)、橙色 (#EB5C18)、琥珀色 (#F08800)、金色 (#DEB600)
  16. 复古大地色:芥末黄 (#E3B448)、鼠尾草绿 (#CBD18F)、森林绿 (#3A6B35)、奶油色 (#F4F1DE)
  17. 海岸玫瑰色:古玫瑰色 (#AD7670)、海狸棕 (#B49886)、蛋壳色 (#F3ECDC)、灰白色 (#BFD5BE)
  18. 橙色与绿松石色:浅橙色 (#FC993E)、灰绿松石色 (#667C6F)、白色 (#FCFCFC)
视觉细节选项

几何图案:

  • 使用斜线分隔区域,而非水平分隔线
  • 采用不对称的列宽(30/70、40/60、25/75)
  • 将标题文字旋转 90° 或 270°
  • 为图像使用圆形/六边形边框
  • 在角落添加三角形装饰图形
  • 叠加图形以营造层次感

边框与框架样式:

  • 仅在一侧使用粗实色边框(10-20pt)
  • 使用对比色双线边框
  • 使用角括号代替完整边框
  • 使用 L 形边框(上+左或下+右)
  • 在标题下方添加下划线装饰(粗细为 3-5pt)

字体样式:

  • 采用极大的字号对比(72pt 标题与 11pt 正文)
  • 标题全部大写,并加宽字间距
  • 使用超大展示字体显示编号章节
  • 使用等宽字体(Courier New)呈现数据/统计信息/技术内容
  • 使用窄体字体(Arial Narrow)呈现密集信息
  • 使用描边文字突出重点

图表与数据样式:

  • 使用单色图表,仅用一种强调色标记关键数据
  • 使用水平条形图代替垂直条形图
  • 使用点图代替条形图
  • 尽量减少网格线或完全不使用
  • 直接在图表元素上标注数据(不使用图例)
  • 用超大数字突出关键指标

布局创新:

  • 使用带文字叠加的全出血图像
  • 使用侧边栏列(宽度为 20-30%)展示导航/上下文信息
  • 使用模块化网格系统(3×3、4×4 方块)
  • 采用 Z 形或 F 形内容流
  • 在彩色图形上叠放浮动文本框
  • 采用杂志风格的多列布局

背景样式:

  • 使用占幻灯片 40-60% 面积的纯色块
  • 使用渐变填充(仅垂直或对角方向)
  • 使用分割背景(两种颜色,按对角线或垂直方向分割)
  • 使用延伸至边缘的色带
  • 将留白作为设计元素
布局提示

创建包含图表或表格的幻灯片时:

  • 双栏布局(首选):使用横跨全宽的标题,然后在下方设置两栏——一栏放置文本/项目符号,另一栏放置重点内容。这样可以让布局更平衡,也更便于阅读图表/表格。使用列宽不等的 flexbox(例如 40%/60% 的比例),为每种内容类型优化空间。
  • 全幻灯片布局:让重点内容(图表/表格)占据整张幻灯片,以获得最大的视觉冲击力和可读性
  • 绝不要垂直堆叠:不要将图表/表格放在单栏文本下方——这会导致可读性差和布局问题
工作流
  1. 强制要求 — 阅读整个文件:从头到尾完整阅读 html2pptx.md。读取此文件时,绝不设置任何范围限制。 在开始制作演示文稿之前,请阅读完整文件内容,了解详细语法、关键格式规则和最佳实践。
  2. 为每张幻灯片创建一个 HTML 文件,并设置合适的尺寸(例如,16:9 的尺寸为 720pt × 405pt)
    • 所有文本内容都使用 <p>、<h1>-<h6>、<ul>、<ol>
    • 对需要添加图表/表格的区域使用 class="placeholder"(渲染为灰色背景,以便查看)
    • 关键:先使用 Sharp 将渐变和图标栅格化为 PNG 图片,再在 HTML 中引用
    • 布局:对于包含图表/表格/图片的幻灯片,使用全幅布局或双栏布局,以提高可读性
  3. 使用 html2pptx.js 库创建并运行 JavaScript 文件,将 HTML 幻灯片转换为 PowerPoint 并保存演示文稿
    • 使用 html2pptx() 函数处理每个 HTML 文件
    • 使用 PptxGenJS API 在占位区域添加图表和表格
    • 使用 pptx.writeFile() 保存演示文稿
  4. 视觉验证:生成缩略图并检查布局问题
    • 创建缩略图网格:python scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4
    • 阅读并仔细检查缩略图,确认是否存在以下问题:
      • 文本截断:文本被标题栏、形状或幻灯片边缘截断
      • 文本重叠:文本与其他文本或形状重叠
      • 位置问题:内容离幻灯片边界或其他元素太近
      • 对比度问题:文本与背景之间的对比度不足
    • 如果发现问题,请调整 HTML 边距/间距/颜色并重新生成演示文稿
    • 重复上述步骤,直到所有幻灯片的视觉效果都正确

编辑现有 PowerPoint 演示文稿

编辑现有 PowerPoint 演示文稿中的幻灯片时,需要使用原始 Office Open XML(OOXML)格式。这包括解包 .pptx 文件、编辑 XML 内容,然后重新打包。

工作流
  1. 强制要求 — 阅读整个文件:从头到尾完整阅读 ooxml.md(约 500 行)。读取此文件时,绝不设置任何范围限制。 在编辑演示文稿之前,请阅读完整文件内容,了解 OOXML 结构和编辑工作流的详细指南。
  2. 解包演示文稿:python ooxml/scripts/unpack.py <office_file> <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_directory> <office_file>

使用模板创建新的 PowerPoint 演示文稿

如果需要创建遵循现有模板设计的演示文稿,请先复制并重新排列模板幻灯片,然后替换占位内容。

工作流
  1. 提取模板文本并创建视觉缩略图网格:

    • 提取文本:python -m markitdown template.pptx > template-content.md
    • 阅读 template-content.md:完整阅读文件,了解模板演示文稿的内容。读取此文件时,绝不设置任何范围限制。
    • 创建缩略图网格:python scripts/thumbnail.py template.pptx
    • 更多详情请参阅创建缩略图网格部分
  2. 分析模板并将清单保存到文件:

    • 视觉分析:查看缩略图网格,了解幻灯片布局、设计模式和视觉结构
    • 创建模板清单文件并保存为 template-inventory.md,内容如下:
      # 模板清单分析
      **幻灯片总数:[count]**
      **重要:幻灯片索引从 0 开始(第一张幻灯片 = 0,最后一张幻灯片 = count-1)**
      ## [类别名称]
      - 幻灯片 0:[可用时填写版式代码] - 描述/用途
      - 幻灯片 1:[版式代码] - 描述/用途
      - 幻灯片 2:[版式代码] - 描述/用途
      [... 必须逐一列出每张幻灯片及其索引 ...]
      
    • 使用缩略图网格:参考视觉缩略图,识别:
      • 版式模式(标题页、内容版式、章节分隔页)
      • 图片占位符的位置和数量
      • 幻灯片组之间的设计一致性
      • 视觉层级和结构
    • 此清单文件是下一步选择合适模板的必需文件
  3. 基于模板清单创建演示文稿大纲:

    • 查看第 2 步中可用的模板。
    • 为第一页选择引言或标题模板。应选择靠前的模板之一。
    • 为其他幻灯片选择安全的纯文本版式。
    • 关键:版式结构必须与实际内容相匹配:
      • 单栏版式:用于统一叙述或单一主题
      • 双栏版式:仅用于恰好有 2 个不同条目/概念的情况
      • 三栏版式:仅用于恰好有 3 个不同条目/概念的情况
      • 图片 + 文本版式:仅用于有实际图片要插入的情况
      • 引言版式:仅用于带有出处的真实人物引言,绝不能用于强调内容
      • 切勿使用占位符数量多于内容数量的版式
      • 如果有 2 个条目,不要硬塞进三栏版式
      • 如果有 4 个或更多条目,可考虑拆分到多张幻灯片,或使用列表格式
    • 选择版式前,先统计实际内容项的数量
    • 确认所选版式中的每个占位符都能填入有意义的内容
    • 为每个内容部分选择一个最合适的版式。
    • 保存 outline.md,其中包含内容和模板映射,并充分利用可用设计
    • 模板映射示例:
      # 要使用的模板幻灯片(索引从 0 开始)
      # 警告:确认索引在有效范围内!包含 73 张幻灯片的模板,其索引为 0-72
      # 映射:大纲中的幻灯片编号 -> 模板幻灯片索引
      template_mapping = [
          0,   # 使用幻灯片 0(标题/封面)
          34,  # 使用幻灯片 34(B1:标题和正文)
          34,  # 再次使用幻灯片 34(为第二个 B1 复制该幻灯片)
          50,  # 使用幻灯片 50(E1:引言)
          54,  # 使用幻灯片 54(F2:结束页 + 文本)
      ]
      
  4. 使用 rearrange.py 复制、重排和删除幻灯片:

    • 使用 scripts/rearrange.py 脚本,按所需顺序创建新的演示文稿:
      python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
      
    • 该脚本会自动复制重复的幻灯片、删除未使用的幻灯片并重新排序
    • 幻灯片索引从 0 开始(第一张幻灯片为 0,第二张为 1,依此类推)
    • 可以多次出现同一幻灯片索引,以复制该幻灯片
  5. 使用 inventory.py 脚本提取所有文本:

    • 运行清单提取:

      python scripts/inventory.py working.pptx text-inventory.json
      
    • 读取 text-inventory.json:完整读取 text-inventory.json 文件,以了解所有形状及其属性。读取此文件时绝不能设置任何范围限制。

    • 清单 JSON 结构:

        {
          "slide-0": {
            "shape-0": {
              "placeholder_type": "TITLE",  // 或非占位符时为 null
              "left": 1.5,                  // 位置,单位为英寸
              "top": 2.0,
              "width": 7.5,
              "height": 1.2,
              "paragraphs": [
                {
                  "text": "Paragraph text",
                  // 可选属性(仅在非默认值时包含):
                  "bullet": true,           // 检测到显式项目符号
                  "level": 0,               // 仅在 bullet 为 true 时包含
                  "alignment": "CENTER",    // CENTER、RIGHT(不包括 LEFT)
                  "space_before": 10.0,     // 段前间距,单位为磅
                  "space_after": 6.0,       // 段后间距,单位为磅
                  "line_spacing": 22.4,     // 行距,单位为磅
                  "font_name": "Arial",     // 取自第一个文本运行
                  "font_size": 14.0,        // 字号,单位为磅
                  "bold": true,
                  "italic": false,
                  "underline": false,
                  "color": "FF0000"         // RGB 颜色
                }
              ]
            }
          }
        }
      
    • 主要特性:

      • 幻灯片:命名为 "slide-0"、"slide-1" 等。
      • 形状:按视觉位置(从上到下、从左到右)排序,命名为 "shape-0"、"shape-1" 等。
      • 占位符类型:TITLE、CENTER_TITLE、SUBTITLE、BODY、OBJECT 或 null
      • 默认字号:default_font_size,单位为磅,从版式占位符中提取(如果可用)
      • 幻灯片编号会被筛除:带有 SLIDE_NUMBER 占位符类型的形状会自动从清单中排除
      • 项目符号:当 bullet: true 时,始终包含 level(即使值为 0)
      • 间距:space_before、space_after 和 line_spacing 的单位为磅(仅在设置时包含)
      • 颜色:RGB 颜色使用 color(例如 "FF0000"),主题颜色使用 theme_color(例如 "DARK_1")
      • 属性:输出中仅包含非默认值
  6. 生成替换文本并将数据保存到 JSON 文件 根据上一步的文本清单:

    • 关键:首先确认清单中有哪些形状——只引用实际存在的形状
    • 验证:replace.py 脚本会验证替换 JSON 中的所有形状是否存在于清单中
      • 如果引用了不存在的形状,会显示可用形状并报错
      • 如果引用了不存在的幻灯片,会提示该幻灯片不存在并报错
      • 脚本退出前会一次性显示所有验证错误
    • 重要:replace.py 脚本会在内部使用 inventory.py 来识别所有文本形状
    • 自动清空:除非为形状提供“paragraphs”,否则清单中的所有文本形状都会被清空
    • 为需要内容的形状添加“paragraphs”字段(而不是“replacement_paragraphs”)
    • 替换 JSON 中未包含“paragraphs”的形状,其文本会自动清空
    • 带项目符号的段落会自动左对齐。当 "bullet": true 时,不要设置 alignment 属性
    • 为占位文本生成合适的替换内容
    • 根据形状大小确定合适的内容长度
    • 关键:包含原始清单中的段落属性——不要只提供文本
    • 重要:当 bullet: true 时,文本中不要包含项目符号(•、-、*)——这些符号会自动添加
    • 必要的格式规则:
      • 标题通常应设置 "bold": true
      • 列表项应设置 "bullet": true, "level": 0(bullet 为 true 时必须设置 level)
      • 保留所有对齐属性(例如,居中文本应设置 "alignment": "CENTER")
      • 属性与默认值不同时,包含字体属性(例如,"font_size": 14.0、"font_name": "Lora")
      • 颜色:RGB 颜色使用 "color": "FF0000",主题颜色使用 "theme_color": "DARK_1"
      • 替换脚本需要的是格式正确的段落,而不只是文本字符串
      • 重叠形状:优先选择 default_font_size 较大或 placeholder_type 更合适的形状
    • 将包含替换内容的更新后清单保存到 replacement-text.json
    • 警告:不同的模板布局包含的形状数量不同——创建替换内容前,务必检查实际清单

    显示正确格式的“paragraphs”字段示例:

    "paragraphs": [
      {
        "text": "New presentation title text",
        "alignment": "CENTER",
        "bold": true
      },
      {
        "text": "Section Header",
        "bold": true
      },
      {
        "text": "First bullet point without bullet symbol",
        "bullet": true,
        "level": 0
      },
      {
        "text": "Red colored text",
        "color": "FF0000"
      },
      {
        "text": "Theme colored text",
        "theme_color": "DARK_1"
      },
      {
        "text": "Regular paragraph text without special formatting"
      }
    ]
    

    替换 JSON 中未列出的形状会自动清空:

    {
      "slide-0": {
        "shape-0": {
          "paragraphs": [...] // This shape gets new text
        }
        // shape-1 and shape-2 from inventory will be cleared automatically
      }
    }
    

    演示文稿中的常见格式模式:

    • 标题幻灯片:粗体文本,有时居中
    • 幻灯片中的章节标题:粗体文本
    • 项目符号列表:每个条目都需要设置 "bullet": true, "level": 0
    • 正文:通常无需特殊属性
    • 引言:可能需要特殊的对齐方式或字体属性
  7. 使用 replace.py 脚本应用替换内容

    python scripts/replace.py working.pptx replacement-text.json output.pptx
    

    脚本将:

    • 首先使用 inventory.py 中的函数提取所有文本形状的清单
    • 验证替换 JSON 中的所有形状是否存在于清单中
    • 清空清单中识别出的所有形状的文本
    • 仅将新文本应用到替换 JSON 中定义了“paragraphs”的形状
    • 通过应用 JSON 中的段落属性来保留格式
    • 自动处理项目符号、对齐方式、字体属性和颜色
    • 保存更新后的演示文稿

    验证错误示例:

    ERROR: Invalid shapes in replacement JSON:
      - Shape 'shape-99' not found on 'slide-0'. Available shapes: shape-0, shape-1, shape-4
      - Slide 'slide-999' not found in inventory
    
    ERROR: Replacement text made overflow worse in these shapes:
      - slide-0/shape-2: overflow worsened by 1.25" (was 0.00", now 1.25")
    

创建缩略图网格

要创建 PowerPoint 幻灯片的可视化缩略图网格,以便快速分析和参考:

python scripts/thumbnail.py template.pptx [output_prefix]

功能:

  • 创建:thumbnails.jpg(对于大型演示文稿,则创建 thumbnails-1.jpg、thumbnails-2.jpg 等)
  • 默认设置:5 列,每个网格最多包含 30 张幻灯片(5×6)
  • 自定义前缀:python scripts/thumbnail.py template.pptx my-grid
    • 注意:如果要将输出保存到特定目录,前缀应包含路径(例如,workspace/my-grid)
  • 调整列数:--cols 4(范围:3-6,会影响每个网格中的幻灯片数量)
  • 网格上限:3 列 = 每个网格 12 张幻灯片,4 列 = 20 张,5 列 = 30 张,6 列 = 42 张
  • 幻灯片的索引从 0 开始(Slide 0、Slide 1 等)

使用场景:

  • 模板分析:快速了解幻灯片布局和设计模式
  • 内容审阅:直观查看整个演示文稿
  • 导航参考:根据幻灯片的视觉外观查找特定幻灯片
  • 质量检查:确认所有幻灯片的格式均正确

示例:

# Basic usage
python scripts/thumbnail.py presentation.pptx

# Combine options: custom name, columns
python scripts/thumbnail.py template.pptx analysis --cols 4

将幻灯片转换为图像

要直观分析 PowerPoint 幻灯片,请通过以下两步将其转换为图像:

  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 等文件。

选项:

  • -r 150:将分辨率设为 150 DPI(可调整以平衡质量和文件大小)
  • -jpeg:输出 JPEG 格式(如需 PNG 格式,请使用 -png)
  • -f N:要转换的起始页(例如,-f 2 从第 2 页开始)
  • -l N:要转换的末尾页(例如,-l 5 转换到第 5 页为止)
  • slide:输出文件的前缀

转换指定范围的示例:

pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide  # Converts only pages 2-5

代码风格指南

重要:为 PPTX 操作生成代码时:

  • 编写简洁的代码
  • 避免使用冗长的变量名称和冗余操作
  • 避免不必要的打印语句

依赖项

必需的依赖项(应已安装):

  • markitdown:pip install "markitdown[pptx]"(用于从演示文稿中提取文本)
  • pptxgenjs:npm install -g pptxgenjs(用于通过 html2pptx 创建演示文稿)
  • playwright:npm install -g playwright(用于在 html2pptx 中渲染 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)

评论

支持 Markdown