function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;
SaveAsPdfAToStream je tokovni pandan
SaveAsPdfA — proizvodi isti PDF/A-1b izlaz,
ali upisuje rezultat u bilo koji seekable TStream koji pozivalac
obezbedi, umesto preko privremene datoteke. Korisno za procese
HTTP otpremanja, BLOB kolone, slojeve keša u memoriji, arhivske
kontejnere (ZIP / TAR) ili bilo koji tok rada gde PDF/A bajtovi
nikada ne moraju da dodirnu disk
Logika post-procesiranja identična je
SaveAsPdfA(FileName, Options): prvo se izvodi
osnovni SaveAs, a zatim inkrementalna dopuna ubacuje tok XMP
metapodataka (koji premošćuje Document Information Dictionary u
XMP oblik prema ISO 19005-1 6.7.3 / Cor.1 Table 1 i ugrađuje opis
šeme ekstenzije pdfaid koji zahteva 6.7.8), OutputIntent
koji referencira ugrađeni ICC profil (podrazumevano sRGB,
prilagođen kroz Options.IccProfileData), ažuriranje
kataloga koje ih povezuje i niz /ID u trailer-u koji
zahteva 6.1.3. Polja Options ostavljena praznima se automatski
popunjavaju iz FPDF_GetMetaText i
FPDF_GetFileIdentifier, tako da tipičan pozivalac
postavlja samo Conformance
Vraća True pri uspehu. Izlazni tok ostaje na
poziciji poslednjeg upisanog bajta. Vraća False
ako osnovni SaveAs nije uspeo ili ako PDF/A post-procesiranje
nije moglo biti prikačeno (tipično zato što je izvorni PDF bio
šifrovan, što PDF/A zabranjuje)
Write i Seek — radi TMemoryStream, TFileStream ili bilo koja podklasa koja poštuje obaSaveAsPdfAToStream se ne čuva ako tok ima podatke iza trenutne pozicije; funkcija ne pretpostavlja semantiku seek-to-endMemory + Size direktno HTTP klijentusaRemoveSecurity
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;