Pluggable Page Render Backends

‏HotPDF می‌تواند رندر بیت‌مپ صفحه بارگذاری‌شده را از طریق بک‌اند تعریف‌شده توسط برنامه مسیریابی کند و رندرکنندهٔ موجود را به‌عنوان پیش‌فرض بدون‌پیکربندی و جایگزین اختیاری نگه دارد

بک‌اند بومی داخلی

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

THPDFNativeGDIRenderBackend رندرکننده بومی GDI جاافتاده ویندوز را از طریق همان قرارداد عمومی بک‌اندی که پیاده‌سازی‌های بیرونی استفاده می‌کنند در معرض دید می‌گذارد

قابلیت‌هایش prbcNative، prbcDeterministic، prbcTransparency، prbcColourManagement و prbcThreadSafe را اعلام می‌کند بدون ادعای prbcDeviceAcceleration

بک‌اند خط‌پویش SIMD

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

THPDFSIMDScanlineRenderBackend ابتدا display list کامپایل‌شدهٔ کامل را preflight می‌کند و سپس پر کردن مستطیل‌های DeviceRGB یا DeviceGray پشتیبانی‌شده را از طریق دسته‌های 64 بایتی و دنباله‌های برداری 16 بایتی مستقیماً در سطح بیت‌مپ 32 بیتی نهایی می‌نویسد

مسیرهای مستطیلی مرکب به‌عنوان یک عملیات رنگ مطابق قاعدهٔ پر کردن nonzero یا even-odd دنبال می‌شوند و حفره‌ها، جهت زیرمسیرهای ترنسفورم‌شده و محتوای رنگ‌آمیزی‌شدهٔ قبلی حفظ می‌شوند؛ rasterization در دسته‌های محدود لغو عملیات را بررسی می‌کند و سطوح ناقص را دور می‌اندازد

این بک‌اند ذخیره و بازیابی وضعیت گرافیک، مقیاس عمود‌زا، ماتریس‌های جابه‌جایی و چرخش قائم‌زا، تغییر رنگ پر، مستطیل‌ها، عملگرهای پر و بازنشانی مسیر را می‌پذیرد؛ متن، مسیرهای دلخواه، خط‌کشی‌ها، تصاویر، شفافیت، برش، الگوها، سایه‌زنی‌ها، فضاهای رنگ پشتیبانی‌نشده و تبدیل‌های غیرعمودزا پیش از تخصیص بیت‌مپ رد می‌شوند

قابلیت‌هایش prbcSIMD، prbcThreadSafe و prbcDeterministic را اعلام می‌کند بدون ادعای شتاب‌دهی دستگاه، شفافیت یا مدیریت رنگ

THPDFSIMDRenderBackendStatistics سطوح مستقیم، مستطیل‌های رندرشده، بلوک‌های برداری، پیکسل‌های دنباله اسکالر و دقیقاً عملگر رد‌شده را وقتی جایگزین لازم است گزارش می‌کند

قرارداد بک‌اند سفارشی

را پیاده کنید و به IHPDFPageRenderBackend نسبتش دهید THotPDF.PageRenderBackend

THPDFPageRenderBackendRequest اندیس صفحه و DPI درخواستی، THPDFPageDisplayList کامپایل‌شده و یک حل‌کنندهٔ THPDFRenderDocAccess برای جریان‌ها، تصاویر، فونت‌ها، محتوای اختیاری، مدیریت رنگ و لغو فراهم می‌کند

یک بک‌اند می‌تواند هر عملگر کامپایل‌شده را از طریق THPDFPageDisplayList.GetToken بازرسی کند بدون تجزیه دوباره محتوای صفحه

True با یک TBitmap تازه‌تخصیص‌یافته False برای ردّ درخواست را بدون بیت‌مپ برگردانید

هم‌زمانی و جایگزین

بک‌اندهایی که prbcThreadSafe را اعلام کنند می‌توانند از طریق هر دو خط لوله رندر موازی صفحه هم‌زمان اجرا شوند

بک‌اندهای بدون آن قابلیت از طریق یک قفل فراخوانی اختصاصی سری می‌شوند در حالی که کامپایل display-list هم‌زمان می‌ماند

rbfpSoftwareFallback درخواست بک‌اندِ در دسترس نبودن، رد‌شده یا ناموفق را با رندرکننده موجود دوباره تلاش می‌کند، در حالی که rbfpFail مقدار EHPDFRenderBackend پرتاب می‌کند

یک بک‌اندمی‌تواند به‌اختیار IHPDFPageRenderBackendFailureInfo را پیاده کند یا دلیل تشخیصی مخصوص هر درخواست را برگرداند تا دلیلِ ردّ هم‌زمان برای همان تلاش رندر حفظ شود

تعویض بک‌اند، مدخل‌های حافظهٔ نهان صفحه‌های رندرشدهٔ درون‌حافظه‌ای و پایدار را باطل می‌کند تا تصاویر رندرکننده‌های مختلف هرگز با هم ترکیب نشوند

تشخیص‌ها و گیت بصری

THPDFRenderBackendStatistics تلاش‌ها، موفقیت‌ها، شکست‌ها، جایگزین‌های نرم‌افزاری، فراخوانی‌های سری‌شده، زمان سپری‌شده، نام بک‌اند و آخرین علت شکست را گزارش می‌کند

نمونه برابری داخلی با شفافیت هم‌پوشان اجرا می‌شود و روی Win32 و Win64 نسبت به رندرکننده پیش‌فرض، بیشینهٔ Delta E صفر، خطای RGB ترکیب آلفا صفر و شمار پیکسل متمایز صفر اعلام می‌کند

APIهای مرتبط