function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;
SaveAsPdfX はまず通常の SaveAs を実行し、選択した PDF/X 印刷交換バリアント向けに、保存バイトの上へ増分更新を重ねます。後処理は保存済み stream へ次の 5 種類のバイトを注入します:
pdfxid:GTS_PDFXVersion、PDF/X-1a / PDF/X-3 ではさらに pdfxid:GTS_PDFXConformance)。pdfxid 名前空間に対応する pdfaExtension:schemas 記述と、Title / Author / Producer / 日付のブリッジ済み Dublin Core / xmp / pdf プロパティも含みます/GTS_PDFXVersion、省略可能な /GTS_PDFXConformance(PDF/X-1a / PDF/X-3 のみ。PDF/X-4 はこの entry を非推奨)、/Trapped 名(デフォルトは /False)を加えて書き直された Document Information Dictionary。既存の Info entry(Title / Author / Subject など)は保持されます/Metadata N 0 R と /OutputIntents [M 0 R] 参照を持つ、更新済みドキュメントカタログ/Type /OutputIntent /S /GTS_PDFX と構成された output-condition entry を持ち、/DestOutputProfile で埋め込み ICC プロファイルを参照する OutputIntent 辞書trailer は /ID 配列を加えるために書き直されます。出力は元の PDF の終端まではベースの SaveAs 結果とバイト単位で同一で、追加されるのは増分更新だけです。2 つのオーバーロードの違いは設定の渡し方だけで、ファイル名だけの形式は TPdfXSaveOptions.Default(PDF/X-4 + sRGB + /Trapped /False)を使い、Info / DocumentId フィールドを FPDF_GetMetaText と FPDF_GetFileIdentifier から自動補完します
用意したバイト列の書き込みが完了すると True を返します。ドキュメントが非アクティブな場合やベースの保存に失敗した場合は False を返します
シリアライズに成功しても、完全な PDF/X 準拠が確定するわけではありません
pxc1a の場合、IccProfileData には構造的に有効な ICC v2 出力プロファイルを指定する必要があります。device class は prtr、data color space は CMYK、PCS は Lab または XYZ で、必要な双方向 LUT を備えていること
欠落、RGB、切り詰め、誤分類、未対応のいずれかであるプロファイルデータは EArgumentException を発生させます。PDF/X-1a に sRGB へのフォールバックはありません
PDF/X-1a では、OutputCondition、OutputConditionIdentifier、OutputIntentInfo が組み込みの sRGB IEC61966-2.1 デフォルトのままになっていると、それらは検証済みプロファイルの description で置き換えられます
プロファイルに description がない場合は、空でなくデフォルト値でもない OutputConditionIdentifier を指定してください。これが置き換えラベルになり、指定しなければ呼び出しは EArgumentException を発生させます
呼び出し側が明示したラベルは保持されます
シリアライズとこれらのプロファイル チェックは、出力先ファイルを書き込み用に開くより前に、一時的な保存ストアの中で完了します そのため、プロファイル検証が例外を出した場合やベースの保存に失敗した場合でも、既存の出力先は変更されません これはアトミックなファイル置き換えの保証ではありません。出力先を開いた後の I/O 失敗では、部分的な出力が残ることがあります
saRemoveSecurity が使われますOptions.Conformance に対応するマーカーを付けますが、これらのコンテンツレベルの規則を強制することはできません。プリフライトで確認してください
// Simple PDF/X-4 with bundled sRGB OutputIntent
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;