跳到內容
getnextpdf.com

Enterprise 版本

合規

NextPDF Enterprise 會將一份完成的 PDF 路由到一個外部驗證工具——veraPDF、EU DSS 或 Mustang/KoSIT——並回傳一份統一、結構化的結果。該結果記錄外部工具檢查了什麼。它不是憑證、不是法律意見,也不是文件滿足任何法規的保證。

此能力隨 NextPDF Enterprisenextpdf/enterprise)出貨,並以一份 Enterprise 層級的授權封套啟用。缺少該授權的部署不會載入此能力的類別。比較各版本並取得授權

Terminal window
composer require nextpdf/enterprise:^3

此模組是一道閘道,而非一個驗證器。一致性判定來自外部工具。閘道會選定正確的工具、委派給它,並將答案正規化。

ComplianceGateway 接受一個 ComplianceProfile 與 PDF 位元組。它會解析哪一個已註冊的 ExternalValidator 處理該設定檔、檢查 sidecar 是否可連線、委派該檢查,並回傳一個 ExternalValidationResultComplianceProfile 列舉支援的目標:PDF/A-1b/2b/3b/4/4f、PDF/UA-1/2、PDF 2.0 Arlington 結構模型、PAdES B-B/B-T/B-LT/B-LTA、ZUGFeRD 2.4 / Factur-X 1.08,以及 EN 16931。每一個案例都對應到一個規範性參考與一個外部工具。

ExternalValidator 是每一個 sidecar 橋接所實作的合約:VeraPdfValidator(veraPDF REST)、DssValidator(EU DSS REST),以及 ZugferdExternalValidator(Mustang/KoSIT)。每一個都透過一個 PSR-18 HTTP 用戶端與其 sidecar 通訊,並將工具特定的回應轉譯為一個 ExternalValidationResult

一項 fail-closed 原則治理 sidecar 缺席。預設情況下,一個不可用的 sidecar 會引發 ComplianceSidecarUnavailableException:缺少驗證器是一種「無法檢查」,而不是通過。一個明確的選用模式會將該狀況降級為一則已記錄的警告與一個 null 結果,使呼叫端能偵測「未檢查」並自行決定。AiReadyCertifier 是一個獨立的接縫:它評估三項就緒準則,並蓋上一個 nextpdf: XMP 來源出處區塊。它的「certified」級別是一個 NextPDF 內部的就緒標籤。它不是標準認證,也不授予任何法規地位。

此模組會 委派一次檢查並回報結果。它不主張一份文件在法律上合規、已認證或具法律約束力。

  • 一致性是 最終檔案加上一個驗證器 的屬性,而非本函式庫的屬性。ISO 19005-4:2020 §5.2 將義務置於一個合規處理器之上,並依該標準的規範性要求判定一致性——由一個檢查工具,而非由產生檔案的軟體判定。
  • 一個零非一致性的結果,是針對外部工具所實作條款的一次檢查結果。它不是一份概括的憑證。
  • 一個不可用的 sidecar 代表 未檢查。它絕不代表通過。

支援某個設定檔不等於符合它,而符合也不等於認證。NextPDF 並未持有任何認證,也不授予任何認證。請洽詢你的合規團隊以判斷法規上的充分性。

請精確閱讀各版本。它們做的事情不同。

  • NextPDF Core Conformance / Compliance 在行程內執行位元組串流與文法檢查,並承載一致性模式鑑別子。Core 會發出某標準所定義的結構。它不認證該結果。
  • NextPDF Pro ComplianceEInvoiceValidator在行程內 驗證 EN 16931 / Factur-X / ZUGFeRD,沒有任何外部 sidecar。
  • NextPDF Enterprise Compliance(本頁) 委派給 外部驗證器 sidecar(veraPDF、EU DSS、Mustang/KoSIT),並以一項 fail-closed 原則將結果正規化。

Pro 的行程內電子發票驗證器與 Enterprise 的外部 ZUGFeRD sidecar 是不同的介面。請勿將兩者混為一談。

一致性是完成檔案由一個檢查工具所量測的屬性,而非產生檔案之函式庫的屬性。因此閘道將判定委派給具權威性的外部工具,本身只做解析、委派與正規化。在行程內自我主張一致性,會把「依標準建置」與「經獨立確認」混為一談,而這正是標準所禁止的。fail-closed 預設由此而來:一個無法連線的 sidecar 是一種「無法檢查」,因此它會引發例外而非通過。這使得一次缺失的檢查無法偽裝成一致性,也使 NextPDF 對於自身未持有任何認證一事保持誠實。

設計背景:你能交給稽核員的合規

類別職責
ComplianceGateway為一個設定檔解析工具;委派;套用 fail-closed 原則。
ComplianceProfile支援設定檔的 enum,每一個都帶有一個標準參考與工具。
ExternalValidator外部 sidecar 橋接的合約。
ExternalValidationResult統一結果:設定檔、工具、一致性旗標、非一致性。
NonConformance來自外部工具的一項非一致性 finding。
VeraPdfValidatorveraPDF REST 橋接(PDF/A、PDF/UA、Arlington)。
DssValidatorEU DSS REST 橋接(PAdES 層級)。
ZugferdExternalValidatorMustang/KoSIT 橋接(ZUGFeRD / Factur-X / EN 16931)。
AiReadyCertifier就緒評估,加上一個 nextpdf: XMP 來源出處戳記。
use NextPDF\Enterprise\Compliance\ComplianceProfile;
$result = $gateway->validate($pdfBytes, ComplianceProfile::PdfA4);
$passed = $result?->passes(); // null = sidecar unavailable (not checked)
$result = $gateway->validate($pdfBytes, ComplianceProfile::PdfA4);
if ($result === null) {
$logger->error('compliance.not_checked', ['profile' => 'pdfa-4']);
// Treat "not checked" as a blocker, never as a pass.
return;
}
foreach ($result->nonConformances as $nc) {
$logger->warning('compliance.nonconformance', ['profile' => $result->profile->value]);
}
// A conformant=true result is one input to your decision, not a verdict you own.
  • 一個不可用的 sidecar 預設會引發 ComplianceSidecarUnavailableException;選用模式會回傳 null。無論哪一種,文件都 未被檢查
  • 一個沒有已註冊驗證器的設定檔,會引發一個引數錯誤,而非默默通過。
  • buildComplianceMatrix() 會為可追溯性記錄工具版本與一個 commit SHA;該矩陣回報工具輸出,它不認證該輸出。

成本主要由外部 sidecar 來回,以及送往它的文件大小決定。閘道解析與結果正規化的成本,在每次呼叫中為常數。

PDF 位元組透過一個 PSR-18 用戶端送往 sidecar。VeraPdfValidator 只剖析 JSON 回應(沒有 XML、XXE-clean)。請將 sidecar 端點視為一道信任邊界:釘選 sidecar、限制其網路觸及範圍,並驗證其 TLS。

完整的 PDF 位元組串流會傳輸到所設定的 sidecar。若文件承載個人或受監管資料,請在你自己的控制措施下於區域內託管 sidecar。閘道不進行任何其他對外呼叫。請對結果與日誌套用保留與最小化控制措施。

閘道日誌包含設定檔名稱、工具名稱、斷言數量,以及非一致性數量。它們不包含文件內容。若設定檔或檔名欄位敏感,請在轉送日誌前先將其清洗。

行為參考狀態
一致性由一個檢查工具判定,而非由產生者判定ISO 19005-4:2020 §5.2已反映在設計中(fail-closed 閘道)
PDF/A-4 檔案要求ISO 19005-4:2020 §6.6.4委派給 veraPDF
PDF/UA-2 一致性(檔案的屬性)ISO 14289-2:2024 §6委派給 veraPDF
PAdES baseline 層級ETSI EN 319 142-1 §5.4.3委派給 EU DSS

此表記錄 NextPDF 建置時所依據的規格,以及外部工具檢查什麼。它不是關於認證或法規充分性的聲明。

此模組不執行任何密碼學簽署。簽章一致性委派給 EU DSS;金鑰保管與 FIPS 模式簽署不在其範圍內(請參閱 Signature 與 Security 模組)。

主要輸入是不可信的 PDF 位元組與一個 sidecar 回應。緩解措施:VeraPdfValidator 中僅限 JSON 的回應剖析、一道已釘選的 sidecar 信任邊界,以及一項 fail-closed 原則,使一個無法連線的驗證器絕不會解析為通過。

  • 此模組是一道閘道,而非一個驗證器:一致性判定來自一個外部工具(veraPDF、EU DSS 或 Mustang/KoSIT),而閘道會選定工具、委派,並將答案正規化。
  • 一個零非一致性的結果,是針對外部工具所實作條款的一次檢查結果——而非一份概括的憑證。
  • 一個不可用的 sidecar 是 fail-closed:它預設會引發一個例外,或在明確的選用模式下回傳一個 null 結果;無論哪一種,文件都 未被檢查,絕不通過。
  • 一個沒有已註冊驗證器的設定檔,會引發一個引數錯誤,而非默默通過。
  • AiReadyCertifier 的「certified」級別是一個 NextPDF 內部的就緒標籤,不是標準認證,也不授予任何法規地位。

本頁僅記錄外部可觀察的行為與所支援的公開 API 介面。內部命名空間路徑、輔助類別、機制表格、runbook 檔名,以及工單前綴皆不在範圍內。

NextPDF Core Conformance / Compliance 在行程內執行位元組串流與文法檢查,並承載一致性模式鑑別子;它會發出某標準所定義的結構,但不認證該結果,也不委派給外部 sidecar。外部驗證器閘道沒有 Core 層級的對應。

NextPDF Pro Compliance 會在行程內驗證 EN 16931 / Factur-X / ZUGFeRD,沒有任何外部 sidecar。Pro 的行程內電子發票驗證器與 Enterprise 的外部 ZUGFeRD sidecar 是不同的介面;外部驗證器閘道僅隨 nextpdf/enterprise 套件提供。請勿將兩者混為一談。

閘道、設定檔對工具的解析,以及結果正規化以行為層級描述。各 sidecar 橋接的內部實作、工具特定的回應轉譯,以及任何內部協調細節,皆不在公開介面範圍內。

完整的 PDF 位元組串流會傳輸到所設定的 sidecar。操作者託管並營運各 sidecar、釘選它們、限制其網路觸及範圍,並驗證其 TLS——sidecar 端點是一道信任邊界。若文件承載個人或受監管資料,請在你自己的控制措施下於區域內託管 sidecar,並對結果與日誌套用保留與最小化控制措施。

支援某個設定檔不等於符合它,而符合也不等於認證——NextPDF 並未持有任何認證,也不授予任何認證。本文件不是法律意見;請洽詢你的合規團隊以判斷法規上的充分性。