通用 PPT 生成技能
概述
此技能可以根据任意用户指定的 PPT 模板,结合提供的图文素材(文档、图片等),自动生成一份风格统一的演示文稿。
核心理念:每个模板都是独特的,必须针对性分析。不同 PPT 模板使用的字体、对齐方式、字号、颜色、位置、背景样式都完全不同,绝不能将一个模板的配置直接应用到另一个模板。每次使用新模板时,都必须重新分析 XML 提取精确参数。
核心能力
- 模板分析:自动解析 PPTX 模板结构、配色、字体、背景图/背景色、对齐方式。
- 分页面类型分析:针对封面、目录、章节、内容、结束页分别提取背景和样式。
- 素材处理:从 DOCX/PDF/图片等素材中提取内容。
- 智能排版:根据模板风格自动排版生成内容。
- 批量生成:支持生成多页完整演示文稿。
- 图表展示:支持柱状图、折线图、饼图、雷达图等多种数据可视化图表。
关键词:PPT生成、模板分析、演示文稿、幻灯片、图文排版、自动化、pptxgenjs、图表、数据可视化。
页面类型与背景处理
五种核心页面类型,不同类型的页面可能使用不同的背景处理方式:
- 封面页 (Cover):主标题 + 副标题 + Logo,背景处理方式为背景图/渐变/斜切形状。
- 目录页 (TOC):目录列表 + 装饰元素,背景处理方式为纯色背景 + 装饰形状。
- 章节页 (Chapter):大号章节编号 + 章节标题,背景处理方式为纯色背景 + 装饰形状。
- 内容页 (Content):标题 + 正文/图片/图表,背景处理方式为纯色背景/背景图。
- 结束页 (Thanks):感谢语 + 联系方式,背景处理方式为纯色背景 + 装饰形状。
背景类型分析
PPT 背景有三种主要类型:
-
纯色背景 (SolidFill):XML 中使用 <a:solidFill>,可引用主题色 schemeClr 或直接指定 srgbClr。pptxgenjs 对应代码示例:slide.background = { color: '0D1E43' }。
-
背景图片 (BlipFill):XML 中使用 <a:blipFill> 引用图片资源,或在形状中作为图片填充。pptxgenjs 对应代码示例:slide.background = { path: 'workspace/backgrounds/cover-bg.png' }。
-
渐变背景 (GradFill):XML 中使用 <a:gradFill>,包含颜色停止点 gsLst 和角度 lin。pptxgenjs 对渐变背景支持有限,通常用形状模拟,示例代码使用 addShape 配合 gradient 填充。
主题色映射
很多模板使用主题色(schemeClr)而非直接颜色值,常见映射包括:dk1 深色1(主要文字)、lt1/bg1 浅色1(背景)、dk2/tx2 深色2(次要背景)、lt2 浅色2、accent1 强调色1、accent2 强调色2。可从 theme1.xml 提取主题色映射。
分页面类型完整分析流程
技能提供 Python 脚本 analyze_slide_background,用于分析单页幻灯片的背景类型,包括:检查 <p:bg> 背景定义、识别纯色/渐变/图片背景、检查全屏图片作为背景、分析装饰性形状(半透明方块等)、从 rels 文件获取实际图片路径。并提供 analyze_all_pages 函数分析封面页、目录页、章节页、内容页等关键页面。
工作流程
- 模板深度分析阶段(关键):解压 PPTX,精确分析每页 XML,提取字号/颜色/位置。
- 素材处理阶段:解析 DOCX/PDF,提取文本/图片,结构化内容。
- 内容规划阶段:分析内容,设计结构,分配页面;识别数据,选择图表类型,准备图表数据。
- PPT 生成阶段:应用精确的模板参数,填充内容,生成图表,输出 PPTX。
- 清理阶段:删除临时文件,保留最终 PPTX。
第一阶段:模板深度分析
核心原则:必须精确提取模板中每一页的实际参数,而非使用推测值。分析时需要从 slide XML 中提取精确字号(sz="8000" 表示 80pt,sz ÷ 100)、精确位置(EMU 单位,转换为英寸或百分比)、精确颜色(srgbClr val)、字体粗细(b="1" 表示粗体)、对齐方式(algn="ctr" 居中,algn="r" 右对齐,algn="l" 或无属性表示左对齐)。
1.1 解压 PPTX 模板:PPTX 文件本质是 ZIP 压缩包,包含 XML 和媒体资源。技能提供创建 workpace 目录并使用 Python zipfile 解压模板的命令。
1.2 PPTX 文件结构详解:包括 [Content_Types].xml、_rels、docProps、ppt 目录下的 presentation.xml、presProps.xml、tableStyles.xml、viewProps.xml、_rels/presentation.xml.rels、media 媒体资源、slideLayouts 布局定义、slideMasters 母版定义、slides 幻灯片内容、theme 主题配色/字体。
1.3 精确分析每页幻灯片:技能提供 Python 脚本 analyze_slide,提取文本内容、字体名称(Latin/西文与 EA/东亚)、字号、sRGB 颜色、位置信息(转换为 20x11.25 英寸画布的百分比)、尺寸信息、边框设置、渐变填充、透明度,以及每个元素的字体+字号+对齐+文本详细分析。
1.4 分析主题配色:从 theme1.xml 提取配色方案,包括 dk1、lt1、dk2、lt2、accent1 等颜色方案结构。
1.5 识别幻灯片类型与背景图映射:查看布局关系,建立页面类型、slide、slideLayout、背景图的映射表。
1.6 提取背景图:根据分析结果复制背景图到工作目录。
适用场景
适用于需要根据既有 PPT 模板批量生成风格统一演示文稿的场景,例如企业汇报、项目介绍、数据展示等,尤其适合需要保持模板视觉规范一致、同时结合文档与图片素材自动排版的场合。
限制
技能强调每个模板必须单独分析,不能跨模板复用配置。pptxgenjs 对渐变背景支持有限,通常需要用形状模拟。资料中未提供具体的收费、价格、平台支持范围等信息。