Enterprise 版本
验证
NextPDF Enterprise 针对指定策略运行进程内、只读的结构性检查:PDF/A-4、PAdES baseline、长期验证(LTV)健康度、ZUGFeRD、美国食品药品监督管理局(FDA)21 CFR Part 11,以及美国证券交易委员会(SEC)17a-4。它返回一份结构化的技术报告。该报告不是法律意见、合规背书或认证。
可用性与授权
标题为“可用性与授权”的章节此能力随 NextPDF Enterprise(nextpdf/enterprise)一同提供,并通过 Enterprise 层级的授权信封激活。未持有该权益的部署不会加载此能力的类。比较各版本并获取授权。
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 检查文档安全存储(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
Compliance(EInvoiceValidator) 在电子发票层级于进程内验证 EN 16931 / Factur-X / ZUGFeRD。 - NextPDF Enterprise Validation(本页) 为归档、签名、LTV 与受监管行业的结构性检查(FDA Part 11、SEC 17a-4)新增预置策略,并采用统一的报告格式。Enterprise Compliance 模块是一个独立接口,会委派给外部 sidecar;而本模块在进程内运行。
为什么这样设计
标题为“为什么这样设计”的章节验证被构建为一组纯粹、只读的策略,而不是一条修正并报告的流水线。每个策略的 CompliancePolicy::validate() 接受 PDF bytes 并返回 findings;它绝不会编辑文件。因此,通过的报告绝不会是工具悄悄“帮”输入通过的产物。它仅表示该文件对照每个策略所实现的规则接受了检查。同样是这条边界,使得每份报告都携带一段内置的免责声明,也使得符合性始终是最终文件加上一个外部验证器的属性,而非生成者的自我声明。认证与法律充分性是审计师或合规团队的判断,因此本模块只报告结构,到此为止。
设计背景:可以交给审计师的合规。
API 接口
标题为“API 接口”的章节| 类 | 职责 |
|---|---|
Compliance | 入口:应用一个策略并返回一份报告。 |
Policies | 预置 CompliancePolicy 实例的工厂。 |
CompliancePolicy | 契约:纯粹的 validate(),返回 findings。 |
ComplianceReport | 按严重性分组的 findings;并携带法律免责声明。 |
ComplianceFinding | 单个 finding:规则 id、消息、标准参考、修正建议。 |
Severity | Error / Warning / Info。 |
PdfAPolicy | PDF/A-4 家族的结构性策略。 |
PadesValidator | PAdES baseline / eIDAS 结构性策略。 |
LtvHealthCheck | DSS 结构性存在检查(ISO 32000-2 §12.8.4.3)。 |
ZugferdValidator | ZUGFeRD / Factur-X PDF 层级的策略。 |
FdaPart11Policy | FDA 21 CFR Part 11 结构性属性策略。 |
Sec17a4WormPolicy | SEC 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 视为具有敌意;纯只读架构可防止策略更改输入。
数据驻留与 PII 缓解措施
标题为“数据驻留与 PII 缓解措施”的章节验证在进程内于本机进行,没有任何网络 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-4 | 21 CFR Part 11 / 17 CFR 240.17a-4 | 已检查结构性属性;未经法律验证 |
这张表记录了每个策略检查的内容,以及支撑该策略的规范。它并不是关于认证或法规充分性的声明。FDA 与 SEC 行仅是结构性属性检查;这些来源标准不在验证语料库中,因此不带有任何 Verified 符合性声明。
FIPS 模式行为
标题为“FIPS 模式行为”的章节这些策略不会验证 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 文件名与工单前缀均不在范围内。
Core 后备
标题为“Core 后备”的章节NextPDF Core Compliance 提供字节流验证器与语法交叉检查;零 finding 的结果是一份检查结果,而非认证。附带统一报告格式的预置归档、签名、LTV 与受监管行业策略,在 Core 层级没有对应功能。
Pro 后备
标题为“Pro 后备”的章节NextPDF Pro Compliance 在电子发票层级于进程内验证 EN 16931 / Factur-X / ZUGFeRD。它不提供预置的 PDF/A-4、PAdES、LTV、FDA Part 11 或 SEC 17a-4 结构性策略;这些仅随 nextpdf/enterprise 套件提供。Enterprise Compliance 的外部 sidecar 接口是一个独立模块。
Enterprise 边界说明
标题为“Enterprise 边界说明”的章节入口、策略工厂与报告均以行为层级描述。各策略的规则内部细节以及任何内部分类细节,均不在公开接口范围内。密码学上的签名有效性在此被刻意排除在范围之外;签名验证 的验证端与安全(Security)模块负责处理它。
部署边界
标题为“部署边界”的章节验证在进程内于本机运行,没有任何网络 I/O;策略无法更改输入。运维人员将来自不可信来源的 PDF bytes 视为具有敌意,在面向用户的输出中显示报告免责声明,并负责报告与 findings 的保留与最小化控制,而这些报告与 findings 可能携带来自已签署文件与审计轨迹元数据的个人数据。
法律合规边界
标题为“法律合规边界”的章节支持某项标准并不等于符合该标准,而符合也不等于认证;NextPDF 不持有任何认证,也不授予任何认证。FDA 21 CFR Part 11 与 SEC 17a-4 策略仅检查结构性属性,并不会确立法律合规。本文件并非法律意见;如需判断法律上的充分性,请咨询你的合规团队。
另请参阅
标题为“另请参阅”的章节- Compliance——外部验证器 sidecar(独立接口)。
- Evidence——封存、附时间戳的报告包。
- Core Compliance——进程内的字节流验证器。
- 签名验证——密码学上的 CMS / 时间戳 / 归档链验证端(与本结构性接口不同)。
- 规范:PDF/A-4——所参考的标准。
- 验证——深入参考——各策略的规则内部细节与完整的类参考。