function SaveAsPdfA(const FileName: string; Conformance: TPdfAConformance = pac1b): Boolean; overload;
function SaveAsPdfA(const FileName: string; const Options: TPdfASaveOptions): Boolean; overload;
SaveAsPdfA esegue prima il normale SaveAs, poi sovrappone un aggiornamento incrementale ai byte salvati che promuove il file a archivio PDF/A (PDF/A-1b predefinito; ISO 19005-1, con Cor.1:2007). Il post-processing inietta quattro cose nello stream salvato:
pdfaid:part = 1, pdfaid:conformance = B), replica ogni voce del Document Information Dictionary nel suo equivalente XMP (Title → dc:title, Author → dc:creator, Subject → dc:description, Keywords → pdf:Keywords, Creator → xmp:CreatorTool, Producer → pdf:Producer, CreationDate → xmp:CreateDate, ModDate → xmp:ModifyDate) come richiesto da ISO 19005-1 6.7.3, e incorpora la descrizione dello schema di estensione pdfaid richiesta da 6.7.8 / Cor.1TPdfASaveOptions.IccProfileData/ID nel trailer (obbligatorio secondo ISO 19005-1 6.1.3). Quando il PDF sorgente ha già un file identifier, i 16 byte permanenti e changing esistenti vengono riusati; altrimenti un ID di fallback deterministico di 16 byte viene derivato dai byte sorgenteL'output resta byte-identico al risultato del SaveAs base fino alla
fine del PDF originale; viene appeso solo l'aggiornamento incrementale
I reader esistenti che non capiscono PDF/A continuano a renderizzare il file
esattamente come farebbe il normale SaveAs. I due overload differiscono solo
nel modo in cui conformità / opzioni vengono passate — la
forma TPdfAConformance è la scorciatoia per il caso comune
(pac1b); la forma TPdfASaveOptions prende un
record con la superficie di configurazione completa, incluse le
override opzionali per Title, Author, Subject, Keywords, Creator, Producer,
CreationDate, ModDate, DocumentId e InstanceId. I campi lasciati vuoti
vengono auto-popolati da FPDF_GetMetaText /
FPDF_GetFileIdentifier, così il chiamante tipico non deve
impostare alcun campo oltre a Conformance
Il valore Conformance seleziona lo standard e il
livello di destinazione. PDF/A-1 (ISO 19005-1) offre pac1b e
pac1a; PDF/A-2 (ISO 19005-2) e PDF/A-3 (ISO 19005-3) aggiungono
i livelli b, u e a come pac2b / pac2u /
pac2a e pac3b / pac3u /
pac3a. Il pdfaid:part iniettato (1, 2 o 3) e
pdfaid:conformance (A, B o U) seguono il valore richiesto,
mentre l'OutputIntent mantiene il subtype GTS_PDFA1 che
ISO 19005-2 conserva per ogni parte. Poiché il post-processore non può
sintetizzare la struttura logica, una richiesta di Level A
(pac1a / pac2a / pac3a) viene
declassata automaticamente al Level B corrispondente quando la sorgente non ha
la struttura tagged-PDF che quel livello richiede — così il file salvato
non rivendica mai falsamente un Level A
Restituisce True in caso di successo. Restituisce False se
il SaveAs base è fallito, se l'aggiornamento incrementale non ha potuto
essere attaccato (PDF troppo corto, trailer non valido), o se i dati del profilo ICC
sono stati forniti ma hanno fallito la validazione
/Encrypt (internamente il salvataggio base gira con saRemoveSecurity)ValidatePdfA dopo il salvataggio per ispezionare il risultato ed esporre agli operatori le eventuali problematiche residue
// 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;