function SaveAsPdfX(const FileName: string): Boolean; overload;
function SaveAsPdfX(const FileName: string; const Options: TPdfXSaveOptions): Boolean; overload;
SaveAsPdfX realiza primero el SaveAs normal y después superpone una
actualización incremental sobre los bytes guardados que promociona el archivo a conformidad PDF/X
— la familia de estándares de intercambio de impresión ISO 15930 usada en la industria de las
artes gráficas. El posprocesado inyecta cinco clases de bytes en el flujo guardado:
pdfxid:GTS_PDFXVersion, más pdfxid:GTS_PDFXConformance para PDF/X-1a / PDF/X-3) junto con la descripción pdfaExtension:schemas correspondiente al espacio de nombres pdfxid, y propiedades enlazadas de Dublin Core / xmp / pdf para Title / Author / Producer / dates/GTS_PDFXVersion, el opcional /GTS_PDFXConformance (solo PDF/X-1a / PDF/X-3; PDF/X-4 deja obsoleta esta entrada) y un nombre /Trapped (por defecto /False). Las entradas Info existentes (Title / Author / Subject / etc.) se preservan/Metadata N 0 R y /OutputIntents [M 0 R]/Type /OutputIntent /S /GTS_PDFX y las entradas obligatorias /OutputCondition / /OutputConditionIdentifier / /RegistryName / /Info, que apuntan a un perfil ICC incrustado mediante /DestOutputProfileOptions.IccProfileData para impresión comercial)El trailer se reescribe para añadir un array /ID. La salida permanece idéntica en bytes al
resultado base de SaveAs hasta el final del PDF original; solo se añade la actualización
incremental. Las dos sobrecargas difieren solo en cómo se pasa la configuración: la forma de solo nombre de
archivo usa TPdfXSaveOptions.Default (PDF/X-4 + sRGB + /Trapped /False) con
autocompletado de los campos Info / DocumentId desde FPDF_GetMetaText y
FPDF_GetFileIdentifier
Devuelve True si tiene éxito. Devuelve False si falló el SaveAs
base o si no se pudo acoplar la actualización incremental
SaveAsPdfX adjunta los marcadores de formato de archivo requeridos por ISO 15930 — no incrusta fuentes ausentes, no elimina la transparencia para PDF/X-1a / PDF/X-3, no quita JavaScript ni anotaciones visibles ni normaliza OPI / Reference XObjects. Crear un documento cuyo contenido de página ya cumpla el nivel de conformidad PDF/X elegido sigue siendo responsabilidad de quien llama. Usa ValidatePdfX para mostrar los problemas a nivel de formato que este método cubre; combínalo con callas pdfaPilot o Ghent PDF Workgroup Output Suite para comprobaciones a nivel de contenidoOptions.IccProfileData con los bytes ICC para la caracterización de prensa objetivo (FOGRA39, ISO Coated v2, GRACoL2006_Coated1v2, JapanColor2011Coated, etc.) y actualiza OutputConditionIdentifier / RegistryName / OutputIntentInfo en consecuenciaSaveAs(..., saRemoveSecurity) sobre fuentes cifradas antes de SaveAsPdfXSaveAsPdfX adjunta el marcador correspondiente a Options.Conformance pero no puede hacer cumplir estas reglas a nivel de contenido. Confírmalo mediante preflight// PDF/X-4 simple con OutputIntent sRGB incluido
if Pdf1.SaveAsPdfX('C:\AdProof.pdfx.pdf') then
ShowMessage('Saved PDF/X-4');
// PDF/X-1a con un perfil ICC CMYK personalizado (por ejemplo, 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;