function SaveAsPdfXToStream(Stream: TStream; const Options: TPdfXSaveOptions): Boolean;
SaveAsPdfXToStream es la contrapartida de streaming de
SaveAsPdfX — mismos bytes de salida, escritos en cualquier
TStream posicionable que proporcione el llamador. Útil para la integración de
flujos de trabajo de preimpresión donde las cargas PDF/X se envían directamente
a portales de envío de impresión, sistemas MIS / de tickets de trabajo, columnas
BLOB, contenedores ZIP o canalizaciones de subida HTTP
El posprocesado es idéntico a SaveAsPdfX: inyección XMP
con el identificador pdfxid y la descripción del esquema de extensión,
reescritura del Document Information Dictionary con GTS_PDFXVersion /
GTS_PDFXConformance / Trapped, actualización del catalog con referencias
/Metadata y /OutputIntents, diccionario OutputIntent con /S
/GTS_PDFX y perfil ICC incrustado, y un array /ID de tráiler.
Los campos de Options dejados vacíos se autorrellenan desde
FPDF_GetMetaText / FPDF_GetFileIdentifier
Devuelve True tras la serialización, dejando el flujo de salida en la posición posterior al último byte escrito. Devuelve False para un documento inactivo o un guardado base fallido; un resultado con éxito no es un veredicto de conformidad PDF/X completo
Para pxc1a, suministre en Options.IccProfileData un perfil de salida ICC v2 prtr estructuralmente válido con datos CMYK, un PCS Lab o XYZ y las LUT bidireccionales requeridas. Los datos ausentes o no adecuados lanzan EArgumentException antes de que se modifique el flujo de destino
PDF/X-1a sustituye las etiquetas de condición de salida que sigan siendo el valor predeterminado sRGB integrado por la descripción ICC comprobada. Si esa descripción no existe, se requiere un OutputConditionIdentifier explícito, no vacío y no predeterminado, que aporta la etiqueta de sustitución. Las etiquetas explícitas se conservan; consulte SaveAsPdfX para los campos afectados
var
Stream: TMemoryStream;
Opts: TPdfXSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfXSaveOptions.Default;
Opts.Conformance := pxc4;
Opts.Title := 'Spring Catalogue 2026';
if Pdf1.SaveAsPdfXToStream(Stream, Opts) then
begin
Stream.Position := 0;
SubmitToPrinter(Stream);
end;
finally
Stream.Free;
end;
end;