项目简介
一个将希沃白板 5(EN5)课件转换为离线 HTML 查看器的工具集,同时支持直接从希沃在线播放器截图导出高清 PDF + 视频。
课件来源为七年级生物学《第一节 流动的组织——血液》,共 36 页,包含图片、文字、形状、表格、视频、课堂活动及逐页点击动画等丰富元素。
解决什么问题
希沃白板 EN5 课件(.enbx)是专有格式,只能在希沃客户端或在线平台打开。脱离希沃环境后无法查看,给课件分享、归档、打印带来不便。
本工具解决:
- 离线查看:将课件转换为独立的 HTML 文件,双击即可在浏览器打开,无需安装任何软件
- 高清导出:直接从希沃在线播放器截图,保留原始渲染引擎的像素级精度,合成 PDF
- 视频保留:课件中的视频文件一并导出,与 PDF 放置在同一目录
技术方案
整套工具分为两个核心脚本:
seewo_viewer_gen.py — XML → HTML 生成器
通过解析希沃课件的 XML 描述文件(slide_N.xml),还原每页的内容布局:
- 图片、形状、文字框的精确位置与样式
- 形状内的内嵌文字(InlineText)
- 分组容器的嵌套变换
- SVG 路径格式兼容(F1M → M)
- 点击动画的逐步揭示
纯 Python 实现,无外部依赖,仅使用标准库 xml.etree.ElementTree。
seewo_export_pdf.py — 在线截图 → PDF 导出器
利用 browser-harness(Chrome DevTools Protocol)连接到浏览器中的希沃在线播放器:
- 自动遍历所有页面
- 通过 ENOWSDK API 揭示全部动画
- 2 倍高清截图(2368×1332)
- Pillow 合成为单文件 PDF
- 复制视频到输出目录
使用方法
生成离线 HTML
python seewo_viewer_gen.py
输出 seewo-viewer.html,双击浏览器打开,方向键翻页,空格推进动画。
导出 PDF + 视频
# 1. Chrome 打开希沃课件分享链接 → 点击「获取课件」
# 2. 连接 browser-harness
browser-harness --setup
# 3. 执行导出
browser-harness -c "exec(open('seewo_export_pdf.py').read())"
输出目录包含 slides.pdf(36 页,约 12 MB)及所有视频文件。
技术亮点
早期尝试过本地 HTML + html2canvas 截图、Node.js + Puppeteer 等多种方案,最终选择「browser-harness + 在线播放器」路线,原因是:
- 精度:本地 XML → HTML 转换存在渲染偏差(文字位置、SVG 路径等),希沃在线播放器是官方渲染引擎,像素级精确
- 动画完整性:通过 ENOWSDK API 可以一次性揭示所有动画步,避免逐步截图造成的时序问题
- 效率:36 页 + 全部动画揭示,全过程约 2-3 分钟
开发过程中遇到的典型问题包括希沃 F1M 路径前缀、InlineText 内嵌文字提取、Group 嵌套容器的 CSS transform 实现等,均已修复并记录在项目文档中。
项目结构
├── seewo_viewer_gen.py ← XML → HTML 生成器
├── seewo_export_pdf.py ← PDF 导出器
├── seewo-viewer.html ← 生成的离线查看器
├── seewo-raw/ ← 原始课件数据(XML + 资源)
│ ├── manifest.json
│ ├── slides/ ← 36 页 XML
│ └── resources/ ← 图片、视频等
├── seewo-courseware.skill.md ← AI 技能文档
└── README.md ← 完整文档
适用场景
- 教师备份课件为通用格式
- 课件分享给没有希沃环境的用户
- 打印课件内容为纸质资料
- 课件归档与版本管理
