function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;
SaveAsPdfAToStream on SaveAsPdfA:n virtaava vastine
— se tuottaa saman PDF/A-1b-tuloksen, mutta kirjoittaa lopputuloksen
kutsujan antamaan mihin tahansa TStreamiin, joka tukee siirtymiä,
väliaikaistiedoston sijaan. Hyödyllinen HTTP-lähetysputkille, BLOB-sarakkeille,
muistissa toimiville välimuistikerroksille, arkistosäiliöille (ZIP / TAR)
tai mille tahansa työnkululle, jossa PDF/A-tavujen ei koskaan tarvitse
koskea levyyn
Jälkikäsittelylogiikka on identtinen SaveAsPdfA(FileName, Options)
-kutsun kanssa: ensin ajetaan perus-SaveAs, sitten inkrementaalinen päivitys
ruiskuttaa XMP-metatietovirran (joka siltaa Document Information Dictionaryn
XMP-muotoon ISO 19005-1 6.7.3 / Cor.1 Table 1:n mukaan ja upottaa
pdfaid-laajennusskeeman kuvauksen, jonka 6.7.8 edellyttää), OutputIntentin,
joka viittaa upotettuun ICC-profiiliin (oletuksena sRGB, mukautettu jäsenen
Options.IccProfileData kautta), katalogipäivityksen, joka kytkkee
ne yhteen, sekä trailerin /ID-taulukon, jonka 6.1.3 edellyttää. Tyhjiksi
jätetyt Options-kentät täytetään automaattisesti jäsenistä
FPDF_GetMetaText ja FPDF_GetFileIdentifier,
joten tyypillinen kutsuja asettaa vain Conformance-arvon
Palauttaa True onnistuessaan. Tulostevirta jää asentoon heti
viimeisen kirjoitetun tavun jälkeen. Palauttaa False, jos
perus-SaveAs epäonnistui tai jos PDF/A-jälkikäsittelyä ei voitu liittää
(tyypillisesti siksi, että lähde-PDF oli salattu, mitä PDF/A kieltää)
Write ja Seek — TMemoryStream, TFileStream tai mikä tahansa aliluokka, joka toteuttaa molemmat, käySaveAsPdfAToStream-kutsua ei säilytetä, jos virrassa on dataa nykyisen position jälkeen; funktio ei oleta loppuun siirtymisen semantiikkaaMemory + Size suoraan HTTP-asiakkaallesaRemoveSecurity-valinnan
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;