跳转到内容

验证

NextPDF Enterprise 会针对指定原则执行进程内、只读的结构性检查——PDF/A-4、PAdES baseline、LTV health、ZUGFeRD、FDA 21 CFR Part 11、SEC 17a-4——并返回结构化报告。这份报告属于技术性的结构检查结果,并非法律意见、合规背书或认证。

Terminal window
composer require nextpdf/enterprise:^3

Compliance 是入口。Compliance::assess($pdfBytes, $policy)(或带有 run() 的可注入实例)会将单个 CompliancePolicy 应用到 PDF bytes,并返回一个 ComplianceReport。原则是工作单位,报告则是结构化结果。

Policies 是预置原则的工厂:pdfA4()pdfA4e()pdfA4f()padesBaseline()eidasQualified()ltvHealth()zugferd($profile)fdaPart11(),以及 SEC 17a-4 家族(sec17a4()sec17a4Compatible()sec17a4Structural()sec17a4PreSign())。每一个都会返回一个 CompliancePolicy,其 validate() 方法都是纯函数:输入 PDF bytes,输出 findings。该架构维持严格的只读边界——原则绝不会变更 PDF bytes,从而将验证与任何自动修正行为区分开来。

ComplianceReport 会按 Severity(Error、Warning、Info)对 findings 分组。当没有任何 error 时,passes() 为 true;warning 不会导致报告失败。报告内置一段法律免责声明(getDisclaimer()),声明该结果仅是供参考的技术性结构检查,最终判定应由具备资质的法律或合规专业人员作出。面向用户的输出必须显示该免责声明。

对于签名,还有另一条重要边界。LtvHealthCheck 会依据 ISO 32000-2:2020 §12.8.4.3 检查 Document Security Store(DSS)的结构性存在——它并不会以密码学方式验证嵌入的 OCSP/CRL 数据。eidasQualified() 仅在 PDF 层级验证 PAdES 结构;实际的 eIDAS 合格性取决于信任服务提供者与合格证书,而这些都不在本模块范围内。

本模块会 检查结构性属性并报告 findings。它并不会认证文件,也不保证符合法规的充分性。

  • 符合性是 最终文件加上验证器 的属性,并非本函数库的属性。ISO 19005-4:2020 §5.2 要求按照该标准的规范性要求,由检查工具判定符合性,而不是由生成文件的软件判定。
  • 通过的报告,是对照每个原则所实现的规则得到的检查结果。它并不是认证。
  • FDA 21 CFR Part 11 与 SEC 17a-4 原则会检查这些法规所隐含的 结构性属性(签名存在、签署意图、审计轨迹标记、WORM 限制)。它们并不会建立这些法规下的法律合规性。法律上的充分性应由你的合规团队判断。

支援某项标准并不等于符合该标准,而符合也不等于认证。 NextPDF 并未持有任何认证,也不会授予任何认证。

  • NextPDF Core Compliance 提供字节流验证器与语法交叉检查;零 finding 的结果是一份检查结果,而非认证。
  • NextPDF Pro ComplianceEInvoiceValidator 会在电子发票层级于进程内验证 EN 16931 / Factur-X / ZUGFeRD。
  • NextPDF Enterprise Validation(本页) 为归档、签名、LTV 与受监管行业的结构性检查(FDA Part 11、SEC 17a-4)新增预置原则,并提供统一报告。Enterprise Compliance 模块是一个独立接口,会委派给外部 sidecar;而本模块则在进程内执行。
类别职责
Compliance入口:应用一个原则,返回一份报告。
Policies预置 CompliancePolicy 实例的工厂。
CompliancePolicy契约:纯粹的 validate(),返回 findings。
ComplianceReport按严重性分组的 findings;并带有法律免责声明。
ComplianceFinding单个 finding:规则 id、消息、标准参考、修正建议。
SeverityError / Warning / Info。
PdfAPolicyPDF/A-4 家族的结构性原则。
PadesValidatorPAdES baseline / eIDAS 结构性原则。
LtvHealthCheckDSS 结构性存在检查(ISO 32000-2 §12.8.4.3)。
ZugferdValidatorZUGFeRD / Factur-X PDF 层级的原则。
FdaPart11PolicyFDA 21 CFR Part 11 结构性属性原则。
Sec17a4WormPolicySEC 17a-4 WORM 结构性原则(严格程度可选)。
use NextPDF\Enterprise\Validation\Compliance;
use NextPDF\Enterprise\Validation\Policies;
$report = Compliance::assess($pdfBytes, Policies::pdfA4());
$ok = $report->passes(); // no errors
$report = (new Compliance($clock))->run($pdfBytes, Policies::fdaPart11());
foreach ($report->errors as $finding) {
$logger->warning('validation.error', [
'rule' => $finding->ruleId,
'standard' => $finding->standardReference,
]);
}
$auditLine = $report->getDisclaimer(); // surface this in user-facing output
  • warning 绝不会让报告失败;只有 error 才会将 passes() 设为 false。一份干净的报告,含义仍然是「已对照已实现的规则进行检查」,而非「合规」。
  • LtvHealthCheck 确认的是 DSS 结构,而非密码学上的吊销有效性。
  • eidasQualified() 仅检查 PDF 层级的结构;合格性取决于 TSP 与证书。
  • SEC 17a-4 家族提供可选的严格程度(Full / Compatible / Structural / PreSign);请挑选符合你工作流程阶段的那一个。

每个原则都会在进程内针对所提供的 PDF bytes 执行;成本会随文件大小与规则数量而增加。Compliance 会在报告中记录执行时长。

原则会在进程内解析 PDF bytes,且绝不会对外调用。请将来自不可信来源的 PDF bytes 视为具有敌意;纯只读架构意味着原则无法更改输入。

验证在进程内于本机进行,没有任何网络 I/O。已签署的文件与审计轨迹元数据可能带有个人数据;请对报告与 findings 应用你自己的保留与最小化控制措施。

Findings 包含规则 id、标准参考与消息——有些消息会回显从 PDF 提取出的签署者名称或原因字符串。在将日志转送到共用接收端之前,请先清理或遮蔽这些字段。

行为参考状态
符合性是依该标准判定,而非依产生者判定ISO 19005-4:2020 §5.2已反映在设计中(只读原则)
用于 LTV 的 DSS 结构性存在ISO 32000-2:2020 §12.8.4.3已检查(仅结构)
PAdES baseline 结构ETSI EN 319 142-1 §5.4.3已检查(PDF 层级)
EN 16931 profile 语意模型Factur-X 1.08 (EN 16931)辅助参考(仍由发行者负责)
FDA 21 CFR Part 11 / SEC 17a-421 CFR Part 11 / 17 CFR 240.17a-4已检查结构性属性;未经法律验证

这张表记录了每个原则检查的内容,以及其构建所依据的规范。它并不是关于认证或符合法规充分性的声明。FDA 与 SEC 行仅表示结构性属性检查;这些来源标准并不在验证语料库中,因此不带有任何 Verified 符合性声明。

这些原则并不会执行密码学上的签署或验证。密码学上的签名有效性、密钥保管以及 FIPS 模式行为,由 Signature 与 Security 模块处理。

主要输入是不可信的 PDF bytes。缓解措施包括:纯只读原则(不变更、不自动修正)、没有网络 I/O,以及每份报告都附带明确的法律免责声明,避免通过的结果被误认为认证。

NextPDF Enterprise 新增了预置的归档、签名、LTV 与受监管行业原则,并提供统一报告。比较各版本

此功能在 NextPDF Enterprise 中提供。取得授权

enterprise 层级会限制此接口。请将 Enterprise 套件与 Core 套件一同安装;原则工厂与合规入口会在执行阶段通过 Core 契约解析,因此当你升级版本时,调用方代码无需更改。

  • 每个原则的 validate() 都是纯函数——输入 PDF bytes,输出 findings——且绝不会变更输入;该架构维持严格的只读边界,与任何自动修正行为保持区分。
  • 报告会依严重性将 findings 分组;当没有任何 error 时 passes() 为 true,而 warning 绝不会让报告失败。
  • 每份报告都带有一段内置的法律免责声明,声明该结果仅是供参考的技术性结构检查;面向用户的输出必须显示该免责声明。
  • LTV health check 仅确认 DSS 的结构性存在;它并不会以密码学方式验证嵌入的 OCSP/CRL 数据。
  • eIDAS 合格原则仅在 PDF 层级验证 PAdES 结构;实际的合格性取决于信任服务提供者与证书,而这些都在本模块的范围之外。

这个公开页面仅描述对外可观察到的行为。除了已列出的公开支持类别名称外,它不含任何内部命名空间路径、不含内部 trait 名称、不含 runbook 文件名,也不含内部工单前缀。各原则的内部细节仍保留在受 NDA 规范的受限参考文件中。

NextPDF Core Compliance 提供字节流验证器与语法交叉检查;零 finding 的结果是一份检查结果,而非认证。附带统一报告的预置归档、签名、LTV 与受监管行业原则,在 Core 层级没有对应功能。

NextPDF Pro Compliance 会在电子发票层级于进程内验证 EN 16931 / Factur-X / ZUGFeRD。它并不提供预置的 PDF/A-4、PAdES、LTV、FDA Part 11 或 SEC 17a-4 结构性原则;这些仅随 nextpdf/enterprise 套件提供。Enterprise Compliance 的外部 sidecar 接口是一个独立模块。

入口、原则工厂与报告均以行为层级描述。各原则的规则内部细节,以及任何内部分类细节,均不在公开接口范围内。密码学上的签名有效性在这里被刻意排除在范围之外——它由 签名验证 的验证端以及 Security 模块处理。

验证在进程内于本机执行,没有任何网络 I/O;原则无法更改输入。运维人员会将来自不可信来源的 PDF bytes 视为具有敌意,在面向用户的输出中显示报告免责声明,并负责报告与 findings 的保留与最小化控制,而这些报告与 findings 可能带有来自已签署文件与审计轨迹元数据的个人数据。

本页被标记为 export_control_class: legal-review-required;在设置 publish 标志之前,必须先取得法律批准。支持某项标准并不等于符合该标准,而符合也不等于认证——NextPDF 并未持有任何认证,也不会授予任何认证。FDA 21 CFR Part 11 与 SEC 17a-4 原则仅检查结构性属性,并不会建立法律合规。本文件并非法律意见;如需判断法律上的充分性,请咨询你的合规团队。

  • Compliance——外部验证器 sidecar(独立接口)。
  • Evidence——封存、附时间戳的报告包。
  • Core Compliance——进程内的字节流验证器。
  • 签名验证——密码学上的 CMS / 时间戳 / 归档链验证端(与本结构性接口有所区别)。
  • 规范:PDF/A-4——所参考的标准。
  • Validation——深入参考(受限)。