function SaveAsPdfUaToStream(Stream: TStream; const Options: TPdfUaSaveOptions): Boolean;
SaveAsPdfUaToStream هو النظير التدفقي لـ
SaveAsPdfUa — فهو ينتج إخراج PDF/UA-1 نفسه،
لكنه يكتب النتيجة في أي TStream قابل للبحث يزوّده المستدعي.
وهو مفيد لخطوط أنابيب رفع HTTP، وأعمدة BLOB، وطبقات ذاكرة
مؤقتة في الذاكرة، وحاويات الأرشيف (ZIP / TAR)، أو أي سير عمل لا تحتاج فيه
وحدات بايت PDF/UA إلى لمس القرص أبدًا
منطق المعالجة اللاحقة مطابق لـ
SaveAsPdfUa(FileName, Options): يُنفَّذ SaveAs الأساسي
أولًا، ثم يحقن تحديث تزايدي تدفق البيانات الوصفية XMP
(مع dc:title الإلزامي وفق ISO 14289-1 §7.1
ووصف مخطط امتداد pdfuaid)، و catalog
/MarkInfo و /ViewerPreferences عندما يخلو منهما
المصدر، و catalog /Lang عندما يزوّد المستدعي
وسم BCP 47، ومصفوفة /ID للتذييل. وتُملأ حقول Options
المتروكة فارغة تلقائيًا من قارئات PDFium
(FPDF_GetMetaText و FPDF_GetFileIdentifier و
FPDFCatalog_GetLanguage) بحيث يضبط المستدعي النموذجي
DocumentTitle أو Language فقط عند الحاجة
يُرجع True عند النجاح. ويُترك تدفق الإخراج عند
الموضع بعد آخر وحدة بايت مكتوبة. ويُرجع False
إذا فشل SaveAs الأساسي أو إذا تعذّر إرفاق المعالجة اللاحقة
(عادةً مصدر معمى)
saRemoveSecurity أولًا
var
Stream: TMemoryStream;
Opts: TPdfUaSaveOptions;
begin
Stream := TMemoryStream.Create;
try
Opts := TPdfUaSaveOptions.Default;
Opts.DocumentTitle := 'Quarterly Report';
Opts.Language := 'en';
if Pdf1.SaveAsPdfUaToStream(Stream, Opts) then
begin
Stream.Position := 0;
UploadToArchive(Stream);
end;
finally
Stream.Free;
end;
end;