跳到內容

一致性索引: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),讓缺漏的能力呈現為明確錯誤,而不是默默產出不一致的檔案。

Terminal window
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:PlainPdfUa1PdfUa2PdfA2PdfA3/PdfA3b/PdfA3u,以及 PdfA4/PdfA4e/PdfA4f。寫入器讀取這個模式並發出所需結構;它從不設定「這個檔案一致」的旗標。

本節每一頁都建立三條界線:

  • 支援 ≠ 一致。 發出某個設定檔所要求的中繼資料是一種能力,不是判定結果。
  • 驗證 ≠ 認證。 執行一個回報零錯誤的驗證器可作為佐證,但不是憑證。
  • 已測試的設定檔 ≠ 認證。 NextPDF 本身的測試斷言所發出的位元組與引用條款相符;它們並非經認可的稽核。

下列是 NextPDF\Core\Document 上的一致性進入點:

方法效果層級
enablePdfA(?object $version = null)將文件路由到某個 PDF/A 的 ConformanceMode case(預設為 PdfA4);在 save() 時排程 OutputIntent + ICC + XMP。若 nextpdf/pro 不存在,會擲出 InvalidConfigExceptionCore 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 指標指向驗證語料庫。不重製任何標準文字。