Backends de renderizado de página conectables
HotPDF puede enrutar el renderizado de mapas de bits de páginas cargadas a través de un backend definido por la aplicación conservando el renderizador existente como valor predeterminado sin configuración y respaldo opcional
Backend nativo integrado
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend expone el renderizador GDI nativo de Windows establecido a través del mismo contrato de backend público usado por las implementaciones externas
Sus capacidades declaran prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement y prbcThreadSafe sin reclamar prbcDeviceAcceleration
Backend de líneas de escaneo SIMD
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend hace preflight de la display list compilada completa y después escribe los rellenos de rectángulo DeviceRGB o DeviceGray soportados directamente en la superficie bitmap final de 32 bits mediante lotes de 64 bytes y colas vectoriales de 16 bytes
Los trazados de rectángulos compuestos siguen la regla de relleno nonzero o even-odd como una sola operación de pintado, conservando los agujeros, la dirección de los subtrazados transformados y el contenido pintado previamente; la rasterización comprueba la cancelación en lotes acotados y descarta las superficies parciales
El backend acepta guardado y restauración del estado de gráficos, escalado ortogonal, matrices de traslación y rotación en ángulo recto, cambios de color de relleno, rectángulos, operadores de relleno y reset de trazado; el texto, los trazados arbitrarios, los trazos, las imágenes, la transparencia, el clipping, los patrones, los shadings, los espacios de color no soportados y las transformadas no ortogonales se declinan antes de asignar el bitmap
Sus capacidades declaran prbcSIMD, prbcThreadSafe y prbcDeterministic sin reclamar aceleración por dispositivo, transparencia ni gestión de color
THPDFSIMDRenderBackendStatistics informa de superficies directas, rectángulos renderizados, bloques vectoriales, 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 el DPI solicitados, el THPDFPageDisplayList compilado y un resolvedor THPDFRenderDocAccess para flujos, imágenes, fuentes, contenido opcional, gestión de color y cancelación
Un backend puede inspeccionar cada operador compilado mediante THPDFPageDisplayList.GetToken sin volver a analizar el contenido de la página
Devuelva True con un TBitmap recién asignado para transferir la propiedad del mapa de bits a HotPDF; devuelva False sin mapa de bits para rechazar la solicitud
Concurrencia y respaldo
Los backends que declaran prbcThreadSafe pueden ejecutarse concurrentemente a través de ambas tuberías paralelas de renderizado de páginas
Los backends sin esa capacidad se serializan mediante un lock de llamada dedicado, mientras que la compilación de la display-list sigue siendo concurrente
rbfpSoftwareFallback reintenta con el renderer existente una petición de backend no disponible, rechazada o fallida, mientras que rbfpFail lanza EHPDFRenderBackend
Un backend puede implementar opcionalmente IHPDFPageRenderBackendFailureInfo o devolver un motivo de diagnóstico por petición para que los rechazos concurrentes conserven el motivo del intento de render exacto
Cambiar el backend invalida las entradas en memoria y persistentes de la caché de páginas renderizadas para que nunca se mezclen imágenes de renderers distintos
Diagnósticos y compuerta visual
THPDFRenderBackendStatistics informa de intentos, éxitos, fallos, respaldos de software, llamadas serializadas, tiempo transcurrido, nombre del backend y el motivo del último fallo
El fixture de paridad integrado usa transparencia superpuesta y declara Delta E máximo 0, error RGB de alpha-compositing 0 y recuento de píxeles diferentes 0 frente al renderer por defecto en Win32 y Win64