function SaveAsPdfA(const FileName: string; Conformance: TPdfAConformance = pac1b): Boolean; overload;
function SaveAsPdfA(const FileName: string; const Options: TPdfASaveOptions): Boolean; overload;
SaveAsPdfA utför först den vanliga SaveAs och lägger sedan ett inkrementellt lager ovanpå de sparade byten som lyfter filen till ett PDF/A-arkiv (PDF/A-1b som standard; ISO 19005-1, med Cor.1:2007). Efterbehandlingen injicerar fyra saker i den sparade strömmen:
pdfaid:part = 1, pdfaid:conformance = B), speglar varje Document Information Dictionary-post till dess XMP-motsvarighet (Title → dc:title, Author → dc:creator, Subject → dc:description, Keywords → pdf:Keywords, Creator → xmp:CreatorTool, Producer → pdf:Producer, CreationDate → xmp:CreateDate, ModDate → xmp:ModifyDate) enligt ISO 19005-1 6.7.3, och bäddar in pdfaid-tilläggsschemabeskrivningen som krävs av 6.7.8 / Cor.1TPdfASaveOptions.IccProfileData/ID-array i trailern (obligatorisk enligt ISO 19005-1 6.1.3). När käll-PDF:en redan har ett filidentifierare återanvänds de befintliga 16-byte permanenta och föränderliga ID:na; annars härleds en deterministisk 16-byte reservidentifierare från källbytenUtdata är byteidentisk med det ordinarie SaveAs-resultatet fram till slutet av den ursprungliga PDF-filen; endast den inkrementella uppdateringen läggs till efteråt. Äldre läsare som inte förstår PDF/A renderar fortfarande filen exakt som vanlig SaveAs skulle göra. De två överlagringarna skiljer sig bara åt i hur kompatibilitets- och optionsvärden skickas in — formen TPdfAConformance är en genväg för standardfallet (pac1b), medan formen TPdfASaveOptions tar en post med hela konfigurationsytan, inklusive valfria överskrivningar för Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate, DocumentId och InstanceId. Fält som lämnas tomma fylls automatiskt från FPDF_GetMetaText / FPDF_GetFileIdentifier, så den typiska anroparen behöver inte ange något annat än Conformance
Värdet Conformance väljer målstandard och nivå. PDF/A-1 (ISO 19005-1) erbjuder pac1b och pac1a; PDF/A-2 (ISO 19005-2) och PDF/A-3 (ISO 19005-3) lägger till nivåerna b, u och a som pac2b / pac2u / pac2a och pac3b / pac3u / pac3a. Den injicerade pdfaid:part (1, 2 eller 3) och pdfaid:conformance (A, B eller U) följer det begärda värdet, medan OutputIntent behåller undertypen GTS_PDFA1 som ISO 19005-2 bevarar för varje del. Eftersom efterprocessorn inte kan skapa logisk struktur nedgraderas en begäran om nivå A (pac1a / pac2a / pac3a) automatiskt till motsvarande nivå B när källan saknar den Tagged PDF-struktur som nivån kräver — så den sparade filen gör aldrig ett falskt anspråk på nivå A
Returnerar True vid lyckat resultat. Returnerar False om den ordinarie SaveAs misslyckades, om den inkrementella uppdateringen inte kunde kopplas in (PDF:en för kort, ogiltig trailer) eller om ICC-profildata angavs men inte klarade validering
/Encrypt (internt körs bas-sparandet med saRemoveSecurity)ValidatePdfA efter sparandet för att inspektera resultatet och visa eventuella kvarvarande problem för operatörer
// Simple PDF/A-1b output using the bundled sRGB profile
if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf') then
ShowMessage('Saved PDF/A-1b');
// With a custom ICC profile
var
Opts: TPdfASaveOptions;
begin
Opts := Default(TPdfASaveOptions);
Opts.Conformance := pac1b;
Opts.IccProfileData := TFile.ReadAllBytes('C:\Profiles\Coated.icc');
Pdf1.SaveAsPdfA('C:\Report.cmyk.pdfa.pdf', Opts);
end;