function SaveAsPdfEToStream(Stream: TStream; const Options: TPdfESaveOptions): Boolean;
SaveAsPdfEToStream es la contrapartida de streaming de
SaveAsPdfE — produce la misma salida PDF/E-1
pero escribe el resultado en cualquier TStream posicionable que proporcione el llamador.
Ú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 subida HTTP sin tocar disco.
La lógica de posprocesado 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 catalog
para referenciar el XMP nuevo y emite un tráiler con un array /ID
renovado. Los campos de Options dejados vacíos se autorrellenan desde los lectores
de PDFium (FPDF_GetMetaText, FPDF_GetFileIdentifier),
de modo que un llamador habitual solo necesita sobrescribir 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 tras el último byte escrito. Devuelve False
si el SaveAs base falló o si el posprocesado no pudo adjuntarse.
/ISO_PDFEVersion. Los valores de versión PDF/E existentes se sustituyen.
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;