# 用户指南 本指南提供 yaml2pptx 的完整使用说明。 ## 功能特性 - **YAML 声明式语法** - 使用简单易读的 YAML 定义演示文稿 - **智能验证** - 转换前自动检查 YAML 文件,提前发现问题 - **模板系统** - 支持参数化模板,复用幻灯片布局 - **丰富的元素类型** - 文本、图片、形状、表格 - **实时预览** - 浏览器预览模式,支持热重载 - **灵活尺寸** - 支持 16:9 和 4:3 两种宽高比 - **模块化架构** - 易于扩展和维护 ## 安装 本工具使用 [uv](https://github.com/astral-sh/uv) 管理依赖。项目依赖在 pyproject.toml 中声明,运行时会自动安装所需的 Python 包。 ## 基本用法 ### 转换 YAML 为 PPTX ```bash # 转换 YAML 为 PPTX uv run yaml2pptx.py convert presentation.yaml output.pptx # 自动生成输出文件名 uv run yaml2pptx.py convert presentation.yaml # 使用模板库 uv run yaml2pptx.py convert presentation.yaml output.pptx --template ./templates.yaml ``` ### 实时预览 ```bash # 启动预览服务器(自动打开浏览器) uv run yaml2pptx.py preview presentation.yaml # 指定端口 uv run yaml2pptx.py preview presentation.yaml --port 8080 # 允许局域网访问 uv run yaml2pptx.py preview presentation.yaml --host 0.0.0.0 # 不自动打开浏览器 uv run yaml2pptx.py preview presentation.yaml --no-browser ``` 预览模式会自动监听文件变化,修改 YAML 文件后浏览器会自动刷新。 ### 验证功能 在转换前验证 YAML 文件,提前发现问题: ```bash # 独立验证命令 uv run yaml2pptx.py check presentation.yaml # 使用模板时验证 uv run yaml2pptx.py check presentation.yaml --template ./templates.yaml ``` 验证功能会检查: - YAML 语法和结构 - 元素是否超出页面范围 - 图片和模板文件是否存在 - 颜色格式是否正确 - 字体大小是否合理 - 表格数据是否一致 **自动验证**:转换时默认会自动验证,如果发现错误会终止转换。可以使用 `--skip-validation` 跳过验证: ```bash # 跳过自动验证 uv run yaml2pptx.py convert presentation.yaml --skip-validation ``` **验证结果示例**: ``` 正在检查 YAML 文件... - 错误 (2): [幻灯片 2, 元素 1] 无效的颜色格式: red (应为 #RRGGBB) [幻灯片 3, 元素 2] 图片文件不存在: logo.png - 警告 (1): [幻灯片 1, 元素 1] 元素右边界超出: 10.50 > 10 检查完成: 发现 2 个错误, 1 个警告 ``` - **ERROR**:阻止转换的严重问题(文件不存在、语法错误等) - **WARNING**:影响视觉效果的问题(元素超出页面、字体太小等) - **INFO**:优化建议 ## YAML 语法基础 ### 最小示例 ```yaml metadata: size: "16:9" # 或 "4:3" slides: - background: color: "#ffffff" elements: - type: text box: [1, 1, 8, 1] content: "Hello, World!" font: size: 44 bold: true color: "#333333" align: center ``` ### description 字段 `metadata.description` 字段用于描述整个演示文稿的概要和用途,仅用于文档目的,不影响生成的 PPTX 文件: ```yaml metadata: size: "16:9" description: "2024年度项目进展总结,包含背景、成果和展望" ``` ### 使用模板 ```yaml metadata: size: "16:9" slides: - template: title-slide vars: title: "我的演示文稿" subtitle: "使用 yaml2pptx 创建" author: "张三" - template: content-slide vars: title: "功能概览" content: "yaml2pptx 支持多种元素类型..." ``` ## 使用技巧 1. **开发流程**:使用预览模式实时查看效果,确认无误后再生成 PPTX 2. **模板复用**:为常用布局创建模板,保持演示文稿风格一致 3. **相对路径**:图片路径相对于 YAML 文件位置,便于项目管理 4. **文本换行**:文本框默认启用自动换行,无需手动处理长文本 ## 扩展性 yaml2pptx 采用模块化架构,易于扩展: - **添加新元素类型**:定义新的元素数据类和渲染方法 - **添加新渲染器**:支持输出到其他格式(如 PDF) - **自定义模板**:创建符合你需求的模板库 详见 [开发文档](../development/extending.md)。 ## 依赖项 - `python-pptx` - PowerPoint 文件生成 - `pyyaml` - YAML 解析 - `flask` - 预览服务器 - `watchdog` - 文件监听 依赖在 pyproject.toml 中声明,由 uv 自动管理,无需手动安装。 ## 测试 项目包含完整的测试套件,使用 pytest 框架。 ### 运行测试 ```bash # 安装测试依赖 uv pip install -e ".[dev]" # 运行所有测试 uv run pytest # 运行特定类型的测试 uv run pytest tests/unit/ # 单元测试 uv run pytest tests/integration/ # 集成测试 uv run pytest tests/e2e/ # 端到端测试 # 运行特定测试文件 uv run pytest tests/unit/test_elements.py # 显示详细输出 uv run pytest -v # 显示测试覆盖率 uv run pytest --cov=. --cov-report=html ``` ### 测试结构 ``` tests/ ├── unit/ # 单元测试 - 测试各模块独立功能 ├── integration/ # 集成测试 - 测试模块间协作 ├── e2e/ # 端到端测试 - 测试完整用户场景 └── fixtures/ # 测试数据 ``` ## 贡献 欢迎贡献代码、报告问题或提出建议! 开发者请参阅 [开发文档](../development/) 了解代码结构和开发规范。 ## 许可证 MIT License