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 / 日期的桥接 Dublin Core / xmp / pdf 属性的 XMP 元数据流/GTS_PDFXVersion、可选 /GTS_PDFXConformance(仅 PDF/X-1a / PDF/X-3;PDF/X-4 弃用此条目)和 /Trapped 名称(默认为 /False)的重写文档信息字典。现有 Info 条目(Title / Author / Subject / 等)被保留/Metadata N 0 R 和 /OutputIntents [M 0 R] 引用的更新文档目录/Type /OutputIntent /S /GTS_PDFX 和所需 /OutputCondition / /OutputConditionIdentifier / /RegistryName / /Info 条目的 OutputIntent 字典,通过 /DestOutputProfile 引用嵌入的 ICC 配置文件Options.IccProfileData 为商业打印提供 CMYK 配置文件)尾部被重写以添加 /ID 数组。
输出在原始 PDF 结束之前与基础 SaveAs 结果字节完全一致;
只有增量更新被追加。
两个重载仅在传入配置的方式上不同:
仅文件名形式使用 TPdfXSaveOptions.Default
(PDF/X-4 + sRGB + /Trapped /False),
从 FPDF_GetMetaText 和
FPDF_GetFileIdentifier 自动填充 Info / DocumentId 字段
成功时返回 True。如果
基础 SaveAs 失败或增量更新无法
附加,则返回 False
Options.IccProfileData 提供目标印刷机特性化的 ICC 字节(FOGRA39、ISO Coated v2、GRACoL2006_Coated1v2、JapanColor2011Coated 等),并相应更新 OutputConditionIdentifier / RegistryName / OutputIntentInfoSaveAs(..., saRemoveSecurity)Options.Conformance 的标记,但无法强制这些内容级规则。通过预检确认
// 带捆绑 sRGB OutputIntent 的简单 PDF/X-4
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
ShowMessage('Saved PDF/X-4');
// 带自定义 CMYK ICC 配置文件(例如 FOGRA39)的 PDF/X-1a
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;