跳到內容

PDF/X 符合性:NextPDF 輸出的印刷生產用 output intent

邊界聲明。 經測試的設定檔並不等於認證。

範圍提醒(請先讀)。 ISO 15930(PDF/X 系列標準) 並未納入 NextPDF 的驗證語料庫。本頁並不主張已通過獨立的 PDF/X-4 或 PDF/X-6 認證。NextPDF 輸出的是 PDF/X 流程所倚賴的印刷生產用 output intent 與 ICC 機制。 NextPDF 會依 ISO 32000-2 §14.11.5 驗證這些內容(也就是 ISO 15930 以參考方式引用的 OutputIntent 字典),以及 ICC.1 / ISO 15076-1 設定檔結構。至於某個檔案是否符合某個 PDF/X 部別,則由外部印前 preflight 工具判定,而不是由本函式庫判定。

當你選用寬色域工作空間時,NextPDF Core 會輸出一個 /GTS_PDFX OutputIntent,並以內嵌 ICC 設定檔作為 DestOutputProfile。NextPDF Core 會將內嵌 ICC 設定檔把關到 version 4。這些都是 PDF/X-4 / PDF/X-6 preflight 會檢查的結構性前提。函式庫負責產生這些結構;是否符合,則由 preflight 工具判定。

Terminal window
composer require nextpdf/core:^3

PDF/X output intent 路徑屬於 Core 功能,由文件的 OutputColorProfile 驅動。GTS_PDFX OutputIntent 本身不需要任何 Premium 套件。

NextPDF\Core\OutputColorProfile 是工作空間的判別依據:DeviceRGB(預設,不帶寬色域 intent)、DisplayP3Rec2020A98RGBProphotoRGB。只要選用任一寬色域案例,就會啟用 PdfWriter 路徑,依 ISO 32000-2 §14.11.5 輸出:

  • 將一個 /Type /OutputIntent /S /GTS_PDFX 字典放入目錄的 /OutputIntents 陣列中;
  • 以一個內嵌 ICC 串流作為 DestOutputProfile(也就是工作空間設定檔,例如 display-p3-v4.icc);
  • 並輸出該字典所需的 OutputConditionIdentifier 與登錄資訊欄位。

NextPDF\Graphics\ColorSpace\IccVersionTier 負責把關內嵌設定檔。PDF 2.0 / PDF/A-4 / PDF/X-6 output intent 必須使用 V4requiresV4Strict() 會拒絕 v2 設定檔,以免在非 v4 的 ICC 設定檔上做出 PDF/X-6 主張。這是 PDF/X-6 preflight 會驗證的結構性前提;它本身並不是 preflight。

符號效果
OutputColorProfile(enum)用來判別工作空間;寬色域案例會觸發 /GTS_PDFX OutputIntent 的輸出。
OutputColorProfile::isWideGamut(): bool只要不是 DeviceRGB 案例,就會回傳 true。
OutputColorProfile::iccFilename(): ?string該案例所對應的內嵌 ICC 設定檔資源。
IccVersionTier::requiresV4Strict()在主張 PDF/A-4 / PDF/X-6 結構時,用於拒絕非 v4 ICC 設定檔的把關機制。
<?php
declare(strict_types=1);
require_once __DIR__ . '/vendor/autoload.php';
use NextPDF\Core\Config;
use NextPDF\Core\Document;
use NextPDF\Core\OutputColorProfile;
$out = getenv('NEXTPDF_COOKBOOK_OUTPUT') ?: __DIR__ . '/print.pdf';
$config = new Config(outputColorProfile: OutputColorProfile::DisplayP3);
$doc = Document::createStandalone($config);
$doc->setTitle('Print production sample');
$doc->writeHtml('<h1>Wide-gamut artwork</h1>');
$doc->save($out); // /GTS_PDFX OutputIntent + display-p3-v4.icc emitted here
echo "Wrote {$out} — run an external PDF/X preflight to validate.\n";

正式環境應把輸出交給外部印前 preflight(也就是收件印刷流程的權威工具)。正式環境會把 preflight 報告當成 gate(把關)。NextPDF 輸出 GTS_PDFX OutputIntent 與 v4 ICC;PDF/X-4 / PDF/X-6 是否符合,則由 preflight 工具裁定。NextPDF 並未隨附 PDF/X 驗證器。

  • DeviceRGB 不輸出任何 PDF/X intent。 預設設定檔與舊版輸出完全相同,不帶 /GTS_PDFX OutputIntent。PDF/X 流程必須明確選用寬色域設定檔。
  • v2 ICC 會擋下 PDF/X-6 主張。 requiresV4Strict() 會拒絕 v2 設定檔;不要在非 v4 的 ICC 設定檔上主張 PDF/X-6 結構。
  • 特別色與疊印。 完整的 PDF/X-1a/X-3 CMYK 加特別色流程不在 Core 的 OutputIntent 路徑範圍內。本頁只涵蓋以 ICC 為基礎的 PDF/X-4 / PDF/X-6 output intent。
  • 不主張任何認證。 輸出 OutputIntent 屬於結構性支援;是否符合 PDF/X 是 preflight 的判定結果,而非函式庫的某個狀態。

寬色域 OutputIntent 會在 save() 時額外加入一個內嵌的 ICC 串流(對該工作空間而言大小固定)。預算為時間 ≤ 1500 ms、峰值記憶體 ≤ 128 MB。

印刷生產用 output intent 屬於色彩管理 metadata,而非安全性控制。內嵌的 ICC 設定檔是公開資料。

OutputIntent 的輸出在處理程序內完成。只會寫出文件與內嵌的 ICC 設定檔。沒有任何內容離開處理程序;設定檔不帶 PII。

此範例只記錄輸出路徑與一則驗證提示。不會記錄任何文件位元組;並會遵循 NEXTPDF_COOKBOOK_OUTPUT

PDF/X 檔案並未受存取控制保護。OutputIntent 保證的是某個印刷條件下的色彩再現性,而非機密性。

PDF/X 的 OutputIntent 路徑不執行任何密碼學運算。FIPS 模式對它沒有影響。

主張規範條款參考 ID
OutputIntent 會為輸出算繪條件參照一個 DestOutputProfile ICC 串流。ISO 32000-2§14.11.5
OutputIntent 帶有 OutputConditionIdentifier 與登錄識別資訊。ISO 32000-2§14.11.5
output intent 位於文件目錄的 OutputIntents 陣列中。ISO 32000-2§14.11.5
符合規範的 ICC 設定檔帶有一個含版本欄位的標頭定義。ICC.1 / ISO 15076-1§7
內嵌的 DestOutputProfile 採用 ICC v4 設定檔結構。ICC.1 / ISO 15076-1§7

ISO 15930(PDF/X)不在驗證語料庫內。上述主張限於 PDF/X preflight 會檢查的 ISO 32000-2 §14.11.5 與 ICC.1 前提。引用一律採用條款 ID,並加上指向驗證語料庫(manifest)的 reference_id 指標。不會重製任何標準原文。