TPdfUaSaveOptions.PdfUa2 で構成した場合は PDF/UA-2 を保存しますfunction SaveAsPdfUa(const FileName: string): Boolean; overload;
function SaveAsPdfUa(const FileName: string; const Options: TPdfUaSaveOptions): Boolean; overload;
SaveAsPdfUa はまず通常の SaveAs を実行し、その保存済みバイトの上にインクリメンタル更新を重ねて、ファイルを PDF/UA-1 または PDF/UA-2 ドキュメントへ昇格させます。後処理は保存されたストリームへ 4 種類のマーカーを注入します:
pdfuaid:part = 1) と対応する pdfaExtension:schemas 記述、必須の dc:title エントリ (ISO 14289-1 §7.1)、そしてブリッジされた Info 辞書フィールド (Author、Subject、Producer、Keywords、CreationDate、ModDate など) を宣言する XMP メタデータストリーム/MarkInfo << /Marked true /Suspects false >> (§7.1)/ViewerPreferences << /DisplayDocTitle true >> (§7.1)Options.Language が BCP 47 タグを供給する場合の、カタログ /Lang (xx) (§7.2)。トレーラーにも /ID 配列が設定されます (利用可能なら FPDF_GetFileIdentifier から再利用し、なければソースバイトから決定論的に導出されます)出力は元の PDF の終端まではベースの SaveAs 結果とバイト単位で同一で、追加されるのはインクリメンタル更新のみです。PDF/UA を理解しない既存のリーダーでも、通常の SaveAs とまったく同じようにファイルをレンダリングします。2 つのオーバーロードの違いは構成の渡し方だけです。ファイル名のみの形式は FPDF_GetMetaText / FPDF_GetFileIdentifier / FPDFCatalog_GetLanguage からの自動設定付きの TPdfUaSaveOptions.Default を使用し、TPdfUaSaveOptions 形式では Title、Author、Subject、Keywords、Creator、Producer、CreationDate、ModDate、Language、DocumentId、InstanceId、および pdfuaid の Part、Revision、Amd、Corr 識別子を呼び出し側が上書きできます
TPdfUaSaveOptions.PdfUa2 は Part 2 を選択し、既定の pdfuaid:rev 値 2024 を供給し、カタログ /Version /2.0 を書き込みます。そのためインクリメンタル更新された PDF 1.x ソースの実効バージョンは PDF 2.0 になります
成功すると True を返します。ベースの SaveAs が失敗した場合や、インクリメンタル更新を添付できなかった場合 (PDF が短すぎる、無効なトレーラー、暗号化されたソース) は False を返します
SaveAs(..., saRemoveSecurity) を呼び出してください
// Simple PDF/UA-1 output, options auto-populated from the document
if Pdf1.SaveAsPdfUa('C:\Report.pdfua.pdf') then
ShowMessage('Saved PDF/UA-1');
// With explicit options (Title overridden, language explicit)
var
Opts: TPdfUaSaveOptions;
begin
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report Q3 2026';
Opts.Language := 'en-US';
Pdf1.SaveAsPdfUa('C:\Report.q3.pdfua.pdf', Opts);
// PDF/UA-2 output based on ISO 32000-2
Opts := TPdfUaSaveOptions.PdfUa2;
Opts.DocumentTitle := 'Accessible PDF 2.0 report';
Opts.Language := 'en-US';
Pdf1.SaveAsPdfUa('C:\Report.pdfua2.pdf', Opts);
end;