Compliance and archival

面向归档和电子发票流程的 PDF/A-3b API

使用 gPdf 生成 PDF/A-3b 输出,并明确区分 PDF/A-3b 作为归档 profile 与作为电子发票 wrapper 的不同场景。

主 API JSON Render
ENDPOINT /api/v1/pdf/render
适用系统 合规后端 / 财务系统 / 法务归档 / 审计工作流
要解决的问题

为归档流程生成 PDF/A-3b 文档,并在 PDF/A-3b 需要承载嵌入式 Factur-X 或 ZUGFeRD EN 16931 XML 时选择电子发票 endpoint。

什么时候用这个 API

  • 你需要为已渲染文档选择 PDF/A-3b 归档 profile。
  • 你需要解释普通 PDF/A 与电子发票打包之间的边界。
  • 你的合规工作流会使用 veraPDF 或其他参考引擎验证生成的 PDF。
  • 你需要一个公开页面,把 PDF/A-3b 搜索意图导向正确 endpoint。

它不替代什么

  • 你需要公开 API 未记录的任意文件附件流程。
  • 你想通过 JSON Render 生成 Factur-X 或 ZUGFeRD 电子发票。请使用 E-Invoice Render。
  • 你需要 validator API。当前公开 validator surface 是 /validator/ 页面。

应该调用哪个 endpoint

主路径

/api/v1/pdf/render

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

辅助路径 1

/api/v1/e-invoice/render

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

最小请求示例

POST /api/v1/pdf/render - 为渲染文档请求 PDF/A-3b 输出。

{
  "settings": {
    "profile": "pdfa-3b"
  },
  "pages": [
    {
      "size": "a4",
      "elements": [
        {
          "type": "text",
          "x": 20,
          "y": 24,
          "content": "Archive copy",
          "style": { "font_size": 16, "font_family": "NotoSans-Regular" }
        }
      ]
    }
  ]
}

gPdf 负责什么

  • 通过 JSON Render settings 选择 PDF/A profile。
  • 在使用 POST /api/v1/e-invoice/render 时进行 PDF/A-3b 电子发票打包。
  • 生成适合外部参考引擎验证的可渲染 PDF 输出。
  • 明确区分归档 profile 和法律电子发票工作流。

你的系统负责什么

  • 留存策略,以及为什么需要 PDF/A-3b。
  • 任何业务数据、XML 语义和外部合规验收标准。
  • 验证证据、审计记录和渲染后的长期存储。

上线前检查

  1. 普通 PDF/A-3b 输出选择 JSON Render。
  2. 需要嵌入 EN 16931 XML 时选择 E-Invoice Render。
  3. 使用 /validator/ 或你自己的 veraPDF 流程验证 PDF/A 输出。
  4. 把请求的 profile 和 request ID 与存储文档一并记录。
  5. 除非公开文档列出支持,否则不要宣称支持任意附件。

能力边界

  • PDF/A-3b 是归档 profile;电子发票打包是在其之上的更窄工作流。
  • 不要暗示每一种任意嵌入文件流程都受支持。
  • Factur-X 和 ZUGFeRD PDF/A-3b 包必须走 e-invoice route。

PDF/A-3b 是 wrapper,不是完整工作流

PDF/A-3b 是 PDF 归档 profile。它重要,是因为它可以作为混合电子发票的 wrapper,但 profile 本身不会让一个文档变成法律电子发票。普通归档文档可以使用 PDF/A-3b,而不嵌入发票 XML。

对于 Factur-X 和 ZUGFeRD,请使用 POST /api/v1/e-invoice/render。该 endpoint 负责电子发票专用元数据和 associated-file wiring。

按意图选择 endpoint

当目标是“把这个文档渲染成 PDF/A-3b”时,使用 JSON Render。当目标是“把这张发票打包成带 EN 16931 CII XML 的 Factur-X 或 ZUGFeRD”时,使用 E-Invoice Render。这个区分可以让代码保持清晰,也避免普通归档任务意外携带电子发票假设。

外部验证

PDF/A 应通过参考引擎验证,而不是依赖营销描述。使用公开 validator 或你自己的验证流水线,并把报告与审计证据一起保存。

常见问题

PDF/A-3b 一定是电子发票吗?
不是。PDF/A-3b 是 PDF 归档 profile。Factur-X 和 ZUGFeRD 电子发票使用 PDF/A-3b 作为嵌入 EN 16931 XML 的 wrapper。
哪个 endpoint 创建 PDF/A-3b?
普通 PDF/A-3b 使用带 settings.profile 的 POST /api/v1/pdf/render。输出必须是 Factur-X 或 ZUGFeRD 电子发票时,使用 POST /api/v1/e-invoice/render。
我可以通过这个页面附加任意文件吗?
除非公开 API 文档列出该流程,否则不要假设支持任意附件。本页聚焦已记录的 PDF/A-3b 和电子发票用途。
如何验证 PDF/A 输出?
使用 /validator/ 或你自己的参考引擎流水线。电子发票还需要同时验证 PDF/A 层和嵌入式 XML 层。