Backends de renderização de página plugáveis
O HotPDF pode encaminhar a renderização bitmap de páginas carregadas através de um backend definido pela aplicação, mantendo o renderer existente como predefinição de configuração zero e fallback opcional
Backend nativo integrado
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend expõe o consolidado renderer GDI nativo Windows através do mesmo contrato público de backend usado por implementações externas
As suas capacidades declaram prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement e prbcThreadSafe, sem reivindicar prbcDeviceAcceleration
Backend SIMD por linhas
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 escreve preenchimentos retangulares DeviceRGB ou DeviceGray suportados diretamente na superfície bitmap final de 32 bits, através de lotes de 64 bytes e caudas vetoriais de 16 bytes
Os paths retangulares compostos seguem a regra de fill nonzero ou even-odd como uma única operação de pintura, preservando buracos, a direção transformada de subpaths e o conteúdo previamente pintado; a rasterização verifica o cancelamento em lotes limitados e descarta superfícies parciais
O backend aceita save e restore de estado gráfico, matrizes de escala ortogonal, translação e rotação de ângulos retos, mudanças de cor de fill, retângulos, operadores de fill e reset de path; texto, paths arbitrários, strokes, imagens, transparência, clipping, padrões, shadings, espaços de cor não suportados e transformações não ortogonais declinam antes da alocação do bitmap
As suas capacidades declaram prbcSIMD, prbcThreadSafe e prbcDeterministic, sem reivindicar aceleração por dispositivo, transparência ou gestão de cor
THPDFSIMDRenderBackendStatistics informa superfícies diretas, retângulos renderizados, blocos vetoriais, píxeis de cauda escalares e o operador exato rejeitado quando é preciso fallback
Contrato de backend personalizado
Implemente IHPDFPageRenderBackend e atribua-o a THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest fornece o índice de página e o DPI pedidos, a THPDFPageDisplayList compilada e um resolvedor THPDFRenderDocAccess para streams, imagens, fontes, conteúdo opcional, gestão de cor e cancelamento
Um backend pode inspecionar cada operador compilado através de THPDFPageDisplayList.GetToken sem reanalisar o conteúdo da página
Devolva True com um TBitmap recentemente alocado para transferir a propriedade do bitmap para o HotPDF; devolva False sem bitmap para declinar o pedido
Concorrência e fallback
Backends que declarem prbcThreadSafe podem correr em concorrência através de ambos os pipelines paralelos de renderização de páginas
Backends sem essa capacidade são serializados através de um lock de chamadas dedicado, enquanto a compilação da display list permanece concorrente
rbfpSoftwareFallback repete com o renderer existente um pedido de backend indisponível, declinado ou falhado, enquanto rbfpFail gera EHPDFRenderBackend
Um backend pode opcionalmente implementar IHPDFPageRenderBackendFailureInfo ou devolver um motivo de diagnóstico por pedido, para que declinações concorrentes retenham o motivo da tentativa exata de renderização
Mudar de backend invalida as entradas de cache de páginas renderizadas em memória e persistentes, para que imagens de renderers diferentes nunca se misturem
Diagnósticos e gate visual
THPDFRenderBackendStatistics informa tentativas, sucessos, falhas, fallbacks de software, chamadas serializadas, tempo decorrido, nome do backend e o último motivo de falha
O fixture de paridade integrado usa transparência sobreposta e declara Delta E máximo 0, erro RGB de alpha-compositing 0 e contagem de píxeis diferentes 0 face ao renderer predefinido, em Win32 e Win64