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
(الذي يربط قاموس معلومات المستند إلى شكل XMP وفقًا لـ
ISO 19005-1 6.7.3 / Cor.1 Table 1 ويُضمّن وصف مخطط امتداد pdfaid
الذي يتطلبه 6.7.8)، وOutputIntent
الذي يشير إلى ملف ICC مُضمّن (sRGB افتراضيًا، أو مخصص
عبر Options.IccProfileData)، وتحديث الكتالوج الذي
يربطها معًا، ومصفوفة /ID للتذييل التي يتطلبها
6.1.3. تُملأ حقول Options المتروكة فارغة تلقائيًا من
FPDF_GetMetaText وFPDF_GetFileIdentifier
لذا فإن المستدعي النموذجي يضبط Conformance فقط
يُرجع True عند النجاح. ويُترك تدفق الإخراج عند
الموضع بعد آخر وحدة بايت مكتوبة. ويُرجع False
إذا فشل SaveAs الأساسي أو إذا تعذّر إرفاق المعالجة اللاحقة
لـ PDF/A (عادةً لأن ملف PDF المصدر كان مشفّرًا، وهو ما
يحظره PDF/A)
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;