function SaveAsPdfAToStream(Stream: TStream; const Options: TPdfASaveOptions): Boolean;
SaveAsPdfAToStream همتای جریانیِ SaveAsPdfA است — همان خروجی PDF/A-1b را تولید میکند، اما نتیجه را بهجای عبور از یک فایل موقت، به هر TStream قابلجستوجویی که فراخواننده فراهم میکند مینویسد. برای خطوط لولهٔ بارگذاری HTTP، ستونهای BLOB، لایههای حافظهٔ نهان درونحافظهای، ظرفهای آرشیو (ZIP / TAR) یا هر گردشکاری که بایتهای PDF/A هرگز نیازی به دستزدن به دیسک ندارند کاربرد دارد
منطق پسپردازش با SaveAsPdfA(FileName, Options) یکسان است: ابتدا SaveAs پایه اجرا میشود، سپس یک بهروزرسانی افزاینده جریان فرادادهٔ XMP را (که دیکشنری Information سند را مطابق ISO 19005-1 6.7.3 / Cor.1 Table 1 به شکل XMP پل میزند و توصیف طرحوارهٔ افزونهٔ pdfaid مورد نیاز 6.7.8 را نهفته میکند)، OutputIntent ارجاعدهنده به یک نمایهٔ ICC نهفته (پیشفرض sRGB، سفارشی از طریق Options.IccProfileData)، یک بهروزرسانی کاتالوگ که آنها را به هم پیوند میدهد و یک آرایهٔ /ID در trailer مورد نیاز 6.1.3 تزریق میکند. فیلدهای Options خالیمانده بهطور خودکار از FPDF_GetMetaText و FPDF_GetFileIdentifier پر میشوند، پس فراخوانندهٔ معمولی تنها Conformance را تنظیم میکند
در صورت موفقیت True برمیگرداند. جریان خروجی در جایگاه پس از آخرین بایت نوشتهشده باقی میماند. اگر SaveAs پایه شکست بخورد یا پسپردازش PDF/A نتواند الحاق شود (معمولاً به این دلیل که PDF منبع رمزگذاریشده بود که PDF/A ممنوع میکند)، False برمیگرداند
Write و Seek پشتیبانی کند — یک TMemoryStream، TFileStream یا هر زیرکلاسی که هر دو را به رسمیت بشناسد کار میکندSaveAsPdfAToStream اگر جریان دادهای پس از جایگاه جاری داشته باشد حفظ نمیشود؛ این تابع معناشناسی جستوجو-تا-پایان را فرض نمیکندMemory + Size آن را مستقیماً به کلاینت HTTP بدهیدsaRemoveSecurity نیاز دارند
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;