function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;
SaveAsPdfX exécute d'abord le SaveAs ordinaire, puis superpose une mise à jour incrémentielle sur les octets enregistrés pour la variante d'échange d'impression PDF/X choisie. Le post-traitement injecte cinq classes d'octets dans le flux enregistré :
pdfxid:GTS_PDFXVersion, plus pdfxid:GTS_PDFXConformance pour PDF/X-1a / PDF/X-3) ainsi que la description pdfaExtension:schemas correspondante pour l'espace de noms pdfxid, et les propriétés Dublin Core / xmp / pdf relayées pour Title / Author / Producer / dates/GTS_PDFXVersion obligatoire, le /GTS_PDFXConformance facultatif (PDF/X-1a / PDF/X-3 uniquement ; PDF/X-4 déprécie cette entrée) et un nom /Trapped (par défaut /False). Les entrées Info existantes (Title / Author / Subject / etc.) sont préservées/Metadata N 0 R et /OutputIntents [M 0 R]/Type /OutputIntent /S /GTS_PDFX et les entrées de condition de sortie configurées, référençant un profil ICC incorporé via /DestOutputProfileLe trailer est réécrit pour ajouter un tableau /ID. La sortie reste octet pour octet identique au résultat de base de SaveAs jusqu'à la fin du PDF original ; seule la mise à jour incrémentielle est ajoutée. Les deux surcharges ne diffèrent que par la façon dont la configuration est transmise : la forme réservée au nom de fichier utilise TPdfXSaveOptions.Default (PDF/X-4 + sRGB + /Trapped /False) avec remplissage automatique des champs Info / DocumentId à partir de FPDF_GetMetaText et FPDF_GetFileIdentifier
Renvoie True une fois les octets préparés écrits, ou False si le document est inactif ou si la sauvegarde de base échoue
Une sérialisation réussie n'établit pas une conformité PDF/X complète
Pour pxc1a, IccProfileData doit contenir un profil de sortie ICC v2 structurellement valide, avec une classe de périphérique prtr, un espace de couleur de données CMYK, un PCS Lab ou XYZ et les LUT bidirectionnelles requises
Des données de profil absentes, RGB, tronquées, mal classées ou non prises en charge lèvent EArgumentException ; il n'existe aucun repli sRGB pour PDF/X-1a
Pour PDF/X-1a, les valeurs OutputCondition, OutputConditionIdentifier et OutputIntentInfo encore égales à la valeur par défaut intégrée sRGB IEC61966-2.1 sont remplacées par la description du profil vérifié
Si le profil n'a pas de description, fournissez un OutputConditionIdentifier non vide et non par défaut ; il fournit le libellé de remplacement, sinon l'appel lève EArgumentException
Les libellés explicites de l'appelant sont préservés
La sérialisation et ces vérifications de profil s'achèvent dans un magasin de sauvegarde temporaire avant que le fichier cible ne soit ouvert en écriture Une cible existante reste donc inchangée si la validation du profil lève une exception ou si la sauvegarde de base échoue Ce n'est pas une garantie de remplacement de fichier atomique : un échec d'E/S après l'ouverture de la cible peut laisser une sortie partielle
saRemoveSecurity avant l’injection des marqueursOptions.Conformance mais ne peut pas appliquer ces règles au niveau contenu. Confirmez via préflight
// 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;