使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
HTML 到 PPTX 转换器 Skill. 此技能提供了一个将基于网络的幻灯片甲板( HTML/ CSS) 转换为专业的, 本地的 PowerPoint 文件是一项面向实际任务的技能,主要用于它使用混合方法: Python for。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。
执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
该技能提供了一套完整流程,可将基于 Web 的幻灯片(HTML/CSS)转换为专业、原生的 PowerPoint 文件。其采用混合技术方案:使用 Python(BeautifulSoup)提取内容,再通过 Node.js(PptxGenJS)重建布局。
# Python 依赖 pip install beautifulsoup4 lxml # Node.js 依赖 npm install -g pptxgenjs
解析 HTML,提取语义化的幻灯片数据(标题、项目符号列表、指标数值、表格及布局信息)。
from bs4 import BeautifulSoup
import json
def parse_slides(html_path):
soup = BeautifulSoup(open(html_path), 'lxml')
slides = []
for div in soup.find_all('div', class_='slide'):
# 根据类名(如 'cover-slide'、'content-box'、'two-column')提取内容
# 返回结构化 JSON 列表
pass
return slides
将提取出的 JSON 数据映射为 PptxGenJS 对象,坐标系统基于 10 英寸 × 5.625 英寸画布。
const pptxgen = require("pptxgenjs");
let pres = new pptxgen();
// 定义统一配色方案
const COLORS = { PRIMARY: "0F3460", ACCENT: "00D4FF", TEXT: "FFFFFF" };
// 遍历解析后的数据并逐页添加幻灯片
data.forEach(item => {
let slide = pres.addSlide();
// 根据 item.type 使用 slide.addText、slide.addShape 或 slide.addTable
});
pres.writeFile({ fileName: "output.pptx" });
addShape 和 addText 方法,而非截图方式,确保生成的 PPT 文件完全可编辑。grid 或 flex 布局手动映射为 X/Y 坐标(例如双栏布局对应 X:0.5 和 X:5.2)。background-color 或等效 linear-gradient 保持同步。# 前缀(例如应写为 00D4FF)。currentY 值。