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

API-uri conexe