一致性索引:NextPDF 會產出什麼,以及由誰判定是否一致
界線聲明。 支援某個設定檔並不等於一致; 一致與否由獨立的驗證器(validator)判定。
本頁整理 NextPDF Core 鎖定的標準設定檔 Index(索引)。本節每一頁都遵循一條直接取自標準本身的規則:本函式庫產出的是意圖一致於某個設定檔的輸出;而某個檔案是否真的一致,則由獨立的驗證器(validator)判定,可能是 veraPDF、某個 PDF/UA 檢查器、某個 Schematron 電子發票驗證器,或接收方主管機關。ISO 19005-4 §6.7.3 對 PDF/A 明確指出:寫入器發出的 pdfaid:part/pdfaid:rev 標記「本身並不決定一致性」。判定須依標準的一致性條款所規定的方式執行,並由產出函式庫以外的程序進行。
NextPDF 不主張一致性;它只發出某個設定檔所要求的結構性產物。當某個設定檔設有把關(gate)時,NextPDF 會在 API 邊界快速失敗(fail fast),讓缺漏的能力呈現為明確錯誤,而不是默默產出不一致的檔案。
composer require nextpdf/core:^3部分設定檔需要 Premium 的 nextpdf/pro 套件(各頁另有標註)。Core 隨附一致性判別器(NextPDF\Conformance\ConformanceMode)以及 NextPDF\Compliance 中的位元組串流驗證器;歸檔設定檔所需的 OutputIntent/ICC/XMP 撰寫路徑則隨附於 nextpdf/pro。
概念總覽
標題為「概念總覽」的區段NextPDF 透過單一具型別的判別器 NextPDF\Conformance\ConformanceMode,將文件路由到一致性契約。這個 enum 是「寫入器必須遵循哪一份 ISO 契約」的唯一事實來源。它定義下列 case:Plain、PdfUa1、PdfUa2、PdfA2、PdfA3/PdfA3b/PdfA3u,以及 PdfA4/PdfA4e/PdfA4f。寫入器讀取這個模式並發出所需結構;它從不設定「這個檔案一致」的旗標。
本節每一頁都建立三條界線:
- 支援 ≠ 一致。 發出某個設定檔所要求的中繼資料是一種能力,不是判定結果。
- 驗證 ≠ 認證。 執行一個回報零錯誤的驗證器可作為佐證,但不是憑證。
- 已測試的設定檔 ≠ 認證。 NextPDF 本身的測試斷言所發出的位元組與引用條款相符;它們並非經認可的稽核。
API 介面
標題為「API 介面」的區段下列是 NextPDF\Core\Document 上的一致性進入點:
| 方法 | 效果 | 層級 |
|---|---|---|
enablePdfA(?object $version = null) | 將文件路由到某個 PDF/A 的 ConformanceMode case(預設為 PdfA4);在 save() 時排程 OutputIntent + ICC + XMP。若 nextpdf/pro 不存在,會擲出 InvalidConfigException。 | Core API,Premium 引擎 |
enableTaggedPdf(string $lang = 'en', ?ConformancePolicy $policy = null) | 設定 ConformanceMode::PdfUa2,接上具標記內容的發出器,並依政策驗證語言標籤。 | Core(核心) |
程式碼範例——快速上手
標題為「程式碼範例——快速上手」的區段<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Document;
$doc = Document::createStandalone();$doc->enableTaggedPdf('en'); // ConformanceMode::PdfUa2$doc->setTitle('Conformance index sample');$doc->writeHtml('<h1>Hello</h1><p>Tagged content.</p>');$doc->save(getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/out.pdf');程式碼範例——正式環境
標題為「程式碼範例——正式環境」的區段不適用。可執行的正式環境範例放在各設定檔的專屬頁面;本索引僅作為路由頁。
邊界情況與陷阱
標題為「邊界情況與陷阱」的區段- 本索引不提出任何行為宣告。 經驗證的宣告表放在各設定檔的專屬頁面。本頁只陳述那條全域適用的規則。
- 中繼資料裡的設定檔名稱是一項宣告,不是證明。 讀到
pdfaid:part=4的讀取器知道的是產出者的意圖,而不是這個檔案確實一致。 - 能力把關採快速失敗(fail fast)。 只安裝 Core 卻呼叫 Premium 歸檔路徑時,會得到包含升級訊息的
InvalidConfigException,絕不會默默產出不一致的檔案。
不適用於本索引。各設定檔的專屬頁面各自宣告自己的預算。
安全注意事項
標題為「安全注意事項」的區段一致性設定檔約束的是結構,而非威脅態勢。PDF/A-4 禁止加密;PDF/UA-2 則強制要求可存取的結構。兩者都不是安全控制措施。關於本引擎的安全模型,請參閱 信任中心一節。
一致性
標題為「一致性」的區段| 宣告 | 規範 | 條款 | 參考 ID(reference_id) |
|---|---|---|---|
產出者的 pdfaid 標記本身並不決定一致性;判定須依標準的一致性條款執行(也就是由 validator/process 進行,而非函式庫)。 | ISO 19005-4 | §6.7.3 | |
| PDF/UA-2 的一致性是依標準的一致性要求來評估,而不是由產出軟體主張。 | ISO 14289-2 | §7.2.2 | |
| 一個一致的 PDF 2.0 檔案必須滿足所定義的檔案結構與 trailer 要求;本函式庫會發出相應結構,但不會裁決結果。 | ISO 32000-2 | §7.5.5 |
引用透過條款 ID 與 reference_id 指標指向驗證語料庫。不重製任何標準文字。