核心用法
document-generator 是一套基于 Python 的文档自动化生成系统,通过命令行脚本将结构化数据转换为专业格式的 Word(.docx)、Excel(.xlsx)或 PDF(.pdf)文件。
Word 生成:支持多级标题、表格(含样式)、图片(含题注)、段落、列表及页眉页脚。复杂内容可通过 JSON 结构描述,调用 create_word.py 渲染。
Excel 生成:创建多工作表、填充单元格、应用数字格式与边框,支持公式与基础图表(柱状图、折线图、饼图)。
PDF 生成:提供两条技术路径——WeasyPrint(HTML→PDF,高质量排版)或 fpdf2(纯文本+样式),支持页眉页脚、页码控制。
模板系统:内置 Jinja2 变量替换,允许用户以 JSON 或 HTML 定义自定义模板,实现动态内容注入。
显著优点
1. 多格式统一接口:单一技能覆盖三大办公文档格式,降低学习成本。
2. 声明式内容描述:JSON 结构描述复杂文档,便于程序生成与版本管理。
3. 高保真 PDF:WeasyPrint 基于 Web 标准渲染,支持中文(如 Microsoft YaHei)与精细样式。
4. 模板复用:预置常见文档类型模板,减少重复编码。
潜在缺点与局限性
- 依赖管理复杂:需预装 5 个 Python 包(python-docx、openpyxl、fpdf2、weasyprint、jinja2),WeasyPrint 额外依赖系统库(Pango、Cairo),Linux 环境配置门槛较高。
- 无交互式编辑:纯代码驱动,无 GUI 或实时预览,调试样式需反复生成。
- Excel 图表能力有限:仅支持基础图表类型,复杂可视化需借助其他工具。
- 性能瓶颈:超大 Excel(>10k 行)需手动启用流式写入,默认模式内存占用高。
适合人群
- 需批量生成合同、发票、证书的企业自动化场景
- 数据分析师将结构化结果导出为格式化报告
- 开发者构建文档流水线(CI/CD 生成发布物)
常规风险
- 依赖冲突:WeasyPrint 与系统 GTK 库版本耦合,升级可能导致渲染异常。
- 路径安全:脚本接受用户输入的文件路径与图片路径,需调用方确保无路径遍历攻击。
- 模板注入:Jinja2 模板若来源不可信,存在沙箱逃逸风险(虽文档未提及沙箱加固)。