function SaveAsPdfA(const FileName: string; Conformance: TPdfAConformance = pac1b): Boolean; overload;
function SaveAsPdfA(const FileName: string; const Options: TPdfASaveOptions): Boolean; overload;
SaveAsPdfA voert eerst de gewone SaveAs uit en legt daar vervolgens een incrementele update bovenop die het bestand naar een PDF/A-archief verheft (standaard PDF/A-1b; ISO 19005-1, met Cor.1:2007). De nabewerking voegt vier zaken toe aan de opgeslagen stream
pdfaid:part = 1, pdfaid:conformance = B), elke entry uit de Document Information Dictionary spiegelt naar de XMP-tegenhanger (Title → dc:title, Author → dc:creator, Subject → dc:description, Keywords → pdf:Keywords, Creator → xmp:CreatorTool, Producer → pdf:Producer, CreationDate → xmp:CreateDate, ModDate → xmp:ModifyDate) zoals vereist door ISO 19005-1 6.7.3, en de pdfaid-extensieschemabeschrijving insluit die 6.7.8 / Cor.1 vereistTPdfASaveOptions.IccProfileData worden opgegeven/ID-array in de trailer (verplicht volgens ISO 19005-1 6.1.3). Wanneer de bron-PDF al een bestand-ID bevat, worden de bestaande permanente en veranderende IDs van 16 bytes hergebruikt; anders wordt een deterministische fallback-ID van 16 bytes afgeleid uit de bronbytesDe uitvoer blijft byte-identiek aan het resultaat van de basis-SaveAs tot het einde van de originele PDF; alleen de incrementele update wordt toegevoegd. Lezers die PDF/A niet begrijpen, renderen het bestand nog steeds precies zoals reguliere SaveAs dat zou doen. De twee overloads verschillen alleen in de manier waarop de conformiteit / opties worden doorgegeven — de TPdfAConformance-vorm is een afkorting voor het gebruikelijke geval (pac1b); de TPdfASaveOptions-vorm neemt een record met de volledige configuratie, inclusief optionele overschrijvingen voor Title, Author, Subject, Keywords, Creator, Producer, CreationDate, ModDate, DocumentId en InstanceId. Velden die leeg blijven, worden automatisch gevuld uit FPDF_GetMetaText / FPDF_GetFileIdentifier, zodat de doorsnee aanroeper niets anders hoeft in te stellen dan Conformance
De waarde van Conformance kiest de doelstandaard en het niveau. PDF/A-1 (ISO 19005-1) biedt pac1b en pac1a; PDF/A-2 (ISO 19005-2) en PDF/A-3 (ISO 19005-3) voegen de niveaus b, u en a toe als pac2b / pac2u / pac2a en pac3b / pac3u / pac3a. De ingevoegde pdfaid:part (1, 2 of 3) en pdfaid:conformance (A, B of U) volgen de gevraagde waarde, terwijl de OutputIntent het GTS_PDFA1-subtype behoudt dat ISO 19005-2 voor elk deel gebruikt. Omdat de post-processor geen logische structuur kan synthetiseren, wordt een Level A-aanvraag (pac1a / pac2a / pac3a) automatisch verlaagd naar het bijbehorende Level B wanneer de bron de Tagged PDF-structuur mist die dat niveau vereist — zo claimt het opgeslagen bestand nooit ten onrechte Level A
Geeft True terug bij succes. Geeft False terug als de basis-SaveAs mislukte, als de incrementele update niet kon worden aangehecht (PDF te kort, ongeldige trailer) of als de ICC-profielgegevens wel werden opgegeven maar niet door validatie kwamen
/Encrypt-sleutel verbiedt. (Intern draait de basisopslag met saRemoveSecurity.)ValidatePdfA na het opslaan om het resultaat te inspecteren en eventuele resterende problemen aan operators te tonen
// Eenvoudige PDF/A-1b-uitvoer met het meegeleverde sRGB-profiel
if Pdf1.SaveAsPdfA('C:\Report.pdfa.pdf') then
ShowMessage('Saved PDF/A-1b');
// Met een aangepast ICC-profiel
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;