function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;
SaveAsPdfAToStream is de streaming-tegenhanger van SaveAsPdfA — het produceert dezelfde PDF/A-1b-uitvoer, maar schrijft het resultaat naar elke seekable TStream die de aanroeper aangeeft in plaats van via een tijdelijk bestand te gaan. Nuttig voor HTTP-upload-pijplijnen, BLOB-kolommen, in-geheugen-cache-lagen, archiefcontainers (ZIP / TAR) of elke workflow waar de PDF/A-bytes nooit schijf hoeven te raken.
De nabewerkingslogica is identiek aan SaveAsPdfA(FileName, Options): de basis-SaveAs draait eerst, waarna een incrementele update de XMP-metagegevensstroom injecteert (die het Document Information Dictionary bridgt naar XMP-vorm per ISO 19005-1 6.7.3 / Cor.1 Tabel 1 en de pdfaid-extensieschema-beschrijving vereist door 6.7.8 inbedt), de OutputIntent die verwijst naar een ingebed ICC-profiel (sRGB standaard, aangepast via Options.IccProfileData), een catalogusupdate die ze samen linkt, en een trailer-/ID-array vereist door 6.1.3. Options-velden die leeg worden gelaten worden automatisch gevuld vanuit FPDF_GetMetaText en FPDF_GetFileIdentifier zodat de typische aanroeper alleen Conformance instelt.
Retourneert True bij succes. De uitvoerstroom wordt achtergelaten op de positie na de laatst geschreven byte. Retourneert False als de basis-SaveAs faalde of als de PDF/A-nabewerking niet kon worden bijgevoegd (doorgaans omdat de bron-PDF was versleuteld, wat PDF/A verbiedt).
Write en Seek ondersteunen — een TMemoryStream, TFileStream of elke subklasse die beide eert werkt.SaveAsPdfAToStream wordt niet behouden als de stream gegevens voorbij de huidige positie heeft; de functie gaat niet uit van seek-to-end-semantiek.Memory + Size rechtstreeks door aan de HTTP-client.saRemoveSecurity nodig.
var
Stream: TMemoryStream;
Opts: TPdfASaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := Default(TPdfASaveOptions);
Opts.Conformance := pac1b;
if Pdf1.SaveAsPdfAToStream(Stream, Opts) then
begin
Stream.Position := 0;
UploadToArchive(Stream);
end;
finally
Stream.Free;
end;
end;