خلفيات عرض الصفحات القابلة للتوصيل

تستطيع HotPDF توجيه عرض الصفحات المحمّلة إلى صورة نقطية (bitmap) عبر خلفية (backend) يحدّدها التطبيق نفسه، مع الإبقاء على المُصيِّر الحالي كخيار افتراضي لا يتطلب أي إعداد وكحل احتياطي اختياري

الخلفية الأصلية المدمجة

PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);

يعرض THPDFNativeGDIRenderBackend مُصيِّر GDI الأصلي في Windows المعتمد، من خلال نفس عقد الخلفية العام الذي تستخدمه التطبيقات الخارجية

تُعلن قدراتها عن prbcNative وprbcDeterministic وprbcTransparency وprbcColourManagement وprbcThreadSafe، دون أن تدّعي دعم prbcDeviceAcceleration

خلفية SIMD للمسح السطري

var
  Backend: IHPDFPageRenderBackend;
begin
  Backend := THPDFSIMDScanlineRenderBackend.Create;
  PDF.PageRenderBackend := Backend;
  Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;

يفحص THPDFSIMDScanlineRenderBackend قائمة العرض المُجمَّعة بالكامل مسبقًا، ثم يكتب تعبئات المستطيلات المدعومة بنمط DeviceRGB أو DeviceGray مباشرةً في سطح الصورة النقطية النهائي بعمق 32 بت، عبر دفعات بحجم 64 بايت وأذيال متجهة بحجم 16 بايت

تتبع مسارات المستطيلات المركّبة قاعدة التعبئة nonzero أو even-odd كعملية رسم واحدة، مع الحفاظ على الفجوات واتجاه المسارات الفرعية المحوّلة والمحتوى المرسوم سابقًا؛ وتتحقق عملية Rasterization من طلبات الإلغاء ضمن دفعات محدودة، وتتجاهل الأسطح الجزئية

تقبل الخلفية حفظ حالة الرسومات واستعادتها، ومصفوفات التحجيم المتعامد والإزاحة والتدوير بزاوية قائمة، وتغييرات لون التعبئة، والمستطيلات، ومعاملات التعبئة، وإعادة ضبط المسار؛ أما النص والمسارات الحرة والحدود (strokes) والصور والشفافية والتقصيص (clipping) والأنماط (patterns) والتظليل (shadings) وفضاءات الألوان غير المدعومة والتحويلات غير المتعامدة، فتُرفض جميعًا قبل تخصيص الصورة النقطية

تُعلن قدراتها عن prbcSIMD وprbcThreadSafe وprbcDeterministic، دون ادعاء دعم تسريع الجهاز أو الشفافية أو إدارة الألوان

يقدّم THPDFSIMDRenderBackendStatistics تقريرًا عن الأسطح المباشرة، والمستطيلات المرسومة، والكتل المتجهة، وبكسلات الذيل القياسي، والمعامل المرفوض بالتحديد عند الحاجة إلى الخيار الاحتياطي

عقد الخلفية المخصّصة

نفِّذ IHPDFPageRenderBackend وأسنِده إلى THotPDF.PageRenderBackend

يوفر THPDFPageRenderBackendRequest رقم الصفحة المطلوبة ودقة DPI، وقائمة العرض المُجمَّعة THPDFPageDisplayList، ومحلِّل THPDFRenderDocAccess للوصول إلى التدفقات والصور والخطوط والمحتوى الاختياري وإدارة الألوان وطلبات الإلغاء

يمكن للخلفية فحص كل معامل مُجمَّع عبر THPDFPageDisplayList.GetToken دون إعادة تحليل محتوى الصفحة

أعِد True مع كائن TBitmap جديد التخصيص لنقل ملكية الصورة النقطية إلى HotPDF؛ أو أعِد False دون صورة نقطية لرفض الطلب

التزامن والخيار الاحتياطي

يمكن للخلفيات التي تُعلن prbcThreadSafe أن تعمل بشكل متزامن عبر كِلا خطّي أنابيب عرض الصفحات المتوازيَين

أما الخلفيات التي لا تمتلك هذه القدرة فيُسلسَل استدعاؤها عبر قفل مخصّص، بينما يبقى تجميع قائمة العرض متزامنًا

تُعيد rbfpSoftwareFallback محاولة طلب الخلفية غير المتاح أو المرفوض أو الفاشل باستخدام المُصيِّر الحالي، بينما يثير rbfpFail الاستثناء EHPDFRenderBackend

يمكن للخلفية اختياريًا تنفيذ IHPDFPageRenderBackendFailureInfo أو إعادة سبب تشخيصي لكل طلب على حدة، بحيث تحتفظ الرفوض المتزامنة بسبب محاولة العرض بعينها

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

التشخيص والبوابة البصرية

يقدّم THPDFRenderBackendStatistics تقريرًا عن المحاولات، وحالات النجاح، والإخفاقات، وحالات الرجوع للخيار البرمجي الاحتياطي، والاستدعاءات المسلسلة، والوقت المستغرق، واسم الخلفية، وسبب آخر إخفاق

يستخدم جهاز اختبار التكافؤ المدمج شفافية متداخلة، ويُعلن عن أقصى قيمة Delta E تساوي 0، وخطأ تركيب ألفا RGB يساوي 0، وعدد بكسلات مختلفة يساوي 0 مقارنةً بالمُصيِّر الافتراضي على كل من Win32 وWin64

واجهات برمجة ذات صلة