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

APIs relacionadas