PDFium Delphi Component Docs

سياسات LoadDocument والإخراج المُصلَح

المكوّن: TPdf  ·  الوحدة: PDFium
فتح ملف PDF بسياسة توافق أو صرامة أو استرداد وكتابة نسخة مُصلَحة مُتحقق منها مستقلًا اختياريًا

الصياغة

procedure LoadDocument;

 

procedure LoadDocument(Data: Pointer; Size: NativeUInt; Buffered: Boolean = True);

DataPointer. مؤشر إلى بيانات PDF الخام في الذاكرة.
SizeNativeUInt. حجم مخزن البيانات بالبايتات.
BufferedBoolean. عندما يكون True (الافتراضي)، يحتفظ TPdf بنسخته الخاصة. عندما يكون False، يجب أن يظل المخزن صالحًا حتى إلغاء تحميل المستند.

 

procedure LoadDocument(const Data: TBytes; Buffered: Boolean = True);

DataTBytes. محتوى ملف PDF كمصفوفة بايتات.
BufferedBoolean. عندما يكون True (الافتراضي)، يحتفظ TPdf بنسخته الخاصة. عندما يكون False، يجب أن تظل مصفوفة البايتات صالحة ودون تغيير حتى إلغاء تحميل المستند.

 

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; Buffered: Boolean = True);

DataTBytes. مصفوفة البايتات الداعمة التي تحتوي نافذة PDF.
IndexInteger. إزاحة أول بايت PDF صفرية الأساس.
CountInteger. عدد بايتات PDF المطلوب تحميلها.
BufferedBoolean. عندما يكون True (الافتراضي)، ينسخ TPdf النافذة المختارة فقط. عندما يكون False، يجب أن تظل مصفوفة البايتات الداعمة صالحة ودون تغيير حتى إلغاء تحميل المستند.

 

procedure LoadDocument(Data: TMemoryStream; Buffered: Boolean = True);

DataTMemoryStream. كائن TMemoryStream يحتوي بيانات PDF.
BufferedBoolean. عندما يكون True (الافتراضي)، يحتفظ TPdf بنسخته الخاصة. عندما يكون False، يجب أن تظل ذاكرة التيار صالحة حتى إلغاء تحميل المستند.

 

procedure LoadDocument(const Options: TPdfLoadOptions; out Report: TPdfLoadReport);

procedure LoadDocument(Data: Pointer; Size: NativeUInt; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

procedure LoadDocument(const Data: TBytes; Index, Count: Integer; const Options: TPdfLoadOptions; out Report: TPdfLoadReport; Buffered: Boolean = True);

 

function SaveAsRepaired(Stream: TStream; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

function SaveAsRepaired(const FileName: string; out Report: TPdfRepairReport; AllowSignedDocument: Boolean = False): Boolean;

الوصف

تستخدم التحميلات القديمة وضع التوافق وتحافظ على سلوكها الحالي مع نشر صلاحية xref الأصلية وحالة الاسترداد عبر LastLoadReport. يقرأ التحميل بدون معاملات من المسار المخزَّن في FileName. تحمِّل تحميلات Pointer و TBytes و TMemoryStream مباشرة من بيانات في الذاكرة، متجاوزة نظام الملفات. يختار تحميل نطاق البايتات ملف PDF مضمَّنًا من حاوية أكبر، أو إطار بروتوكول، أو مخزن استقبال قابل لإعادة الاستخدام دون إنشاء شريحة TBytes مؤقتة.

عندما تكون Buffered تساوي True (الافتراضي)، تنسخ TPdf البايتات المعطاة إلى مخزنها المحتفظ به. وعندما تكون False، يجب أن يظل مخزن المستدعي صالحًا ودون تغيير حتى UnloadDocument أو Active := False — وهذا يوفر نسخة إضافية لكنه يتطلب إدارة دقيقة لدورات الحياة.

يرفض تحميل نطاق البايتات القيم السالبة، أو Index يتجاوز طول البيانات، أو Count يمتد إلى ما بعد البايتات المتبقية. يرفض تحميل المؤشر nil عندما يكون Size غير صفري؛ ويرفض تحميل TMemoryStream تيارًا nil قبل تغيير أي حالة مستند

عند النجاح، يصبح Active هو True وتعكس جميع خصائص الصفحة الصفحة الأولى (PageNumber = 1). عند الفشل، يُرفع استثناء EPdfError.

Load policies

يزوِّد TPdfLoadOptions.Default قيمًا افتراضية محدودة لبايتات المصدر والمشكلات وأقسام xref ومدخلات xref وأرقام الكائنات. يظل PDFium هو المحلل الدلالي في كل وضع؛ ويوجد تدقيق المُغلِّف لأن ABI العام لـ PDFium يُبلِّغ صلاحية xref لكنه لا يكشف مفتاحًا يعطِّل استرداد المحلل

يتبع التدقيق جداول xref الكلاسيكية، وتيارات xref، والمراجعات الهجينة، وسلاسل /Prev. يُبلِّغ عن أقسام تالفة، ودورات، ومدخلات متعارضة، وإزاحات كائنات تالفة، وعلامات نهاية مفقودة، ومرشحات تيار غير مدعومة، واستنفاد ميزانية، واسترداد أصلي. يعيِّن تجاوز ميزانية تدقيق مهيأة AuditComplete إلى False وينتج تحذيرًا؛ ولا يدعي وحده أن البايتات غير المدققة غير صالحة

يظل InspectAvailability هو مسبار التوفر الأصلي خفيف الوزن للتخطيط الخطي وتحميل الصفحة أولًا؛ ولا يحل محل تقرير التحميل البنيوي

Reports

يتضمن TPdfLoadReport كلاً من Status و CrossReferenceTableValid و UsedRecovery و RecoveryRoute، وإزاحات المصدر والبنية، وعدادات الأقسام والمدخلات، وعدادات التعارض والضرر، وإجماليات المشكلات، وحالة الاقتطاع، ومصفوفة Issues مُنمَّطة. يُخزَّن التقرير نفسه في LastLoadReport

يسجل TPdfRepairReport ما إذا استخدم المصدر الاسترداد، وحجم الإخراج وعدد الصفحات، وصلاحية xref للإخراج، ونص الخطأ النهائي، وتقرير التحقق المستقل الكامل بالتحميل الصارم

Repaired output

يطلب SaveAsRepaired من PDFium كتابة نسخة كاملة غير تزايدية، ثم يفتح ذلك الإخراج في TPdf معزول مع plmStrict. لا تسلم الطريقة البايتات إلا بعد اجتياز صلاحية xref واتساق عدد الصفحات. يكتب تحميل الملف الزائد عبر ملف مؤقت في نفس الدليل ويستبدل الوجهة ذريًا

تزيل إعادة الكتابة الكاملة السجل التزايدي السابق وتبطل نطاقات بايتات التوقيع الموجودة. تُرفض المستندات الموقَّعة ما لم يكن AllowSignedDocument هو True صراحةً. تُصلح الطريقة البنى التي يستطيع PDFium تحميلها وإعادة كتابتها بنجاح؛ ولا تضمن استرداد المحتوى التالف العشوائي أو الحفاظ على التوقيعات الرقمية

مثال

// From file
Pdf.FileName := 'C:\docs\file.pdf';
Pdf.LoadDocument;

// From TBytes
var Bytes: TBytes;
Bytes := TFile.ReadAllBytes('file.pdf');
Pdf.LoadDocument(Bytes);

// From a PDF embedded in a larger byte array
Pdf.LoadDocument(Container, PdfOffset, PdfLength);

// From TMemoryStream (unbuffered)
Pdf.LoadDocument(FStream, False);

// Reject hidden parser recovery
Options := TPdfLoadOptions.Default(plmStrict);
Pdf.LoadDocument(Options, Report);

// Rewrite and independently verify a recovered document
Pdf.SaveAsRepaired('C:\docs\repaired.pdf', RepairReport);

انظر أيضًا

Active, FileName, LoadCustomDocument, SaveAs