TPdfUaSaveOptions.PdfUa2 konfiguriertfunction SaveAsPdfUa(const FileName: string): Boolean; overload;
function SaveAsPdfUa(const FileName: string; const Options: TPdfUaSaveOptions): Boolean; overload;
SaveAsPdfUa führt zuerst das reguläre SaveAs aus und legt dann ein inkrementelles Update über die gespeicherten Bytes, das die Datei zu einem PDF/UA-1- oder PDF/UA-2-Dokument erhebt. Die Nachbearbeitung injiziert vier Klassen von Markern in den gespeicherten Stream:
pdfuaid:part = 1) sowie die passende pdfaExtension:schemas-Beschreibung, den obligatorischen dc:title-Eintrag (ISO 14289-1 §7.1) und gebrückte Info-Dictionary-Felder (Author, Subject, Producer, Keywords, CreationDate, ModDate usw.)/MarkInfo << /Marked true /Suspects false >>, wenn der Quellkatalog keinen /MarkInfo-Eintrag hat (§7.1)/ViewerPreferences << /DisplayDocTitle true >>, wenn die Quelle keinen /ViewerPreferences-Eintrag hat (§7.1)/Lang (xx), wenn die Quelle kein /Lang hat und Options.Language ein BCP 47-Tag liefert (§7.2). Der Trailer erhält außerdem ein /ID-Array (aus FPDF_GetFileIdentifier wiederverwendet, wenn verfügbar, andernfalls deterministisch aus den Quell-Bytes abgeleitet)Die Ausgabe bleibt bis zum
Ende des ursprünglichen PDF byteidentisch mit dem Basis-SaveAs-Ergebnis; nur das inkrementelle Update wird angehängt
Vorhandene Reader, die PDF/UA nicht verstehen, rendern die Datei
weiterhin exakt so, wie das reguläre SaveAs es täte. Die beiden Überladungen unterscheiden sich nur
darin, wie die Konfiguration übergeben wird: die Form nur mit Dateinamen verwendet
TPdfUaSaveOptions.Default mit automatischer Befüllung aus
FPDF_GetMetaText / FPDF_GetFileIdentifier /
FPDFCatalog_GetLanguage, während die
TPdfUaSaveOptions-Form dem Aufrufer erlaubt, Title,
Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate,
Language, DocumentId, InstanceId sowie die pdfuaid-Bezeichner Part, Revision,
Amd und Corr zu überschreiben
TPdfUaSaveOptions.PdfUa2 wählt Part 2, liefert den
Standardwert 2024 für pdfuaid:rev und schreibt
Katalog-/Version /2.0, sodass eine inkrementell aktualisierte PDF 1.x-Quelle
PDF 2.0 als effektive Version hat
Liefert True bei Erfolg. Liefert False, wenn
das zugrunde liegende SaveAs fehlschlug oder das inkrementelle Update nicht
angehängt werden konnte (PDF zu kurz, ungültiger Trailer, verschlüsselte Quelle)
SaveAs(..., saRemoveSecurity) auf
// Einfache PDF/UA-1-Ausgabe, Optionen werden aus dem Dokument automatisch befüllt
if Pdf1.SaveAsPdfUa('C:\Report.pdfua.pdf') then
ShowMessage('Saved PDF/UA-1');
// Mit expliziten Optionen (Title überschrieben, Sprache explizit)
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-Ausgabe auf Basis von 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;