Developer workflows

面向稳定文档合同的模板 PDF API

当复用版式应由一处维护并被 ERP、OMS、WMS 或 SaaS 调用方重复使用时,用稳定 template_id 和 data array 渲染 PDF。

主 API Template Render
ENDPOINT /api/v1/template-render
适用系统 SaaS 后端 / ERP 集成 / OMS / WMS / 任务队列
要解决的问题

通过发送稳定的 template_id 和业务 data array 来渲染复用 PDF,而不是要求每个调用方在每次请求中描述页面、坐标和版式元素。

什么时候用这个 API

  • 文档版式已经批准,并会被多个调用方或任务复用。
  • 调用方应该发送业务数据,而不是坐标级 layout JSON。
  • 你需要发票、装箱单、快递面单或自定义模板输出。
  • 你希望 active template revisions 在调用方之外受控。

它不替代什么

  • 你还在设计版式。请在坐标和字段稳定前使用 JSON Render。
  • 你需要任意 HTML-to-PDF 转换。
  • 你需要带嵌入式 CII XML 的电子发票 PDF/A-3b 打包。

应该调用哪个 endpoint

主路径

/api/v1/template-render

Template Render 是这个场景的默认调用路径。

辅助路径 1

/api/v1/pdf/render

当流程需要相关 API、模板契约或能力查询时再使用。

最小请求示例

POST /api/v1/template-render - 用模板渲染一张发票。

{
  "template_id": "invoice",
  "data": [
    {
      "invoice_number": "INV-2026-001",
      "date_of_issue": "2026-05-29",
      "date_due": "2026-06-28",
      "issuer_name": "Acme Cloud Inc.",
      "issuer_address": "88 Harbor Rd, Long Beach, CA",
      "bill_to_name": "Receiver Inc.",
      "bill_to_address": "123 Main St, Los Angeles, CA",
      "subtotal": "$100.00",
      "total": "$100.00",
      "amount_due": "$100.00",
      "items": [
        {
          "description": "Service A",
          "qty": 1,
          "unit_price": "$100.00",
          "amount": "$100.00"
        }
      ]
    }
  ]
}

gPdf 负责什么

  • 通过稳定 template_id 查找模板。
  • 用 active template 渲染每个 data item。
  • 在公开 endpoint 限制内,将渲染页拼接成单个 PDF。
  • 保持共享鉴权、request ID 和错误 envelope 行为。

你的系统负责什么

  • 模板选择、字段映射、业务数据和调用方授权。
  • 模板发布流程、变更沟通和测试覆盖。
  • 批量渲染时的分片、排队和重试。

上线前检查

  1. 把 template_id 当作不透明的稳定合同。
  2. 调用 Template Render 前校验 data 字段。
  3. 为 active template 和代表性数据保留 golden-PDF 测试。
  4. 按公开 Template Render 限制拆分大批量任务。
  5. 记录 template_id、request ID 和业务对象 ID,便于追踪。

能力边界

  • Template Render 本身不是设计工具;模板必须已经发布。
  • gPdf 不会从模板中推断缺失业务数据。
  • Template Render 不能替代 E-Invoice Render endpoint。

Template Render 是生产合同层

JSON Render 适合版式设计阶段。版式成为合同时,应使用 Template Render。调用方发送 template_id 和 data;active template 负责文档结构。

这样调用方更轻量,模板变更也更容易评审、测试和发布。

Endpoint 选择

默认调用 /api/v1/template-render。当版式仍在调整、调用方需要完整描述页面结构时,使用 JSON Render;当版式已经审批并需要多个系统复用时,把版式发布为模板,再通过 Template Render 传入业务数据。

如果场景涉及 Factur-X / ZUGFeRD 这类带 EN 16931 CII XML 的 PDF/A-3b 电子发票封装,才使用 E-Invoice Render。普通 PDF、标签、收据和报表不要伪装成电子发票流程。

上线前验证

用真实数据和下游系统验证 模板 PDF API。保留 request ID、渲染输出和验收记录,便于支持、审计和重打。gPdf 负责 PDF 渲染;业务规则、外部系统路由、税务判断、承运商验收或 marketplace 合规仍由你的系统负责。

常见问题

什么时候应该用 Template Render,而不是 JSON Render?
当版式已经批准,并且调用方只应发送业务数据时,使用 Template Render。
template_id 是稳定的吗?
是。template API 文档将 template_id 描述为面向调用方的稳定标识符。
一个请求可以渲染多个 data item 吗?
可以,Template Render 在公开 endpoint 限制内接收 data array。
Template Render 可以创建电子发票吗?
不可以。Factur-X 和 ZUGFeRD PDF/A-3b 打包使用 E-Invoice Render endpoint。