mcpField
P
pptx

pptx

github.com/aiskillstore文档处理446230 次安装今天更新
代码仓库

关于 pptx

用于创建、编辑和分析 PowerPoint 演示文稿的技能,涵盖文本提取、OOXML 检查、基于 HTML 的幻灯片制作及模板工作流。

主要功能

  1. 01将演示文稿文本提取为 Markdown
  2. 02通过 XML 检查备注、评论、版式和主题
  3. 03使用 html2pptx 从 HTML 创建幻灯片
  4. 04通过 OOXML 编辑现有演示文稿
  5. 05分析并使用现有幻灯片模板

适用场景

  1. 01提取 PPTX 文本以供审阅
  2. 02检查演讲者备注或幻灯片评论
  3. 03从头创建演示文稿
  4. 04改编现有演示文稿模板

安装

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

$npx skills add https://github.com/aiskillstore/marketplace --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