跳到內容
getnextpdf.com

Enterprise 版本

驗證

NextPDF Enterprise 會針對具名的原則,在行程內執行唯讀的結構性檢查:PDF/A-4、PAdES baseline、長期驗證(Long-Term Validation,LTV)健全性、ZUGFeRD、美國食品藥物管理局(U.S. Food and Drug Administration,FDA)21 CFR Part 11,以及美國證券交易委員會(U.S. Securities and Exchange Commission,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,因此驗證會與任何自動修正行為保持區隔。

ComplianceReport 會依 Severity(Error、Warning、Info)將 findings 分組。沒有任何 error 時,passes() 會回傳 true;warning 不會讓報告失敗。報告內含一段內建的法律免責聲明(getDisclaimer()),說明該結果僅是供參考的技術性結構檢查,最終判定由合格的法律或合規專業人員負責。你必須在面向使用者的輸出中顯示該免責聲明。

對簽章而言,還有第二條界線很重要。LtvHealthCheck 會依 ISO 32000-2:2020 §12.8.4.3 檢查 Document Security Store(DSS)的結構性存在;它不會以密碼學方式驗證嵌入的線上憑證狀態協定(Online Certificate Status Protocol,OCSP)或憑證撤銷清單(certificate revocation list,CRL)資料。eidasQualified() 僅在 PDF 層級驗證 PAdES 結構;實際的 eIDAS 合格性取決於信任服務提供者(trust service provider,TSP)與合格憑證,這些都在本模組範圍之外。

本模組會 檢查結構性屬性並回報 findings。它不會認證文件,也不保證該文件滿足某項法規。

  • 符合性是 最終檔案加上驗證器 的屬性,而非本函式庫的屬性。ISO 19005-4:2020 §5.2 是透過檢查工具、依該標準的規範性要求判定符合性,而不是透過產生檔案的軟體。
  • 通過的報告,是對照每個原則所實作規則的檢查結果。它不是認證。
  • FDA 21 CFR Part 11 與 SEC 17a-4 原則會檢查這些法規所隱含的 結構性屬性(簽章存在、簽署意圖、稽核軌跡標記、一次寫入多次讀取(write once, read many,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 稽核軌跡摘要都是防竄改佐證檢查,而非簽章驗證。密碼學上的簽章有效性、金鑰保管,以及聯邦資訊處理標準(Federal Information Processing Standards,FIPS)模式行為,由 Signature 與 Security 模組處理。

主要輸入是不可信的 PDF bytes。緩解措施包括:純唯讀原則(不變更、不自動修正)、沒有網路 I/O,以及每份報告都附帶明確的法律免責聲明,讓通過結果不會被誤認為認證。

  • 每個原則的 validate() 都是純函式:輸入 PDF bytes,輸出 findings;它絕不會變更輸入,這個架構維持一條嚴格的唯讀界線,與任何自動修正行為區隔開來。
  • 報告會依嚴重性將 findings 分組;沒有任何 error 時 passes() 為 true,而 warning 絕不會讓報告失敗。
  • 每份報告都帶有一段內建的法律免責聲明,說明該結果僅是供參考的技術性結構檢查;你必須在面向使用者的輸出中顯示該免責聲明。
  • LTV health check 僅確認 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 原則僅檢查結構性屬性,並不會建立法律合規。本文件不是法律意見;如需判斷法律上的充分性,請洽詢你的合規團隊。