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

Relaterade API:er