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 / 等)会被保留/Metadata N 0 R 和 /OutputIntents [M 0 R] 引用/Type /OutputIntent /S /GTS_PDFX 以及必需的 /OutputCondition / /OutputConditionIdentifier / /RegistryName / /Info 条目,通过 /DestOutputProfile 引用嵌入式 ICC 配置文件Options.IccProfileData 提供 CMYK 配置文件)trailer 会被重写以添加 /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) 再执行 SaveAsPdfXOptions.Conformance 对应的标记,但无法强制执行这些内容级规则,请通过预检确认
// 捆绑 sRGB OutputIntent 的简单 PDF/X-4
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
ShowMessage('Saved PDF/X-4');
// 带有自定义 CMYK ICC 配置文件的 PDF/X-1a(例如 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;