function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;
SaveAsPdfX esegue prima il normale SaveAs, poi sovrappone un aggiornamento incrementale ai byte salvati per la variante PDF/X di scambio per la stampa selezionata. Il post-processing inietta cinque classi di byte nello stream salvato:
pdfxid:GTS_PDFXVersion, più pdfxid:GTS_PDFXConformance per PDF/X-1a / PDF/X-3) più la descrizione pdfaExtension:schemas corrispondente per il namespace pdfxid, e le proprietà Dublin Core / xmp / pdf travasate per Title / Author / Producer / date/GTS_PDFXVersion obbligatorio, l'opzionale /GTS_PDFXConformance (solo PDF/X-1a / PDF/X-3; PDF/X-4 lo depreca) e un nome /Trapped (predefinito /False). Le voci Info esistenti (Title / Author / Subject / ecc.) vengono conservate/Metadata N 0 R e /OutputIntents [M 0 R]/Type /OutputIntent /S /GTS_PDFX e le voci di output-condition configurate, che rimanda a un profilo ICC incorporato tramite /DestOutputProfileIl trailer viene riscritto per aggiungere un array /ID. L'
output resta byte-identico al risultato del SaveAs base fino alla fine
del PDF originale; viene appeso solo l'aggiornamento incrementale. I
due overload differiscono solo nel modo in cui la configurazione viene passata:
la forma con solo nome file usa TPdfXSaveOptions.Default
(PDF/X-4 + sRGB + /Trapped /False) con auto-popolamento
dei campi Info / DocumentId da FPDF_GetMetaText e
FPDF_GetFileIdentifier
Restituisce True dopo aver scritto i byte preparati, oppure False se il documento è inattivo o il salvataggio base fallisce
Una serializzazione riuscita non stabilisce la conformità PDF/X completa
Per pxc1a, IccProfileData deve contenere un profilo di output ICC v2 strutturalmente valido con device class prtr, spazio colore dei dati CMYK, un PCS Lab o XYZ e le LUT bidirezionali richieste
Dati di profilo mancanti, RGB, troncati, classificati in modo errato o non supportati sollevano EArgumentException; per PDF/X-1a non esiste alcun fallback su sRGB
Per PDF/X-1a, i valori OutputCondition, OutputConditionIdentifier e OutputIntentInfo ancora uguali al predefinito integrato sRGB IEC61966-2.1 vengono sostituiti con la descrizione del profilo verificato
Se il profilo non ha descrizione, fornire un OutputConditionIdentifier non vuoto e non predefinito; è lui a fornire l'etichetta di sostituzione, altrimenti la chiamata solleva EArgumentException
Le etichette esplicite del chiamante vengono preservate
La serializzazione e questi controlli del profilo terminano in uno store di salvataggio temporaneo prima che il file di destinazione venga aperto in scrittura Una destinazione esistente resta quindi invariata se la validazione del profilo solleva un'eccezione o il salvataggio base fallisce Questa non è una garanzia di sostituzione atomica del file: un fallimento di I/O dopo l'apertura della destinazione può lasciare output parziale
saRemoveSecurity prima dell'iniezione dei marcatoriOptions.Conformance ma non può imporre queste regole a livello di contenuto; verifica con un preflight
// Simple PDF/X-4 with bundled sRGB OutputIntent
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
ShowMessage('Saved PDF/X-4');
// PDF/X-1a with a custom CMYK ICC profile (e.g. FOGRA39)
var
Opts: TPdfXSaveOptions;
begin
Opts := TPdfXSaveOptions.Default;
Opts.Conformance := pxc1a;
Opts.IccProfileData := TFile.ReadAllBytes('C:\ICC\FOGRA39.icc');
Opts.OutputCondition := 'Coated FOGRA39 (ISO 12647-2:2004)';
Opts.OutputConditionIdentifier:= 'FOGRA39';
Opts.RegistryName := 'http://www.color.org';
Opts.Trapped := ptFalse;
Pdf1.SaveAsPdfX('C:\AdProof.cmyk.pdfx.pdf', Opts);
end;