Pluggable Page Render Backends
O HotPDF pode encaminhar a renderização de bitmap de páginas carregadas por um backend definido pelo aplicativo, mantendo o renderizador existente como padrão sem configuração e fallback opcional
Backend nativo embutido
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend expõe o renderizador GDI nativo do Windows, já consolidado, por meio do mesmo contrato público de backend usado por implementações externas
As capacidades dele declaram prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement e prbcThreadSafe, sem reivindicar prbcDeviceAcceleration
Backend SIMD de scanlines
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend faz o preflight da display list compilada completa e depois grava preenchimentos de retângulos DeviceRGB ou DeviceGray suportados diretamente na superfície final de bitmap de 32 bits, por meio de lotes de 64 bytes e caudas vetoriais de 16 bytes
Paths compostos de retângulos seguem a regra de preenchimento nonzero ou even-odd como uma única operação de pintura, preservando buracos, direção de subpaths transformados e conteúdo pintado anteriormente; a rasterização checa cancelamento em lotes limitados e descarta superfícies parciais
O backend aceita save e restore de graphics state, matrizes de escala ortogonal, translação e rotação em ângulos retos, mudanças de cor de preenchimento, retângulos, operadores de preenchimento e reset de path; texto, paths arbitrários, strokes, imagens, transparência, clipping, padrões, shadings, espaços de cor não suportados e transforms não ortogonais declinam antes da alocação do bitmap
As capacidades dele declaram prbcSIMD, prbcThreadSafe e prbcDeterministic, sem reivindicar aceleração de dispositivo, transparência ou gestão de cores
THPDFSIMDRenderBackendStatistics reporta superfícies diretas, retângulos renderizados, blocos vetoriais, pixels de cauda escalares e o operador exato rejeitado quando o fallback é necessário
Contrato de backend customizado
Implemente IHPDFPageRenderBackend e atribua-o a THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest fornece o índice de página e o DPI solicitados, o THPDFPageDisplayList compilado e um resolver THPDFRenderDocAccess para streams, imagens, fontes, optional content, gestão de cores e cancelamento
Um backend pode inspecionar cada operador compilado por meio de THPDFPageDisplayList.GetToken sem reparsear o conteúdo da página
Retorne True com um TBitmap recém-alocado para transferir a posse do bitmap ao HotPDF; retorne False sem bitmap para declinar da requisição
Concorrência e fallback
Backends que declaram prbcThreadSafe podem rodar concorrentemente pelos dois pipelines paralelos de renderização de páginas
Backends sem essa capacidade são serializados por meio de um lock dedicado de chamadas, enquanto a compilação de display lists permanece concorrente
rbfpSoftwareFallback repete com o renderizador existente uma requisição de backend indisponível, declinada ou falha, enquanto rbfpFail dispara EHPDFRenderBackend
Um backend pode opcionalmente implementar IHPDFPageRenderBackendFailureInfo ou retornar um motivo de diagnóstico por requisição, para que declínios concorrentes retenham o motivo da tentativa exata de renderização
Trocar o backend invalida as entradas em memória e persistentes do cache de páginas renderizadas, para que imagens de renderizadores diferentes nunca sejam misturadas
Diagnósticos e gate visual
THPDFRenderBackendStatistics reporta tentativas, sucessos, falhas, fallbacks de software, chamadas serializadas, tempo decorrido, nome do backend e o último motivo de falha
O fixture de paridade embutido usa transparência sobreposta e declara Delta E máximo 0, erro RGB de alpha compositing 0 e contagem de pixels diferentes 0 contra o renderizador padrão no Win32 e no Win64