跳转到内容
getnextpdf.com

Enterprise 版本

验证

NextPDF Enterprise 针对指定策略运行进程内、只读的结构性检查:PDF/A-4、PAdES baseline、长期验证(LTV)健康度、ZUGFeRD、美国食品药品监督管理局(FDA)21 CFR Part 11,以及美国证券交易委员会(SEC)17a-4。它返回一份结构化的技术报告。该报告不是法律意见、合规背书或认证。

此能力随 NextPDF Enterprisenextpdf/enterprise)一同提供,并通过 Enterprise 层级的授权信封激活。未持有该权益的部署不会加载此能力的类。比较各版本并获取授权

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,从而使验证与任何自动修正行为保持分离。

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

对签名而言,还有第二条重要边界。LtvHealthCheck 依据 ISO 32000-2:2020 §12.8.4.3 检查文档安全存储(DSS)的结构性存在;它并不会以密码学方式验证嵌入的在线证书状态协议(OCSP)或证书吊销列表(CRL)数据。eidasQualified() 仅在 PDF 层级验证 PAdES 结构;实际的 eIDAS 合格性取决于信任服务提供者(TSP)与合格证书,而它们不在本模块范围内。

本模块 检查结构性属性并报告 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;而本模块在进程内运行。

验证被构建为一组纯粹、只读的策略,而不是一条修正并报告的流水线。每个策略的 CompliancePolicy::validate() 接受 PDF bytes 并返回 findings;它绝不会编辑文件。因此,通过的报告绝不会是工具悄悄“帮”输入通过的产物。它仅表示该文件对照每个策略所实现的规则接受了检查。同样是这条边界,使得每份报告都携带一段内置的免责声明,也使得符合性始终是最终文件加上一个外部验证器的属性,而非生成者的自我声明。认证与法律充分性是审计师或合规团队的判断,因此本模块只报告结构,到此为止。

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

职责
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 符合性声明。

这些策略不会验证 PDF 数字签名、证书链、OCSP/CRL 响应或法律合格性;它们计算的任何 SHA-256 审计轨迹摘要都是防篡改证据检查,而非签名验证。签名(Signature)与安全(Security)模块负责处理密码学上的签名有效性、密钥保管以及联邦信息处理标准(FIPS)模式行为。

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

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

本页仅记录对外可观察的行为与受支持的公开 API 接口。内部命名空间路径、辅助类、机制表、runbook 文件名与工单前缀均不在范围内。

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 可能携带来自已签署文件与审计轨迹元数据的个人数据。

支持某项标准并不等于符合该标准,而符合也不等于认证;NextPDF 不持有任何认证,也不授予任何认证。FDA 21 CFR Part 11 与 SEC 17a-4 策略仅检查结构性属性,并不会确立法律合规。本文件并非法律意见;如需判断法律上的充分性,请咨询你的合规团队。