PDFium Delphi Component Docs

SaveAsPdfX メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
識別メタデータと埋め込み出力プロファイルを付け、選択した ISO 15930 バリアントの PDF/X 候補を保存します

Syntax

function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;

Description

SaveAsPdfX はまず通常の SaveAs を実行し、選択した PDF/X 印刷交換バリアント向けに、保存バイトの上へ増分更新を重ねます。後処理は保存済み stream へ次の 5 種類のバイトを注入します:

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 失敗では、部分的な出力が残ることがあります

Remarks

Example

// 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;

See Also

SaveAsPdfXToStream, ValidatePdfX, PdfXConformance, SaveAsPdfA, SaveAsPdfE