Pluggable paginarenderbackends
HotPDF kan bitmaprendering van geladen pagina's routeren via een door de toepassing gedefinieerde backend, met de bestaande renderer als zero-configuratie-default en optionele fallback
Ingebouwde native backend
PDF.UseNativeGDIRenderBackend; Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend stelt de gevestigde Windows native GDI-renderer bloot via hetzelfde publieke backendcontract dat externe implementaties gebruiken
Zijn capabilities melden prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement en prbcThreadSafe, zonder prbcDeviceAcceleration te claimen
SIMD-scanline-backend
var Backend: IHPDFPageRenderBackend; begin Backend := THPDFSIMDScanlineRenderBackend.Create; PDF.PageRenderBackend := Backend; Bitmap := PDF.RenderLoadedPageToBitmap(0, 144); end;
THPDFSIMDScanlineRenderBackend doet een preflight over de complete gecompileerde displaylijst en schrijft vervolgens ondersteunde DeviceRGB- of DeviceGray-rechthoekvullingen direct in het uiteindelijke 32-bit bitmupperlak via batches van 64 bytes en vectoren van 16 bytes voor de staart
Samengestelde rechthoekpaden volgen de nonzero- of even-odd-fill-regel als één verfoperatie, met behoud van gaten, getransformeerde subpadrichting en eerder getekende inhoud; rasterisering controleert annulering in begrensde batches en gooit gedeeltelijke oppervlakken weg
De backend accepteert graphics-state save en restore, orthogonale schaal-, translatie- en haakse rotatiematrices, wisselingen van vulkleur, rechthoeken, vuloperatoren en path reset; tekst, willekeurige paden, lijnen, afbeeldingen, transparantie, clipping, patronen, shadings, niet-ondersteunde kleurruimten en niet-orthogonale transformaties weigeren vóór bitmapallocatie
Zijn capabilities melden prbcSIMD, prbcThreadSafe en prbcDeterministic, zonder deviceversnelling, transparantie of kleurbeheer te claimen
THPDFSIMDRenderBackendStatistics rapporteert directe oppervlakken, gerenderde rechthoeken, vectorblokken, scalaire staartpixels en de exacte geweigerde operator wanneer fallback nodig is
Contract voor custom backends
Implementeer IHPDFPageRenderBackend en wijs die toe aan THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest levert de gevraagde pagina-index en DPI, de gecompileerde THPDFPageDisplayList en een THPDFRenderDocAccess-resolver voor streams, afbeeldingen, fonts, optional content, kleurbeheer en annulering
Een backend kan elke gecompileerde operator inspecteren via THPDFPageDisplayList.GetToken zonder pagina-inhoud opnieuw te parsen
Geef True terug met een nieuw toegewezen TBitmap om het bitmuppeigendom over te dragen aan HotPDF; geef False terug zonder bitmap om het verzoek te weigeren
Concurrentie en fallback
Backends die prbcThreadSafe melden, kunnen gelijktijdig draaien via beide parallelle pagina-renderpijplijnen
Backends zonder die capability worden geserialiseerd via een eigen aanroeppslot, terwijl de displaylijst-compilatie gelijktijdig blijft
rbfpSoftwareFallback herhaalt een onbeschikbaar, geweigerd of mislukt backendverzoek met de bestaande renderer, terwijl rbfpFail een EHPDFRenderBackend opwerpt
Een backend kan optioneel IHPDFPageRenderBackendFailureInfo implementeren of een diagnostische reden per verzoek teruggeven, zodat gelijktijdige weigeringen de reden van de exacte renderpoging bewaren
Het wisselen van backend ongelt cache-items voor gerenderde pagina's in geheugen en persistente opslag, zodat beelden van verschillende renderers nooit worden gemengd
Diagnostiek en visuele poort
THPDFRenderBackendStatistics rapporteert pogingen, successen, fouten, software-fallbacks, geserialiseerde aanroepen, verstreken tijd, backendnaam en de laatste foutreden
De ingebouwde parity-fixture gebruikt overlappende transparantie en meldt op Win32 en Win64 een maximale Delta E van 0, nul RGB-fout in alpha-compositing en nul verschillende pixels ten opzichte van de default-renderer