function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;
SaveAsPdfUaToStream è la controparte streaming di
SaveAsPdfUa — produce lo stesso output PDF/UA-1
ma scrive il risultato in qualsiasi TStream seekable fornito dal chiamante
Utile per pipeline di upload HTTP, colonne BLOB, layer di cache
in memoria, contenitori di archivio (ZIP / TAR), o qualsiasi flusso di lavoro in cui i
byte PDF/UA non debbano mai toccare il disco
La logica di post-processing è identica a quella di
SaveAsPdfUa(FileName, Options): prima gira il SaveAs base,
poi un aggiornamento incrementale inietta lo stream di metadati XMP
(con il dc:title obbligatorio secondo ISO 14289-1 §7.1 e
la descrizione dello schema di estensione pdfuaid), i
/MarkInfo e /ViewerPreferences del catalogo quando la
sorgente non li ha, il /Lang del catalogo quando il chiamante fornisce
un tag BCP 47, e un array /ID nel trailer. I campi Options
lasciati vuoti si auto-popolano dai lettori di PDFium
(FPDF_GetMetaText, FPDF_GetFileIdentifier,
FPDFCatalog_GetLanguage) così il chiamante tipico imposta solo
DocumentTitle o Language se serve
Restituisce True in caso di successo. Lo stream di output resta
posizionato dopo l'ultimo byte scritto. Restituisce False
se il SaveAs base è fallito o se il post-processing non ha potuto
essere applicato (in genere una sorgente crittografata)
saRemoveSecurity
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;