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 工具判定。
composer require nextpdf/core:^3PDF/X output intent 路徑屬於 Core 功能,由文件的 OutputColorProfile 驅動。GTS_PDFX OutputIntent 本身不需要任何 Premium 套件。
概念總覽
標題為「概念總覽」的區段NextPDF\Core\OutputColorProfile 是工作空間的判別依據:DeviceRGB(預設,不帶寬色域 intent)、DisplayP3、Rec2020、A98RGB、ProphotoRGB。只要選用任一寬色域案例,就會啟用 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 必須使用 V4。requiresV4Strict() 會拒絕 v2 設定檔,以免在非 v4 的 ICC 設定檔上做出 PDF/X-6 主張。這是 PDF/X-6 preflight 會驗證的結構性前提;它本身並不是 preflight。
API 介面
標題為「API 介面」的區段| 符號 | 效果 |
|---|---|
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_PDFXOutputIntent。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 設定檔是公開資料。
資料落地與 PII 緩解
標題為「資料落地與 PII 緩解」的區段OutputIntent 的輸出在處理程序內完成。只會寫出文件與內嵌的 ICC 設定檔。沒有任何內容離開處理程序;設定檔不帶 PII。
安全遙測與日誌清理
標題為「安全遙測與日誌清理」的區段此範例只記錄輸出路徑與一則驗證提示。不會記錄任何文件位元組;並會遵循 NEXTPDF_COOKBOOK_OUTPUT。
威脅模型
標題為「威脅模型」的區段PDF/X 檔案並未受存取控制保護。OutputIntent 保證的是某個印刷條件下的色彩再現性,而非機密性。
FIPS 模式行為
標題為「FIPS 模式行為」的區段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 指標。不會重製任何標準原文。