Backend-uri de randare a paginilor plugabile
HotPDF poate ruta randarea bitmap a paginilor încărcate printr-un backend definit de aplicație, păstrând renderer-ul existent ca implicit fără configurare și ca rezervă opțională
Backend nativ integrat
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend expune renderer-ul nativ GDI Windows consacrat prin același contract public de backend folosit de implementările externe
Capacitățile sale declară prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement și prbcThreadSafe fără a revendica prbcDeviceAcceleration
Backend SIMD pe linii de scanare
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend verifică în avans display list-ul complet compilat, apoi scrie direct în suprafața finală de bitmap pe 32 de biți umpluturile suportate de dreptunghi DeviceRGB sau DeviceGray, prin loturi de 64 de octeți și cozi vectoriale de 16 octeți
Traseele compuse de dreptunghiuri urmează regula de umplutură nonzero sau even-odd ca o singură operație de pictare, păstrând găurile, direcția subtraseelor transformate și conținutul pictat anterior; rasterizarea verifică anularea în loturi limitate și aruncă suprafețele parțiale
Backend-ul acceptă salvarea și restabilirea stării grafice, matrici de scalare ortogonală, de translație și de rotație la unghi drept, schimbări de culoare de umplutură, dreptunghiuri, operatori de umplutură și resetare de traseu; textul, traseele arbitrare, contururile, imaginile, transparența, decuparea, pattern-urile, umbririle, spațiile de culoare nesuportate și transformările non-ortogonale sunt refuzate înainte de alocarea bitmap-ului
Capabilitățile sale declară prbcSIMD, prbcThreadSafe și prbcDeterministic, fără a revendica accelerare de dispozitiv, transparență sau gestionare a culorilor
prbcDeviceAcceleration
Contract de backend personalizat
Implementați IHPDFPageRenderBackend și atribuiți-l la THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest furnizează indexul și DPI-ul paginii solicitate, THPDFPageDisplayList-ul compilat și un rezolvator THPDFRenderDocAccess pentru fluxuri, imagini, fonturi, conținut opțional, gestionarea culorii și anulare
Un backend poate inspecta fiecare operator compilat prin THPDFPageDisplayList.GetToken fără a reanaliza conținutul paginii
Returnați True cu un TBitmap nou alocat pentru a transfera proprietatea bitmap-ului către HotPDF; returnați False fără bitmap pentru a refuza cererea
Concurență și fallback
Backend-urile care declară prbcThreadSafe pot rula concurent prin ambele pipeline-uri paralele de randare a paginilor
Backend-urile fără acea capacitate sunt serializate printr-o blocare dedicată de apel, în timp ce compilarea listelor de afișare rămâne concurentă
rbfpSoftwareFallback reîncearcă o cerere de backend indisponibilă, refuzată sau eșuată cu renderer-ul existent, în timp ce rbfpFail ridică EHPDFRenderBackend
Schimbarea backend-ului invalidează intrările de cache de pagini randate din memorie și persistente, astfel încât imaginile de la renderer-e diferite nu sunt niciodată amestecateIHPDFPageRenderBackendFailureInfo sau să returneze un motiv de diagnostic per cerere, astfel încât refuzurile concurente păstrează motivul încercării exacte de randare
Schimbarea backend-ului invalidează intrările din cache-ul de pagini randate din memorie și persistent, astfel încât imaginile de la randări diferite să nu fie amestecate niciodată
Diagnosticare și poartă vizuală
THPDFRenderBackendStatistics raportează încercări, succese, eșecuri, fallback-uri software, apeluri serializate, timp scurs, numele backend-ului și ultimul motiv de eșec
Dispozitivul de paritate încorporat folosește transparență suprapusă și declară Delta E maxim 0, eroare RGB de compunere alfa 0 și număr de pixeli diferiți 0 față de renderer-ul implicit pe Win32 și Win64