← ClaudeAtlas

html-deck-to-pptxlisted

将HTML幻灯片演示文稿截图并生成PPTX文件。当用户需要把HTML slides导出为PPT、将HTML演示文稿转成PPTX、对HTML幻灯片逐页截图打包时激活。Convert HTML slide decks to PPTX by screenshotting each slide and assembling into a PowerPoint file. Activates when user needs to export HTML slides to PPT, convert HTML deck to .pptx, screenshot HTML presentation pages.
Linearl/reasonix_skill_repo · ★ 2 · Data & Documents · score 66
Install: claude install-skill Linearl/reasonix_skill_repo
# HTML Deck to PPTX | HTML幻灯片转PPTX ## Overview | 概述 将基于HTML的幻灯片演示文稿(通过左右键翻页)逐页截图,然后生成PPTX文件,每页一张截图铺满。 - 使用 Playwright 打开HTML文件并自动翻页截图 - 使用 python-pptx 将截图组装为16:9宽屏PPT - 支持自定义视口尺寸、总页数、翻页键 ## Prerequisites | 前提条件 ```bash pip install playwright python-pptx playwright install chromium ``` ## Important: Timing | 时间间隔注意事项 HTML Deck 的幻灯片切换涉及 CSS 动画(slideFade 220ms)、字体加载、auto-scale 计算和背景渐变渲染,截图过快会截到过渡画面或未就绪状态。 **推荐等待策略:** 1. 导航后等待 `.slide.active` 存在 2. 等待 `getComputedStyle(slide).opacity === '1'`(确保 fade-in 动画完成) 3. 额外等待 500ms(字体渲染 + auto-scale + 背景渐变) 4. 总计每页间隔约 **800-1000ms** **Playwright 检查代码示例:** ```python page.wait_for_selector(".slide.active", timeout=10000) page.wait_for_function(""" () => { const s = document.querySelector('.slide.active'); if (!s) return false; const cs = getComputedStyle(s); return cs.opacity === '1' && cs.display !== 'none'; } """, timeout=5000) page.wait_for_timeout(500) # 字体与渐变渲染余量 ``` **html2canvas 的已知局限:** - CSS `mask-image` 不渲染(deck::before 网格纹理丢失) - CSS 自定义属性(`var(--bg-gradient-*)`)中的渐变解析不稳定 - 复杂 `linear-gradient` 多色标可能丢失 - 截图画布尺寸可能偏离 16:9,导致 PPTX 拉伸 **推荐:** 优先使用本技能的 Playwright 截图方案(真实浏览器渲染,渐变/mask/伪元素完整保留);html2canvas 仅作快速预览。 ## Workflow Steps | 工作流步骤 ### Step 1: 确认参数 | Confirm Parameters 在运行前确认以下信息(可通过读取HTML源码中的JS逻辑自动检测): | 参数 | 默认值 | 说明 | |------|--------|------| | `html_file` | (必填) | HTML幻灯片文件路径 | | `output_dir` | `<html所在目录>/screenshot` | 截图输出目录 | | `output_pptx` | `<html所在目录>/<html文件名>.pp