docs: update README and REQUIREMENTS to reflect current architecture (knowledge base + schema + renderer)

This commit is contained in:
李进
2026-07-23 19:07:47 +08:00
parent 37839c1e86
commit cff5b12975
2 changed files with 125 additions and 121 deletions
+79 -22
View File
@@ -1,37 +1,94 @@
# html2pptx
HTML to editable PPTX export engine.
HTML / 截图 → 标准 JSON → 可编辑 PPTX
HTML 演示文稿导出为**文字可编辑、布局可还原**的 PPTX 文件。
任何格式的演示文稿描述转化为**文字可编辑、布局可还原**的 PPTX 文件。
## 原理
## 架构
```
HTML 文件 → HTTP 服务 → Chrome headless 渲染 → DOM 遍历提取位置/样式 → pptxgenjs 生成 PPTX
输入(任意来源) 中间层 输出
━━━━━━━━━━━━━━━ ━━━━━━━━━━━ ━━━━━
AI 生成的描述 标准 JSON PPTX 文件
HTML 提取的结构 → Schema 校验 → pptxgenjs 渲染
多模态识别结果 ↓
Markdown / 其他 翻译引擎(机械映射)
```
### 三层结构
| 层 | 目录 | 说明 |
|---|------|------|
| **知识库** | `reference/` | pptxgenjs 完整参数表,每个参数的类型/取值范围/默认值。给 AI 用的操作手册 |
| **Schema** | `schema/` | JSON Schema 定义 + 示例。AI 输出符合此 Schema 的 JSON 即可驱动 PPT 生成 |
| **翻译引擎** | `renderer/` | JSON → pptxgenjs API 调用的机械映射。不做逻辑判断,只做参数透传 |
## 快速开始
```bash
npm install
```
### 从 JSON 生成 PPTX
```javascript
const { render } = require('./renderer/index');
const pptx = render(jsonObject);
pptx.writeFile({ fileName: 'output.pptx' });
```
### 从 JSON 文件生成
```javascript
const { renderFile } = require('./renderer/index');
renderFile('./schema/examples/ui-dashboard.json', 'output.pptx');
```
## 目录结构
```
reference/ ← 知识库:每个元素的完整参数表
text.md 文字参数
shape.md 形状参数
table.md 表格参数
image.md 图片参数
chart.md 图表参数
slide.md 页面参数
master.md 母版参数
output.md 输出参数
coordinate.md 坐标换算
schema/ ← JSON Schema 定义
presentation.schema.json
examples/
basic.json 基础示例(2页)
full.json 全功能示例
ui-dashboard.json UI 看板示例
ui-advanced.json 精细化 UI 示例
renderer/ ← 翻译引擎
index.js 主入口
text-renderer.js 文字渲染
shape-renderer.js 形状渲染
table-renderer.js 表格渲染
image-renderer.js 图片渲染
chart-renderer.js 图表渲染
slide-renderer.js 页面属性
PPTXGENJS_API.md ← pptxgenjs v4.0.1 完整 API 参考
```
## 设计原则
- **翻译引擎是纯机械映射** — 不做样式推断,不做逻辑判断。JSON 里有什么就画什么
- **Schema 是 AI 友好** — 字段名直观,不暴露 pptxgenjs 内部命名
- **知识库是完整参考** — 每个参数都有类型+取值范围+默认值,不需要 AI 去猜
## 依赖
- Node.js 18+
- Chrome / Chromium / Edge(用于渲染页面)
## 使用
```bash
# 安装
npm install
# 导出
node bin/html2pptx input.html output.pptx
```
## 核心依赖
| 包 | 用途 |
|---|------|
| playwright | 控制 Chrome headless 渲染页面 |
| pptxgenjs | 生成 PPTX 文件 |
| http-server | 本地静态文件服务(可选) |
| pptxgenjs | 生成 PPTX 文件(OOXML |
## License