function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;
SaveAsPdfX 會先執行一般的 SaveAs,接著在儲存的位元組上分層進行增量更新,這會將檔案提升至 PDF/X 相容性 — 這是圖形藝術行業中所使用 ISO 15930 印刷交換標準系列。後處理會將五種類別的位元組注入儲存的串流中:
pdfxid:GTS_PDFXVersion,PDF/X-1a / PDF/X-3 另含 pdfxid:GTS_PDFXConformance),再加上 pdfxid 命名空間對應的 pdfaExtension:schemas 描述,以及 Title / Author / Producer / dates 的 Dublin Core / xmp / pdf 屬性橋接/GTS_PDFXVersion、可選的 /GTS_PDFXConformance(僅 PDF/X-1a / PDF/X-3 使用,PDF/X-4 已棄用這個項目)以及 /Trapped 名稱(預設為 /False)。既有的 Info 項目(Title / Author / Subject / etc.)都會保留/Metadata N 0 R 與 /OutputIntents [M 0 R] 參照/Type /OutputIntent /S /GTS_PDFX 以及必要的 /OutputCondition / /OutputConditionIdentifier / /RegistryName / /Info 項目,並透過 /DestOutputProfile 參照內嵌 ICC profileOptions.IccProfileData 提供 CMYK profile 供商業印刷使用trailer 會被重寫以新增 /ID 陣列。輸出在原始 PDF 結尾之前都會和 base SaveAs 的結果完全一致;只有增量更新會被附加上去。兩個多載的差別只在於設定要怎麼傳入:只傳檔名的形式會使用 TPdfXSaveOptions.Default(PDF/X-4 + sRGB + /Trapped /False),並從 FPDF_GetMetaText 與 FPDF_GetFileIdentifier 自動填入 Info / DocumentId 欄位
成功時傳回 True。若 base SaveAs 失敗,或增量更新無法附加,則傳回 False
SaveAsPdfX 會附加 ISO 15930 規定的檔案格式標記,但 不會 嵌入遺失的字型、為 PDF/X-1a / PDF/X-3 移除透明度、移除 JavaScript 或可見註解,也不會正規化 OPI / Reference XObjects。文件的頁面內容是否已符合所選 PDF/X 符合等級,仍是呼叫端的責任。可用 ValidatePdfX 找出這個方法處理的檔案格式層級問題,內容層級檢查則可搭配 callas pdfaPilot 或 Ghent PDF Workgroup Output SuiteOptions.IccProfileData 提供目標印刷條件的 ICC 位元組(FOGRA39、ISO Coated v2、GRACoL2006_Coated1v2、JapanColor2011Coated 等),並相應更新 OutputConditionIdentifier / RegistryName / OutputIntentInfoSaveAs(..., saRemoveSecurity) 再執行 SaveAsPdfXSaveAsPdfX 只會附加符合 Options.Conformance 的標記,無法強制這些內容層級規則。請透過預檢確認
// 內建 sRGB OutputIntent 的簡單 PDF/X-4
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
ShowMessage('Saved PDF/X-4');
// PDF/X-1a with a custom CMYK ICC profile (e.g. FOGRA39)
var
Opts: TPdfXSaveOptions;
begin
Opts := TPdfXSaveOptions.Default;
Opts.Conformance := pxc1a;
Opts.IccProfileData := TFile.ReadAllBytes('C:\ICC\FOGRA39.icc');
Opts.OutputCondition := 'Coated FOGRA39 (ISO 12647-2:2004)';
Opts.OutputConditionIdentifier:= 'FOGRA39';
Opts.RegistryName := 'http://www.color.org';
Opts.Trapped := ptFalse;
Pdf1.SaveAsPdfX('C:\AdProof.cmyk.pdfx.pdf', Opts);
end;