Invoice Generator 用于从结构化 JSON 数据生成 PDF 发票,适合需要创建发票、账单文档或付款请求的场景。
用途 当用户需要生成发票、账单文档或付款请求,并且已有公司、客户、发票编号、日期、明细项目与合计金额等结构化数据时,可使用该工具将其转换为 PDF 发票。
主要能力
- 从 JSON 数据生成 PDF 发票。
- 支持从标准输入即时传入数据、从完整文件路径读取数据、或从已保存的配置读取数据。
- 输出文件按发票编号命名,若同名文件已存在会自动追加版本号(如 -2、-3)。
- 提供错误处理:JSON 无效或缺少必填字段时退出码为 1;weasyprint 生成 PDF 失败时退出码为 2;错误信息写入 stderr。
使用方式
- 安装 Node.js 依赖: cd invoice-generator && npm install
- 设置 INVOICE_DIR 环境变量(或在 skills.entries.invoice-generator.env 中设置): export INVOICE_DIR="/path/to/your/invoices" 该目录下会建立 configs(可选:保存的发票配置)和 invoices(生成的 PDF 输出)两个子目录。
- 生成发票:
- 从标准输入:cat invoice-data.json | {baseDir}/scripts/generate.sh
- 从完整文件路径:{baseDir}/scripts/generate.sh /path/to/invoice-data.json
- 从已保存的配置:{baseDir}/scripts/generate.sh client-template(会加载 $INVOICE_DIR/configs/client-template.json) 输出路径为 $INVOICE_DIR/invoices/invoice-{number}.pdf,若已存在则自动追加版本号。
输入数据格式 JSON 输入必须包含以下字段: { "company": { "name": "Your Company", "address": "123 Main St", "cityStateZip": "City, State, 12345", "country": "Country" }, "client": { "name": "Client Name", "address": "456 Client Ave", "cityStateZip": "City, State, 67890", "country": "Country", "taxId": "TAX123" }, "invoice": { "number": "INV-2025.01", "date": "Jan 15 2025", "dueDate": "Jan 30 2025" }, "items": [ { "description": "Service description", "rate": "1000.00", "currency": "USD" } ], "totals": { "currency": "USD", "total": "1,000.00" } } 完整字段文档见 references/data-schema.md。
输出 成功时脚本输出生成的 PDF 文件路径: $INVOICE_DIR/invoices/invoice-INV-2025.01.pdf 若该文件名已存在,脚本会写入: $INVOICE_DIR/invoices/invoice-INV-2025.01-2.pdf(之后依次为 -3 等)。
适用场景
- 需要根据已有结构化数据批量或按需生成 PDF 发票。
- 需要将发票配置保存为模板并重复使用。
- 需要将发票生成集成到命令行或自动化流程中。
限制
- 依赖 Node.js 环境,需先安装依赖。
- 需要设置 INVOICE_DIR 环境变量。
- JSON 输入必须包含指定字段,否则会报错退出。
- PDF 生成依赖 weasyprint,若其失败则退出码为 2。
- 关于收费、价格、平台支持范围等信息,资料中暂未提供。