function SaveAsPdfEToStream(Stream: TStream; const Options: TPdfESaveOptions): Boolean;
SaveAsPdfEToStream est le pendant de streaming de SaveAsPdfE — il produit la même sortie PDF/E-1 mais écrit le résultat dans n’importe quel TStream positionnable fourni par l’appelant. Utile pour l’intégration de flux de travail d’ingénierie où les charges utiles PDF/E sont poussées directement dans les systèmes PLM / PDM, les colonnes BLOB, les conteneurs d’archive ou les pipelines de téléversement HTTP sans toucher le disque
La logique de post-traitement est identique à SaveAsPdfE(FileName, Options) : le SaveAs de base s’exécute d’abord, puis une mise à jour incrémentale injecte le flux de métadonnées XMP (avec pdfe:ISO_PDFEVersion et la description de schéma d’extension), réécrit le dictionnaire Document Information pour ajouter l’entrée obligatoire /ISO_PDFEVersion (PDF/E-1), met à jour le catalogue pour référencer le nouveau XMP, et émet un trailer avec un tableau /ID frais. Les champs d’options laissés vides sont auto-remplis depuis les lecteurs PDFium (FPDF_GetMetaText, FPDF_GetFileIdentifier), donc un appelant typique n’a besoin de remplacer que le champ Version pour des valeurs Part / Amd / Corr non par défaut
Renvoie True en cas de succès. Le flux de sortie est laissé à la position après le dernier octet écrit. Renvoie False si le SaveAs de base a échoué ou si le post-traitement n’a pas pu être attaché
/ISO_PDFEVersion. Les valeurs de version PDF/E existantes sont remplacées
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;