Render backends de páginas conectables
HotPDF puede enrutar el renderizado bitmap de páginas cargadas a través de un backend definido por la aplicación, conservando el renderer existente como predeterminado de cero configuración y fallback opcional
Backend nativo integrado
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend expone el consolidado renderer nativo GDI de Windows a través del mismo contrato público de backend que usan las implementaciones externas
Sus capabilities declaran prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement y prbcThreadSafe sin reclamar prbcDeviceAcceleration
Backend SIMD de scanline
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend hace preflight del display list compilado completo y luego escribe los rellenos de rectángulos DeviceRGB o DeviceGray soportados directamente en la superficie bitmap final de 32 bits mediante batches de 64 bytes y colas vectoriales de 16 bytes
Los paths de rectángulos compuestos siguen la regla de relleno nonzero o even-odd como una sola operación de pintado, conservando los huecos, la dirección de los subpaths transformados y el contenido ya pintado; la rasterización comprueba la cancelación en lotes acotados y descarta las superficies parciales
El backend acepta save y restore del graphics state, escala ortogonal, matrices de traslación y rotación en ángulo recto, cambios de color de relleno, rectángulos, operadores de fill y reset de paths; el texto, los paths arbitrarios, los strokes, las imágenes, la transparencia, el clipping, los patterns, los shadings, los espacios de color no soportados y las transformadas no ortogonales declinan antes de la asignación del bitmap
Sus capabilities declaran prbcSIMD, prbcThreadSafe y prbcDeterministic sin reclamar aceleración por dispositivo, transparencia ni gestión de color
THPDFSIMDRenderBackendStatistics reporta las superficies directas, los rectángulos renderizados, los bloques vectoriales, los píxeles de cola escalares y el operador rechazado exacto cuando se requiere fallback
Contrato de backend personalizado
Implemente IHPDFPageRenderBackend y asígnelo a THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest proporciona el índice de página y DPI solicitados, el THPDFPageDisplayList compilado y un resolver THPDFRenderDocAccess para streams, imágenes, fuentes, optional content, gestión de color y cancelación
Un backend puede inspeccionar cada operador compilado mediante THPDFPageDisplayList.GetToken sin reparsear el contenido de la página
Devuelva True con un TBitmap recién asignado para transferir la propiedad del bitmap a HotPDF; devuelva False sin bitmap para declinar la solicitud
Concurrencia y fallback
Los backends que declaran prbcThreadSafe pueden ejecutarse concurrentemente a través de ambos pipelines de renderizado paralelo de páginas
Los backends sin esa capability se serializan mediante un call lock dedicado, mientras que la compilación del display list sigue siendo concurrente
rbfpSoftwareFallback reintenta con el renderer existente una solicitud de backend no disponible, declinada o fallida, mientras que rbfpFail lanza EHPDFRenderBackend
Un backend puede opcionalmente implementar IHPDFPageRenderBackendFailureInfo o devolver un motivo de diagnóstico por solicitud, de modo que las declinaciones concurrentes conserven el motivo del intento de renderizado exacto
Cambiar el backend invalida las entradas del cache de páginas renderizadas en memoria y persistente, así que nunca se mezclan imágenes de renderers diferentes
Diagnóstico y puerta visual
THPDFRenderBackendStatistics reporta intentos, éxitos, fallos, software fallbacks, llamadas serializadas, tiempo transcurrido, nombre del backend y el último motivo de fallo
El fixture de paridad integrado usa transparencia superpuesta y declara Delta E máximo 0, error RGB de alpha-compositing 0 y conteo de píxeles diferentes 0 contra el renderer predeterminado en Win32 y Win64