Pluggable Page Render Backends
HotPDF kan dirigera rendering av laddade sidor till bitmapp genom en applikationsdefinierad backend, samtidigt som den befintliga renderaren behålls som standard utan konfiguration och som valfri reservväg
Inbyggd inhemsk backend
PDF.UseNativeGDIRenderBackend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
THPDFNativeGDIRenderBackend exponerar den beprövade inhemska Windows GDI-renderaren via samma publika backend-kontrakt som externa implementationer använder
Dess kapabiliteter deklarerar prbcNative, prbcDeterministic, prbcTransparency, prbcColourManagement och prbcThreadSafe utan att göra anspråk på prbcDeviceAcceleration
SIMD-scanline-backend
var
Backend: IHPDFPageRenderBackend;
begin
Backend := THPDFSIMDScanlineRenderBackend.Create;
PDF.PageRenderBackend := Backend;
Bitmap := PDF.RenderLoadedPageToBitmap(0, 144);
end;
THPDFSIMDScanlineRenderBackend preflightar den fullständiga kompilerade display list:en och skriver därefter DeviceRGB- eller DeviceGray-rektangelfyllningar som stöds direkt till den slutliga 32-bitars bitmappytan via 64-bytes batcher och 16-bytes vektorsvansar
Sammansatta rektangelvägar följer nonzero- eller even-odd-fyllnadsregeln som en enda målning, och bevarar hål, transformerade delbanors riktning och tidigare målat innehåll; rasteriseringen kontrollerar annullering i avgränsade omgångar och kastar partiella ytor
Backenden accepterar graphics-state save/restore, ortogonal skalning, translations- och rätningsrotationsmatriser, ändringar av fyllnadsfärg, rektanglar, fyllnadsoperatörer och banåterställning; text, godtyckliga banor, streck, bilder, transparens, klippning, mönster, skuggningar, ej stödda färgrymder och icke-ortogonala transformer tackar nej före bitmappsallokeringen
Dess kapabiliteter deklarerar prbcSIMD, prbcThreadSafe och prbcDeterministic utan att göra anspråk på enhetsacceleration, transparens eller färghantering
THPDFSIMDRenderBackendStatistics rapporterar direkta ytor, renderade rektanglar, vektorblock, skalära svanspixlar och den exakt avvisade operatören när en reservväg krävs
Eget backend-kontrakt
Implementera IHPDFPageRenderBackend och tilldela den till THotPDF.PageRenderBackend
THPDFPageRenderBackendRequest tillhandahåller det begärda sidindexet och DPI, den kompilerade THPDFPageDisplayList, och en THPDFRenderDocAccess -resolver för strömmar, bilder, typsnitt, valfritt innehåll, färghantering och avbrott
En backend kan granska varje kompilerad operatör via THPDFPageDisplayList.GetToken utan att reparsa sidinnehållet
Returnera True med en ny allokerad TBitmap för att överföra bitmappsägandeskapet till HotPDF; returnera False utan bitmapp för att tacka nej till begäran
Konkurrens och reservväg
Backends som deklarerar prbcThreadSafe kan köras samtidigt genom båda de parallella sidrenderingspipelines
Backends utan den kapabiliteten serieras via ett dedikerat anropslås medan display-list-kompileringen förblir samtidig
rbfpSoftwareFallback tar om en otillgänglig, avslagen eller misslyckad backend-begäran med den befintliga renderaren, medan rbfpFail kastar EHPDFRenderBackend
En backend kan valfritt implementera IHPDFPageRenderBackendFailureInfo eller returnera en diagnostisk orsak per begäran, så att samtidiga avslag behåller orsaken för just det renderingsförsöket
Att byta backend ogiltigförklarar cacheposter för renderade sidor, både i minnet och beständiga, så att bilder från olika renderare aldrig blandas
Diagnostik och visuell gate
THPDFRenderBackendStatistics rapporterar försök, framgångar, misslyckanden, mjukvarureservvägar, serierade anrop, förfluten tid, backend-namn och den senaste fellorsaken
Den inbyggda paritetsfixturen använder överlappande transparens och deklarerar maximal Delta E 0, RGB-fel vid alfasammansättning 0 och antal avvikande pixlar 0 mot standardrenderaren på Win32 och Win64