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

API correlate