Display Lists and Print Production

HotPDF kompilerar laddade sidströmmar till återanvändbara THPDFPageDisplayList instanser med THPDFDisplayListInfo mätetal och begränsningsrutor för innehållsobjekt

Dokumentrenderingen cachar kompilerade listor, medan anropare kan begära en självägd lista för upprepad körning eller regionala objektsökningar

Gemensam produktionsinterpretator

Icke-progressiv bitmapp, direkt-DC, Form och display-list-uppspelning passerar alla förtokeniserat innehåll genom HPDFInterpretContentTokensDevice, som äger operatorgenomgången och avbrytsgränserna

THPDFPageRenderer implementerar IHPDFContentOperatorDevice, så den gemensamma genomgången anropar dess fullständiga tillståndsmaskin för grafik, text, resurser, klippning, mönster, transparens, markerat innehåll och bilder utan att reducera produktionsrendering till den mindre semantiska callback-ytan

Display lists cachar operatörstokenindex medan strömmar kompileras och spelar bara upp de indexen, vilket undviker upprepade operandsökningar; THPDFPageDisplayList.OperatorCount och THPDFDisplayListInfo.OperatorCount exponerar det cachade kommandoantonet

Semantiska enheter som bara implementerar IHPDFContentDevice behåller kapabilitetsfiltrerade callbacks, medan fullständiga operatörsenheter tar emot en validerad operatör åt gången med en avbrytskontrollpunkt per operatör

Avgränsad och samtidig rendering

THPDFRenderTileEvent tar emot en anroparstor tile eller ett horisontellt band åt gången, vilket håller topplinnetminnet oberoende av hela sidstorleken

RenderLoadedPagesParallel överlappar display-list-kompilering med uppspelning, startar den första färdiga sidan utan att vänta på en fullständig kompilerbarriär, balanserar dynamiskt båda stegen över avgränsade workers och returnerar en THPDFBitmapArray i indataordning

Kompilering körs utanför display-list-cache-låset, medan dubbelkontrollerad antagning och skyddade användningsräkare låter orelaterade sidor kompilera samtidigt utan att duplicera publicerade poster eller kasta ut en lista under uppspelning

THPDFParallelRenderPipelineInfo exponerar cacheträffar, kompileringar, fullföljningar, toppkonkurrens vid kompilering och rendering, sidor kompilerade vid första resultat, svarstid till första resultat och total förfluten tid

RenderLoadedPagesParallelOrdered lämnar callbacks i indataordning på anropstråden och släpper varje lånad bitmapp efter att callbacken returnerat, medan ett anroparvalt utdatadjup tillämpar producentbackpressure och reserverar en plats för nästa begärda sida så att en långsam tidig sida inte kan gå i lås bakom senare resultat

Ordnad strömning behåller som mest en display list och en aktiv rendering per worker plus den avgränsade kön av färdiga bitmappar i stället för att hålla hela jobbutdata resident

Pluggable render backends konsumerar samma kompilerade listor via en icke-ägande vy av dokumentresurser, så synkrona och parallella vägar slipper reparsa sidinnehåll medan backend-kapabiliteterna avgör om anrop får överlappa eller kräver serieutsändning

Den processvida topplinnesschemaläggaren begränsar nu båda parallella API:erna: den största siduppskattningen reducerar initiala worker-antalet, varje ansökt sida reserverar sin fullständiga uppskattade arbetsmängd, och ordnad utdata behåller den reservationen fram till callback-lämningen

Schemaläggarens avbrott väcker budgetväntare vid callback-avbrott eller worker-fel, medan telemetrin exponerar begärda kontra effektiva workers, topp-reservationsvikt, försenade sidor och sammanlagd väntetid

RenderLoadedPageTilesParallel och RenderLoadedPageBandsParallel lämnar lånda radordnade tiles eller topp-till-botten-band över isolerade workers, medan varje worker äger som mest en tile och en anroparlevererad arbetsminnesgräns reducerar konkurrensen före det första anspråket

Parallella renderingskontexter kopierar oföränderliga Type 3-glyftokensekvenser och rastertröskelskärmar från en gemensam avgränsad LRU-cache och bevarar renderarlokalt ägandeskap för muterbart grafiktillstånd och GDI-resurser

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded och SaveLoadedPagesToTiffStreamBanded konsumerar samma bandrenderare genom strömmande PNG- eller TIFF-enkodrar, så mycket stora sidor emitterar komprimerad utdata rad för rad utan att hålla en fullständig framebuffer, medan THPDFBandImageExportInfo rapporterar renderade band, enkodade rader, workers, topp-reservationsbyte, utdatabyte, förfluten tid och avbrott

Gemensam bilddekodning samordnas separat så att vektorpagesarbete förblir parallellt utan att skada cacheposter för dekodade bilder

PrefetchLoadedPages värmer rasterposter med en dedikerad avbrytstoken medan kompilering och rendering sker utanför cache-låset, och förgrundssidsrendering preemterar workern innan latenskänsligt arbete påbörjas

THPDFLoadedPagePrefetchInfo rapporterat schemalagt, påbörjat, fullbordat, cachat, renderat, misslyckat, avbrutet och förgrundspreemterat arbete tillsammans med senaste och topp-laten vid avbrott

Transparens och utskriftskontroller

Transparensutplattning kontrollerar först display-list-transparensräknaren och en anropardefinierad pixeltak, och ersätter därefter sidmålningen med en förlustfri Flate-komprimerad kalibrerad RGB-bild

Sidor med Separation- eller DeviceN-färgämnen förblir vektorinnehåll, med de detekterade färgämnena och bevarandestatusen exponerade för anroparen

Renderaren kör transferfunktioner och Type 1-, 5-, 6-, 10- eller 16-rasterordlistor från ExtGState medan den bevarar oberoende RGB-skärmar och deras transfer-överskridanden via q och Q

THPDFInkCoverageInfo rapporterar genomsnittlig CMYK-täckning, maximal total arealetäckning och antalet pixlar över den valda tröskeln

Utskrift på process- och spotplattor stödjer DeviceCMYK, Separation och DeviceN färgämnen

Loaded-page colour rewrite använder samma fullständiga renderare för att konvertera komplexa sidor till Gray, RGB eller CMYK medan enkelt innehåll i enhetsfärger behålls som vektorer och en explicit spotplatt-policy tillämpas

THPDFTrappingInfo kombinerar dokumentets trapping-deklarationer, sidmetadata och TrapNet-strukturdiagnostik

ICC-arbetsflöde

Renderingstransformen kan kombinera en PDF-källprofil, blandningsfärgrymd, korrekturprofil, utdataprofil och sRGB-rastermål

Alla fyra ICC rendering intents och äkta svartpunktskompensering tillämpas konsekvent på vektorfärger och bildsamples i hela pipelinen

Kompletta transform delas över vektor-, bild-, sid- och parallella renderingsvägar via en trådsäker LRU-cache på 64 MiB, nycklad av käll-, korrektur- och utdataprofilinnehåll, effektiv rendering intent och svartpunktskompensering

Transparensutplattning återanvänder samma transformpipeline och emitterar därefter fogfria D65 CalRGB-tiles under anroparstyrda totalraster- och per-tile-pixelbudgetar

Primära API:er