跳转到内容
getnextpdf.com

Pro 版本

合规

NextPDF Pro 报告 PDF/UA-2 语言标签事件、验证并嵌入 Factur-X / ZUGFeRD 电子发票 XML,以及嵌入或读取 C2PA 清单库(manifest store)。这些功能产出报告和结构化结果。它们不会认证某份文档,也不保证其在法规上的充分性。

此能力随 NextPDF Pronextpdf/pro)一同交付,并通过 Pro 层级的授权信封(license envelope)激活。缺少该授权权益的部署不会加载此能力的类。Compliance 是 Pro 版本的一部分;没有单独的按功能授权标志。比较各版本并获取授权

Terminal window
composer require nextpdf/pro:^3

Compliance 模块有三个相互独立的接口。

语言标签报告。 LangComplianceReporter 为每个 PDF/UA-2 语言标签事件发出一条结构化的 JSON 记录。每条记录都携带有问题的标签、一个机器可读的原因、已解析的标签组成部分、一处 ISO 14289-2 §8.4.4 条款引用,以及一个时间戳。ConformancePolicy 是一个 Premium 门面,默认采用严格的 UA-2 语言处理:当一个格式错误或未注册的 BCP-47 标签进入 /Lang 条目时,它会安全失败(fail closed)。一个宽松的退出选项(ConformancePolicy::withStrictUa2(false))会回退到旧有的宽容行为并记录一条通知。NextPDF 将该退出选项标记为已弃用;请改用严格的默认值。该退出选项自 v5.0 起存在,并将在下一个主版本中移除。要完成迁移,请审计你的语料库中格式错误的 /Lang 值,加以更正,然后移除该退出调用,使严格的默认值生效。

电子发票处理。 EInvoiceValidator 根据 EN 16931 语义数据模型以及 Factur-X 1.08 / ZUGFeRD 2.4 容器规范来检查混合型 PDF。它会检测配置文件、运行 EN 16931 业务规则引擎,并运行一趟 Schematron 检查。在验证之前,它会从 PDF 中提取嵌入的发票 XML —— 包括从对象流(object-stream)型 PDF 中提取,这类 PDF 是 Ghostscript、Gotenberg 和 Antenna House 等常见生成器的默认输出,而早先的提取无法读取它们。提取器接受 RFC 7303 带参数的 MIME 子类型(例如 text/xml; charset=UTF-8)以及 ISO 32000-2 字面字符串型的嵌入文件名(含转义)。FacturXEmbedder 产出一份附带 Factur-X XML 的混合型 PDF/A-3 文档。EInvoiceValidationResult 报告配置文件、语法、规则违规和封装检查。

来源凭证(Provenance)。 C2paManifestEmbedder 将调用方提供的 C2PA 清单库嵌入到一个 PDF 字节串中,或将其再次提取出来。ManifestStore 是跨越该边界的不可变值对象。该接合点不会合成主张,也不会解析哈希绑定。

本模块报告它所检查的内容。它不会断言一份文档在法律上合规、已获认证或具有法律约束力,也不保证任何输出满足某项法规或某个司法辖区的要求。

  • 电子发票验证器检查 EN 16931 语义模型以及 Factur-X / ZUGFeRD 容器规范。它不是税务机关验证器。各国扩展 —— 例如意大利 SDI、法国 Chorus Pro、德国 XRechnung —— 不在范围之内。正如 EN 16931-1 本身所述,发票开具方有责任满足相关法律的规则。
  • 语言标签报告器产出一份标签事件的报告。它不会使文档变得合规。
  • C2PA 嵌入写入调用方提供的清单。它不会产生或签署其中的主张。

支持某项标准与符合该标准并不是一回事。请咨询你的合规团队,以判断它对你的用途在法规上是否充分。

起支撑作用的决策是在”检查”与”认证”之间划出一条硬性界线。每个接口都返回证据 —— 一份报告、一个验证结果、一个嵌入的清单 —— 而绝不断言某份文档在法律上合规。这让该接合点在各版本之间保持诚实。ConformancePolicy 在遇到格式错误的 /Lang 标签时安全失败,C2paManifestEmbedder 从不签署它所携带的主张。EInvoiceValidator::validate() 返回一个 EInvoiceValidationResultisValid() 为绿并不是你可以未经核查就交给监管方的裁定,而只是你决策的一个输入。这些证据与你自己的控制措施相互组合,而不是取而代之,因此即便输入是恶意的,它也依然保持真实。

设计背景:可以交给审计师的合规

职责
LangComplianceReporter发出结构化的语言标签事件记录。
ConformancePolicyPremium 严格 UA-2 语言策略门面。
EInvoiceValidator检查 EN 16931 / Factur-X / ZUGFeRD;返回一个结果。
EInvoiceValidationResult配置文件、语法、规则违规、封装检查。
FacturXEmbedder产出一份混合型 PDF/A-3 + Factur-X XML 文档。
C2paManifestEmbedder嵌入或提取一个 C2PA 清单库。
ManifestStore不可变的 C2PA 清单库值对象。
use NextPDF\Pro\Compliance\EInvoice\EInvoiceValidator;
$result = $validator->validate('/path/to/invoice.pdf');
$ok = $result->isValid(); // true only if wrapper, attachment, profile, and no fatal BR
$result = $validator->validate($pdfPath);
foreach ($result->businessRuleViolations as $violation) {
$logger->warning('einvoice.br_violation', [
'rule' => $violation->ruleId,
'severity' => $violation->severity->value,
]);
}
// A green result is one input to your decision, not a compliance verdict.
  • 一份格式正确、非 Factur-X 的 PDF 会返回”不是电子发票”的结果,而不会抛出异常。
  • XML 提取器能读取对象流型 PDF(Ghostscript、Gotenberg 和 Antenna House 的默认输出),并接受 RFC 7303 带参数的 MIME 子类型和 ISO 32000-2 字面字符串型文件名。这是针对合规生成器输出的兼容性提取,而非针对恶意输入的权威附件验证 —— 面向对抗性公开端点的完整 xref 激活是一处有文档记录的延后边界。请相应地对待来自不受信任来源的提取。
  • 业务规则违规列表为空,本身并不意味着文档有效;封装检查和附件检查同样适用。
  • NextPDF 弃用了严格 UA-2 的宽松退出选项;请迁移到严格的默认值(参见概念概述)。它将在下一个主版本中移除。

验证开销随嵌入 XML 大小和规则数量而变化。语言标签报告对每个事件而言是常数级的。

所有 XML 解析都禁用了外部实体解析(XXE 安全)并对解压设限。请将来自不受信任来源的电子发票 XML 和 C2PA 字节视为恶意内容。

电子发票 XML 可能包含个人和财务数据。处理在进程内本地进行;该模块在验证过程中不发起任何对外网络调用。请对提取出的 XML 和报告施加你自己的留存与最小化控制。

报告器记录和验证日志可能包含标签值和规则标识符。它们不包含完整的发票载荷。如果这些标签值是敏感的,请在将日志转发到共享接收端之前清洗或脱敏它们。

行为引用状态
自然语言声明(/LangISO 14289-2:2024 §8.4.4已检查/已报告
核心发票语义模型EN 16931-1:2026已检查(开具方仍负有责任)
C2PA 清单库 / JUMBFC2PA 2.1 §11.1支持嵌入/提取

本表记录了 NextPDF Pro 所基于构建的规范,以及它所检查的内容。它不是一份认证声明,也不是对法规充分性的声明。

本模块不执行密码学签名。C2PA 主张签署和密钥保管不在其范围之内;FIPS 模式下的签名行为请参阅 Security 模块。

不受信任的电子发票 XML 和 C2PA 字节是主要输入。缓解措施:XXE 安全的解析、有界解压、跨 C2PA 接合点不合成任何主张,以及验证期间无网络 I/O。

  • LangComplianceReporter 为每个 PDF/UA-2 语言标签事件发出一条结构化的 JSON 记录,包含有问题的标签、一个机器可读的原因、已解析的标签组成部分、一处 ISO 14289-2 §8.4.4 引用,以及一个时间戳。
  • ConformancePolicy 默认采用严格的 UA-2 语言处理,当一个格式错误或未注册的 BCP-47 标签进入 /Lang 时会安全失败。宽松的退出选项已弃用,并将在下一个主版本中移除。
  • EInvoiceValidator 检测配置文件、运行 EN 16931 业务规则引擎和一趟 Schematron 检查,并返回一个 EInvoiceValidationResult。它不是税务机关验证器;各国扩展不在范围之内,且根据 EN 16931-1,开具方仍负有责任。
  • FacturXEmbedder 产出一份附带 Factur-X XML 的混合型 PDF/A-3 文档。C2paManifestEmbedder 嵌入或提取调用方提供的 ManifestStore;它不会合成或签署主张。
  • 本模块报告它所检查的内容。它不会认证文档,也不保证法规充分性。

Pro 中的 Compliance 涵盖语言标签报告、EN 16931 / Factur-X / ZUGFeRD 检查,以及 C2PA 清单嵌入/提取。扩展的归档与签名配置文件,以及带密钥保管的 C2PA 主张签署,属于 Enterprise 层级的事项,单独编写文档,且不由本模块提供。

语言标签报告、电子发票处理或 C2PA 清单嵌入没有 Core 等价物。这些都是 Pro 的新增内容。

本页仅描述外部可观察的行为以及受支持的公共 API 接口。内部命名空间路径、辅助类、机制表、运行手册文件名以及工单前缀不在范围之内。