function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;
SaveAsPdfUaToStream est le pendant de streaming de SaveAsPdfUa — il produit la même sortie PDF/UA-1 mais écrit le résultat dans n’importe quel TStream positionnable fourni par l’appelant. Utile pour les pipelines de téléversement HTTP, les colonnes BLOB, les couches de cache en mémoire, les conteneurs d’archive (ZIP / TAR), ou tout flux de travail où les octets PDF/UA n’ont jamais besoin de toucher le disque
La logique de post-traitement est identique à SaveAsPdfUa(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 le dc:title obligatoire selon ISO 14289-1 §7.1 et la description de schéma d’extension pdfuaid), les /MarkInfo et /ViewerPreferences du catalogue lorsque la source n’en a pas, le /Lang du catalogue lorsque l’appelant a fourni une balise BCP 47, et un tableau /ID de trailer. Les champs d’options laissés vides sont auto-remplis depuis les lecteurs PDFium (FPDF_GetMetaText, FPDF_GetFileIdentifier, FPDFCatalog_GetLanguage) afin que l’appelant typique ne définisse DocumentTitle ou Language que si nécessaire
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é (généralement une source chiffrée)
saRemoveSecurity d’abord
var
Stream: TMemoryStream;
Opts: TPdfUaSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report';
Opts.Language := 'en';
if Pdf1.SaveAsPdfUaToStream(Stream, Opts) then
begin
Stream.Position := 0;
UploadToArchive(Stream);
end;
finally
Stream.Free;
end;
end;