mcpField
P
pptx

pptx

github.com/netease-youdao文档处理6.2k76 次安装1 周前更新
代码仓库

关于 pptx

用于创建、编辑和分析 PowerPoint 演示文稿的技能指南,涵盖文本提取、OOXML 处理和 HTML 制作幻灯片,并包含视觉检查流程。

主要功能

  1. 01将演示文稿文本提取为 Markdown
  2. 02检查幻灯片 XML、备注、评论和版式
  3. 03从 HTML 创建幻灯片
  4. 04编辑并验证 OOXML 演示文稿
  5. 05生成缩略图进行视觉检查

适用场景

  1. 01读取 PPTX 文件中的文本
  2. 02检查演讲者备注或幻灯片版式
  3. 03从头创建演示文稿
  4. 04编辑现有演示文稿的幻灯片

安装

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

$npx skills add https://github.com/netease-youdao/lobsterai --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>

注意:请从此技能目录解析脚本路径。若 $SKILLS_ROOT 可用,优先使用 $SKILLS_ROOT/pptx/ooxml/scripts/unpack.py;否则,请相对于此 SKILL.md 文件所在目录解析 ooxml/scripts/unpack.py。不要假定工作区相对路径 skills/pptx/... 可用。

关键文件结构
  • 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. 必须 - 阅读整个文件:从与此 SKILL.md 相同的目录中,从头到尾完整阅读 html2pptx.md(默认安装路径:$SKILLS_ROOT/pptx/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. 必须 - 阅读整个文件:从与此 SKILL.md 相同的目录中,从头到尾完整阅读 ooxml.md(默认安装路径:$SKILLS_ROOT/pptx/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