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

Gerelateerde API's