Backend di rendering delle pagine collegabili
HotPDF può instradare il rendering bitmap delle pagine caricate attraverso un backend definito dall'applicazione mantenendo il renderer esistente come predefinito a zero configurazione e fallback opzionale
Backend nativo integrato
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend espone il consolidato renderer GDI nativo Windows attraverso lo stesso contratto pubblico di backend usato dalle implementazioni esterne
Le sue capacità dichiarano prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement e prbcThreadSafe senza rivendicare prbcDeviceAcceleration
Backend SIMD a scanline
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend esegue il preflight dell'intera display list compilata, poi scrive i fill di rettangoli DeviceRGB o DeviceGray supportati direttamente sulla superficie bitmap finale a 32 bit attraverso batch da 64 byte e code vettoriali da 16 byte
I percorsi di rettangoli composti seguono la regola di fill nonzero o even-odd come una singola operazione di paint, preservando buchi, direzione dei sottopercorsi trasformati e contenuto precedentemente dipinto; la rasterizzazione controlla la cancellazione in batch limitati e scarta le superfici parziali
Il backend accetta save e restore dello stato grafico, scale ortogonali, matrici di traslazione e rotazione ad angolo retto, cambi di colore di riempimento, rettangoli, operatori di fill e reset del percorso; testo, percorsi arbitrari, stroke, immagini, trasparenza, clipping, pattern, shading, spazi colore non supportati e trasformazioni non ortogonali declinano prima dell'allocazione della bitmap
Le sue capacità dichiarano prbcSIMD, prbcThreadSafe e prbcDeterministic senza rivendicare accelerazione device, trasparenza o colour management
THPDFSIMDRenderBackendStatistics riporta superfici dirette, rettangoli renderizzati, blocchi vettoriali, pixel di coda scalari e l'esatto operatore rifiutato quando serve il fallback
Contratto di backend personalizzato
Implementa IHPDFPageRenderBackend e assegnala a THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest fornisce l'indice di pagina e il DPI richiesti, la THPDFPageDisplayList e una THPDFRenderDocAccess per stream, immagini, font, optional content, gestione del colore e cancellazione
Un backend può ispezionare ogni operatore compilato attraverso THPDFPageDisplayList.GetToken senza ri-analizzare il contenuto della pagina
Restituisci True with a newly allocated TBitmap per trasferire a HotPDF la proprietà della bitmap; restituisci False senza bitmap per rifiutare la richiesta
Concorrenza e fallback
I backend che dichiarano prbcThreadSafe possono girare concorrentemente attraverso entrambe le pipeline di rendering parallelo delle pagine
I backend privi di quella capacità vengono serializzati attraverso un lock di chiamata dedicato mentre la compilazione delle display list resta concorrente
rbfpSoftwareFallback ritenta con il renderer esistente una richiesta di backend non disponibile, rifiutata o fallita, mentre rbfpFail raises EHPDFRenderBackend
Un backend può facoltativamente implementare IHPDFPageRenderBackendFailureInfo oppure restituire un motivo diagnostico per richiesta così i rifiuti concorrenti conservano il motivo del tentativo di rendering esatto
Cambiare backend invalida le voci in memoria e della cache persistente delle pagine renderizzate così le immagini di renderer diversi non vengono mai mescolate
Diagnostica e gate visivo
THPDFRenderBackendStatistics riporta tentativi, successi, fallimenti, fallback software, chiamate serializzate, tempo trascorso, nome del backend e l'ultimo motivo di fallimento
La fixture di parità integrata usa trasparenza sovrapposta e dichiara Delta E massimo 0, errore RGB di alpha-compositing 0 e conteggio di pixel differenti 0 rispetto al renderer predefinito su Win32 e Win64