Pluggable Page Render Backends
HotPDF dokáže smerovať bitmapové renderovanie načítaných strán cez backend definovaný aplikáciou a pritom ponechať existujúci renderer ako predvolený bez konfigurácie a ako voliteľný fallback
Vstavaný natívny backend
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend sprístupňuje etablovaný natívny GDI renderer Windows cez tú istú verejnú backend zmluvu, ktorú používajú externé implementácie
Jeho schopnosti deklarujú prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement a prbcThreadSafe bez nároku na prbcDeviceAcceleration
SIMD backend skenovania riadkov
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend urobí preflight kompletného zostaveného display listu a potom zapisuje podporované výplne obdĺžnikov DeviceRGB alebo DeviceGray priamo do finálnej 32-bitovej bitmapovej plochy cez dávky po 64 bajtoch a vektorové chvosty po 16 bajtoch
Zložené obdĺžnikové cesty nasledujú pravidlo výplne nonzero alebo even-odd ako jedna paint operácia a zachovávajú diery, smer transformovaných subpath a predtým nakreslený obsah; rasterizácia kontroluje zrušenie v ohraničených dávkach a zahodí čiastočné plochy
Backend prijíma uloženie a obnovu grafického stavu, ortogonálne mierky, translácie a matice pravouhlých rotácií, zmeny farby výplne, obdĺžniky, operátory výplne a reset cesty; text, ľubovoľné cesty, ťahy, obrázky, priehľadnosť, orezávanie, vzorky, shadingy, nepodporované farebné priestory a neortogonálne transformácie sa odmietnu skôr, než sa alokuje bitmap
Jeho schopnosti deklarujú prbcSIMD, prbcThreadSafe a prbcDeterministic bez nároku na akceleráciu zariadením, priehľadnosť alebo správu farieb
THPDFSIMDRenderBackendStatistics hlási priame plochy, vyrenderované obdĺžniky, vektorové bloky, skalárne koncové pixely a presný zamietnutý operátor, keď je potrebný fallback
Vlastná backend zmluva
Implementujte IHPDFPageRenderBackend a priraďte ho do THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest dodáva požadovaný index stránky a DPI, skompilovaný THPDFPageDisplayList a resolver THPDFRenderDocAccess pre streamy, obrázky, fonty, optional content, správu farieb a rušenie
Backend môže skúmať každý skompilovaný operátor cez THPDFPageDisplayList.GetToken bez opätovného parsovania obsahu stránky
Vráťte True s novo alokovaným TBitmap na prevod vlastníctva bitmapu na HotPDF; vráťte False bez bitmapu na zamietnutie požiadavky
Súbežnosť a fallback
Backendy deklarujúce prbcThreadSafe môžu bežať súbežne cez obe paralelné pipeline renderovania stránok
Backendy bez tejto schopnosti sa serializujú cez vyhradený zámok volania, zatiaľ čo kompilácia display listov zostáva súbežná
rbfpSoftwareFallback opakuje nedostupnú, zamietnutú alebo zlyhavšiu požiadavku backendu s existujúcim rendererom, zatiaľ čo rbfpFail vyvolá EHPDFRenderBackend
Backend môže voliteľne implementovať IHPDFPageRenderBackendFailureInfo alebo vrátiť diagnostický dôvod na požiadavku, takže súbežné zamietnutia si uchovajú dôvod presného pokusu o render
Zmena backendu zneplatní položky cache vyrenderovaných stránok v pamäti aj perzistentné, takže sa obrázky z rôznych rendererov nikdy nezmiešajú
Diagnostika a vizuálna brána
THPDFRenderBackendStatistics hlási pokusy, úspechy, zlyhania, softvérové fallbacky, serializované volania, uplynulý čas, názov backendu a dôvod posledného zlyhania
Vstavaná testovacia zostáva parity používa prekrývajúcu sa priehľadnosť a deklaruje maximálne Delta E 0, chybu RGB alfa kompozície 0 a počet odlišných pixelov 0 voči predvolenému rendereru na Win32 a Win64