Displaylister og printproduktion

HotPDF kompilerer indlæste sidestrømme til genbrugelige THPDFPageDisplayList -instanser med THPDFDisplayListInfo -målinger og bounding boxes for indholdsobjekter

Dokument-rendering cacher kompilerede lister, mens kaldere kan anmode om en selvstændigt ejet liste til gentagen udførelse eller regionale objektforespørgsler

Delt produktionsfortolker

Ikke-progressiv bitmap, direkte DC, Form- og displayliste-afspilning sender alt fortokenseret indhold gennem HPDFInterpretContentTokensDevice , som ejer operatorgennemløb og annulleringsgrænser

THPDFPageRenderer implements IHPDFContentOperatorDevice , så det delte gennemløb kalder dens komplette grafik-, tekst-, ressource-, klippe-, mønster-, transparens-, marked-content- og billed-tilstandsmaskine uden at reducere produktionsrendering til den mindre semantiske callback-overflade

Displaylister cacher operator-token-indekser, mens strømme kompileres, og afspiller kun de indekser og undgår dermed gentagne operand-scanninger; THPDFPageDisplayList.OperatorCount og THPDFDisplayListInfo.OperatorCount eksponerer det cachede kommandotal

Semantiske devices, der kun implementerer IHPDFContentDevice beholder capability-filtrerede callbacks, mens komplette operator-devices modtager én valideret operator ad gangen med ét annulleringscheckpoint pr. operator

Afgrænset og samtidig rendering

THPDFRenderTileEvent modtager én kalderstørrelse tile eller vandret bånd ad gangen og holder maksimal rasterhukommelse uafhængig af fuld sidestørrelse

RenderLoadedPagesParallel overlapper displaylistekompilering med afspilning, starter den første klar side uden at vente på en fuld kompileringsbarriere, balancerer dynamisk begge trin på tværs af afgrænsede workers og returnerer en THPDFBitmapArray i inputrækkefølge

Kompilering kører uden for displayliste-cache-låsen, mens dobbeltkontrolleret adgang og beskyttede brugstællere lader urelaterede sider kompilere samtidig uden at duplikere publicerede entry'er eller bortvise en liste under afspilning

THPDFParallelRenderPipelineInfo eksponerer cache-hit, kompileringer, fuldførelser, maksimal kompilerings- og render-samtidighed, sider kompileret ved første resultat, latenstid for første resultat og samlet forløbet tid

RenderLoadedPagesParallelOrdered leverer callbacks i inputrækkefølge på kaldetråden og frigiver hver lånt bitmap, efter callback'en returnerer, mens en kaldervalgt outputdybde anvender producent-backpressure og reserverer én plads til den næste krævede side, så en langsom tidlig side ikke kan deadlocke bag senere resultater

Ordnet streaming beholder højst én displayliste og én aktiv rendering pr. worker plus den afgrænsede kø af fuldførte bitmaps i stedet for at holde hele job-outputtet resident

Pluggbare render-backends forbruger de samme kompilerede lister gennem en ikke-ejende dokumentressource-visning, så synkrone og parallelle veje undgår at fortolke sideindholdet igen, mens backend-egenskaber afgør, om kald må overlappe eller kræver seriel afsendelse

Den procesomfattende maksimal-hukommelses-scheduler begrænser nu begge parallelle API'er: det største sideestimat reducerer det oprindelige worker-antal, hver krævet side reserverer sit komplette estimerede arbejdssæt, og ordnet output fastholder den reservation gennem callback-levering

Scheduler-annullering vækker budget-ventere ved callback-annullering eller worker-fejl, mens telemetri eksponerer anmodede versus effektive workers, maksimal reservationsvægt, forsinkede sider og samlet ventetid

RenderLoadedPageTilesParallel og RenderLoadedPageBandsParallel leverer lånte række-major-tiles eller top-til-bund-bånd på tværs af isolerede workers, mens hver worker ejer højst én tile, og en kalderleverteret arbejdshukommelsesgrænse reducerer samtidigheden før det første krav

Parallelle render-kontekster kopierer uforanderlige Type 3-glyph-tokensekvenser og halftone-tærskelskærme fra én afgrænset LRU-cache og bevarer renderer-lokalt ejerskab til foranderlig grafiktilstand og GDI-ressourcer

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded, og SaveLoadedPagesToTiffStreamBanded forbruger den samme bånd-renderer gennem streamende PNG- eller TIFF-encodere, så meget store sider skriver komprimeret output række for række uden at holde en komplet framebuffer, mens THPDFBandImageExportInfo rapporterer renderede bånd, kodede rækker, workers, maksimale reservationsbytes, outputbytes, forløbet tid og annullering

Delt billedafkodning koordineres separat, så vektor-sidearbejde forbliver parallelt uden at beskadige cache-entry'er for afkodede billeder

PrefetchLoadedPages opvarmer raster-entry'er med et dedikeret annulleringstoken, mens kompilering og rendering sker uden for cache-låsen, og forgrundens siderendering preemterer workeren, før latensfølsomt arbejde påbegyndes

THPDFLoadedPagePrefetchInfo rapporterer planlagt, påbegyndt, fuldført, cachet, renderet, fejlslagent, annulleret og forgrund-preemteret arbejde sammen med seneste og maksimale annulleringslatens

Transparens- og printstyring

Transparens-flattening tjekker først displaylistens transparensantal og en kalderdefineret pixelgrænse og erstatter derefter sidetegningen med et tabsfrit Flate-komprimeret kalibreret RGB-billede

Sider med Separation- eller DeviceN-farvestoffer forbliver vektorindhold, med de detekterede farvestoffer og bevaringsstatus eksponeret til kalderen

Rendereren udfører transfer functions og Type 1, 5, 6, 10 eller 16 halftone-ordbøger fra ExtGState og bevarer uafhængige RGB-skærme og deres transfer-override gennem q og Q

THPDFInkCoverageInfo rapporterer gennemsnitlig CMYK-dækning, maksimal total arealdækning og antallet af pixels over den valgte tærskel

Process- og spot-plate-output understøtter DeviceCMYK, Separation og DeviceN -farvestoffer

Farveomskrivning af indlæste sider bruger den samme komplette renderer til at konvertere komplekse sider til Gray, RGB eller CMYK, mens simpelt device-farve-sideindhold bevares som vektorer, og en eksplicit spot-plate-politik anvendes

THPDFTrappingInfo kombinerer dokumentets trapping-deklarationer, sidemetadata og TrapNet-strukturniagnostik

ICC workflow

Renderingstransformen kan kombinere en PDF-kildeprofil, blend-farverum, proof-profil, outputprofil og sRGB-rasterdestination

Alle fire ICC rendering intents og ægte black-point-kompensation anvendes konsekvent på vektorfarver og billedprøver på tværs af pipelinen

Komplette transformationer deles på tværs af vektor-, billede-, side- og parallelle renderingsveje gennem en trådsikker 64 MiB LRU-cache, nøglet efter kilde-, proof- og outputprofilindhold, effektiv rendering intent og black-point-kompensation

Transparens-flattening genbruger samme transformpipeline og skriver derefter samningsfrie D65 CalRGB-tiles under kalderstyrede totalraster- og pr.-tile-pixelbudgetter

Primary APIs