function SaveAsPdfEToStream(Stream: TStream; const Options: TPdfESaveOptions): Boolean;
SaveAsPdfEToStream es la contraparte de flujo de
SaveAsPdfE — produce la misma salida PDF/E-1
pero escribe el resultado en cualquier TStream que admita posicionamiento y que proporcione quien llama
Útil para la integración de flujos de trabajo de ingeniería donde las cargas PDF/E se
envían directamente a sistemas PLM / PDM, columnas BLOB, contenedores de
archivo o canalizaciones de carga HTTP sin tocar el disco.
La lógica de posprocesamiento es idéntica a
SaveAsPdfE(FileName, Options): primero se ejecuta el
SaveAs base, luego una actualización incremental inyecta el flujo de
metadatos XMP (con pdfe:ISO_PDFEVersion y la descripción del esquema
de extensión), reescribe el Document Information Dictionary para
añadir la entrada obligatoria /ISO_PDFEVersion (PDF/E-1),
actualiza el catálogo para referenciar el nuevo XMP y emite un
trailer con un arreglo /ID nuevo. Los campos de Options
que se dejen vacíos se autorrellenan a partir de los lectores de
PDFium (FPDF_GetMetaText, FPDF_GetFileIdentifier),
por lo que un llamador típico solo necesita invalidar el campo Version para
valores no predeterminados de Part / Amd / Corr.
Devuelve True en caso de éxito. El flujo de salida queda
en la posición después del último byte escrito. Devuelve False
si el SaveAs base falló o si el posprocesamiento no pudo
adjuntarse.
/ISO_PDFEVersion. Los valores de versión PDF/E existentes se reemplazan.
var
Stream: TMemoryStream;
Opts: TPdfESaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfESaveOptions.Default;
Opts.Producer := 'CAD-Workflow 2026';
if Pdf1.SaveAsPdfEToStream(Stream, Opts) then
begin
Stream.Position := 0;
PushToPLM(Stream);
end;
finally
Stream.Free;
end;
end;