Austauschbare Backends für das Seitenrendering

HotPDF kann das Bitmap-Rendering geladener Seiten über ein anwendungsdefiniertes Backend leiten und behält dabei den bestehenden Renderer als Standard ohne Konfiguration und optionalen Fallback bei

Eingebautes natives Backend

PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);

THPDFNativeGDIRenderBackend stellt den etablierten nativen Windows-GDI-Renderer über denselben öffentlichen Backend-Vertrag bereit, den externe Implementierungen verwenden

Seine Fähigkeiten deklarieren prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement und prbcThreadSafe, ohne prbcDeviceAcceleration zu beanspruchen

SIMD-Scanline-Backend

var
  Backend: IHPDFPageRenderBackend;
begin
  Backend := THPDFSIMDScanlineRenderBackend.Create;
  PDF.PageRenderBackend := Backend;
  Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;

THPDFSIMDScanlineRenderBackend nimmt den vollständigen kompilierten Display-List vorab ab, schreibt dann unterstützte DeviceRGB- oder DeviceGray-Rechteckfüllungen direkt in die finale 32-Bit-Bitmap-Oberfläche, in 64-Byte-Chargen und 16-Byte-Vektorresten

Das Backend akzeptiert Grafikzustand sichern/wiederherstellen, orthogonale Skalierung, Translations- und Rechtwinkel-Rotationsmatrizen, Füllfarbwechsel, Rechtecke, Fülloperatoren und Pfad-Reset; Text, beliebige Pfade, Striche, Bilder, Transparenz, Clipping, Muster, Schattierungen, nicht unterstützte Farbräume und nicht orthogonale Transformationen lehnen vor der Bitmap-Allozierung ab

Das Backend akzeptiert Grafikzustand sichern/wiederherstellen, orthogonale Skalierung, Translations- und Rechtwinkel-Rotationsmatrizen, Füllfarbwechsel, Rechtecke, Fülloperatoren und Pfad-Reset; Text, beliebige Pfade, Striche, Bilder, Transparenz, Clipping, Muster, Schattierungen, nicht unterstützte Farbräume und nicht orthogonale Transformationen lehnen vor der Bitmap-Allozierung ab

Seine Capabilities deklarieren prbcSIMD, prbcThreadSafe und prbcDeterministic, ohne Gerätebeschleunigung, Transparenz oder Farbmanagement zu beanspruchen

THPDFSIMDRenderBackendStatistics meldet direkte Oberflächen, gerenderte Rechtecke, Vektorblöcke, skalare Restpixel und den exakt abgelehnten Operator, wenn ein Fallback nötig ist

Vertrag für eigene Backends

Implementieren Sie IHPDFPageRenderBackend und weisen Sie es THotPDF.PageRenderBackend zu

THPDFPageRenderBackendRequest liefert den angeforderten Seitenindex und DPI, die kompilierte THPDFPageDisplayList sowie einen THPDFRenderDocAccess-Resolver für Streams, Bilder, Fonts, optionalen Inhalt, Farbmanagement und Abbruch

Ein Backend kann jeden kompilierten Operator über THPDFPageDisplayList.GetToken prüfen, ohne den Seiteninhalt erneut zu parsen

Geben Sie True mit einem neu allokierten TBitmap zurück, um die Bitmap-Eigentümerschaft an HotPDF zu übertragen; geben Sie False ohne Bitmap zurück, um die Anforderung abzulehnen

Nebenläufigkeit und Fallback

Backends, die prbcThreadSafe deklarieren, können über beide parallelen Seitenrender-Pipelines gleichzeitig ausgeführt werden

Backends ohne diese Fähigkeit werden über eine dedizierte Aufrufsperre serialisiert, während die Kompilierung der Display-List parallel bleibt

rbfpSoftwareFallback wiederholt eine nicht verfügbare, abgelehnte oder fehlgeschlagene Backend-Anforderung mit dem bestehenden Renderer, während rbfpFail EHPDFRenderBackend auslöst

Ein Backend kann optional IHPDFPageRenderBackendFailureInfo implementieren oder einen Diagnosegrund pro Anfrage liefern, damit gleichzeitige Ablehnungen den Grund für den exakten Renderversuch behalten

Das Ändern des Backends invalidiert In-Memory- und persistente Cache-Einträge gerenderter Seiten, sodass Bilder unterschiedlicher Renderer niemals gemischt werden

Diagnose und visueller Check

THPDFRenderBackendStatistics meldet Versuche, Erfolge, Fehler, Software-Fallbacks, serialisierte Aufrufe, Laufzeit, Backendname und den letzten Fehlergrund

Das integrierte Paritätsfixture verwendet überlappende Transparenz und deklariert maximales Delta E 0, RGB-Fehler der Alpha-Komposition 0 und 0 abweichende Pixel gegenüber dem Standardrenderer unter Win32 und Win64

Verwandte APIs