function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;
SaveAsPdfAToStream är strömningsmotsvarigheten till SaveAsPdfA — den producerar samma PDF/A-1b-utdata, men skriver resultatet till valfri sökbar TStream som anroparen tillhandahåller i stället för att gå via en temporär fil. Användbar för HTTP-uppladdningsflöden, BLOB-kolumner, cachelager i minnet, arkivbehållare (ZIP / TAR) eller andra arbetsflöden där PDF/A-byten aldrig behöver nå disken
Efterbearbetningen är identisk med SaveAsPdfA(FileName, Options): den ordinarie SaveAs körs först, sedan injicerar en inkrementell uppdatering XMP-metadata-strömmen (som mappar Document Information Dictionary till XMP-form enligt ISO 19005-1 6.7.3 / Cor.1 Table 1 och bäddar in pdfaid-tilläggsschemabeskrivningen som krävs av 6.7.8), OutputIntent som pekar på en inbäddad ICC-profil (sRGB som standard, anpassad via Options.IccProfileData), en kataloguppdatering som länkar samman dessa samt en trailer-/ID-array som krävs av 6.1.3. Fält i Options som lämnas tomma fylls automatiskt från FPDF_GetMetaText och FPDF_GetFileIdentifier så att den typiska anroparen bara behöver ange Conformance
Returnerar True vid lyckat resultat. Utmatningsströmmen lämnas vid positionen efter den sista skrivna byten. Returnerar False om den ordinarie SaveAs misslyckades eller om PDF/A-efterbearbetningen inte kunde kopplas in (vanligen för att käll-PDF:en var krypterad, vilket PDF/A förbjuder)
Write och Seek — en TMemoryStream, TFileStream eller någon underklass som hanterar båda fungerarSaveAsPdfAToStream bevaras inte om strömmen har data efter den aktuella positionen; funktionen antar inte seek-to-end-semantikMemory + Size direkt till HTTP-klientensaRemoveSecurity
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;