PDFium Delphi Component API Reference

الاستخراج الدفعي للمرفقات

المكوّن: TPdf  ·  الوحدة: PDFium
جرد المرفقات المضمّنة مرة واحدة وكتابة حمولاتها مفكوكة الترميز إلى تيارات يملكها المستدعي تحت ضوابط موارد صريحة

ReadAttachmentMetadata

function ReadAttachmentMetadata(MaxAttachments: Integer = 10000): TPdfAttachmentMetadataArray;

تعدّد الطريقة مرفقات المستند على مستوى المستند مرة واحدة وتعيد سجلات يملكها المستدعي تحمل Index و Name و Description و MimeType و Relationship و Size مفكوك الترميز و Readable

يُفحص MaxAttachments قبل ملء مصفوفة النتائج، ما يمنع مستندًا غير موثوق من التسبب في تخصيص بيانات وصفية بلا حدود

لا ينسخ استعلام الحجم بايتات الحمولة إلى ذاكرة PDFium Delphi Component، وإن كان PDFium قد يفك ترميز تيار داخليًا لتحديد طوله مفكوك الترميز

ExtractAttachmentsToStreams

function ExtractAttachmentsToStreams(const Destinations: array of TStream; const Options: TPdfAttachmentBatchOptions; out Report: TPdfAttachmentBatchReport; const CancellationToken: IPdfCancellationToken = nil): Boolean;

يجب أن يحتوي Destinations فتحة واحدة بالضبط لكل مرفق في المستند ويسير بالترتيب المعتمد على الصفر نفسه الذي تسيره Attachment[Index]

تشير الوجهة nil إلى أن العنصر سيُعلَّم بـ paesSkipped، ما يتيح للمستدعي انتقاء المرفقات دون تعداد ثانٍ

تُفك كل حمولة غير فارغة ترميزها عبر PDFium إلى مخزن مؤقت واحد لـ PDFium Delphi Component ثم تُكتب من ذلك المخزن بقطع حجمها ChunkBytes

يُحرَّر المخزن قبل المرفق التالي، فلا يحتفظ PDFium Delphi Component أبدًا بالدفعة كاملة، لكن واجهة PDFium العامة للمرفقات لا تدعم القراءات الجزئية وقد تستخدم ذاكرتها الخاصة لفك الحمولة كاملة داخليًا

تبقى التيارات مملوكة للمستدعي ويبدأ الكتابة من موضع كل تيار الحالي، ولا تعيد الطريقة تمريرها أو تقصيرها

قد يترك الإلغاء أو استثناء في إحدى الوجهات بايتات كُتبت إلى ذلك التيار فعلًا، فالمستدعون الذين يحتاجون خرجًا معامليًا عليهم تزويد تيارات مؤقتة ونشرها بعد تقرير ناجح فقط

الخيارات

الحقلالافتراضيالمعنى
MaxAttachments10000الحد الأقصى لمدخلات البيانات الوصفية والتقرير
MaxFileBytes256 MiBالحد الأقصى للحجم مفكوك الترميز لمرفق واحد
MaxTotalBytes1 GiBالحد الأقصى للبايتات المكتوبة عبر كل الوجهات
ChunkBytes1 MiBالحد الأقصى للبايتات الممررة لكتابة تيار واحدة
StopOnErrorTrueالتوقف بعد أول عنصر غير قابل للقراءة أو متجاوز للميزانية أو فاشل في الكتابة

التقرير

يصف كل سجل TPdfAttachmentMetadata مرفقًا أصليًا واحدًا ويخزن TPdfAttachmentMetadataArray لقطة البيانات الوصفية

يجمع كل TPdfAttachmentBatchItem البيانات الوصفية و TPdfAttachmentExtractionState والبايتات المكتوبة وأي نص خطأ، بينما يخزن TPdfAttachmentBatchItems كل نتائج العناصر

قيم TPdfAttachmentExtractionState هي paesNotProcessed و paesSkipped و paesExtracted و paesUnreadable و paesFileLimit و paesAggregateLimit و paesCancelled و paesWriteFailed

يعدّ TPdfAttachmentBatchReport عدد AttachmentCount و ExtractedCount و SkippedCount و FailedCount إلى جانب BytesWritten و PeakBufferBytes

يعني Completed أن كل عنصر بلغ حالة نهائية دون إلغاء، بينما تشترط قيمة الدالة المُعادة إضافةً أن يكون FailedCount = 0

يُبلِّغ PeakBufferBytes عن أكبر مخزن حمولة لـ PDFium Delphi Component ولا يشمل الذاكرة الخاصة التي يستخدمها PDFium أثناء فك الترميز

مثال

var Options: TPdfAttachmentBatchOptions;
var Report: TPdfAttachmentBatchReport;
Options := TPdfAttachmentBatchOptions.Default;
Options.MaxFileBytes := 64 * 1024 * 1024;
Options.MaxTotalBytes := 256 * 1024 * 1024;
if not Pdf1.ExtractAttachmentsToStreams(Destinations, Options, Report) then
  HandleAttachmentBatchFailure(Report);

انظر أيضًا

Attachment, AttachmentCount, AttachmentDescription, AttachmentName, AttachmentType