Visningslister og trykkproduksjon
HotPDF kompilerer lastede sidestrømmer til gjenbrukbare THPDFPageDisplayList-instanser med THPDFDisplayListInfo-metrikker og innholdsobjekt-bokserektangler
Dokumentgjengivelse hurtigbuffer kompilerte lister, mens kallere kan be om en uavhengig eid liste for gjentatt utførelse eller regionale objektforespørsler
Delt produksjonstolk
Ikke-progressiv bitmap, direkte-DC, Form- og displayliste-avspilling sender alle for-tokenisert innhold gjennom HPDFInterpretContentTokensDevice, som eier operatørtraversering og kanselleringsgrenser
THPDFPageRenderer implementerer IHPDFContentOperatorDevice, så den delte traverseringen kaller dets komplette grafikk-, tekst-, ressurs-, klippe-, mønster-, transparens-, marked-content- og bilde-tilstandsmaskin uten å redusere produksjonsgjengivelsen til det mindre semantiske callback-grensesnittet
Displaylister bufrer operatørtoken-indekser mens strømmene kompileres og avspiller bare de indeksene, og unngår gjentatte operandskann; THPDFPageDisplayList.OperatorCount og THPDFDisplayListInfo.OperatorCount eksponerer det bufrede kommandotallet
Semantiske enheter som bare implementerer IHPDFContentDevice beholder kapabilitetsfiltrerte callbacks, mens komplette operatørenheter mottar én validert operatør om gangen med étt kanselleringskontrollpunkt per operatør
Begrenset og samtidig gjengivelse
THPDFRenderTileEvent mottar én kaller-størrelse tile eller horisontal bånd om gangen, og holder topp raster-minne uavhengig av full sidestørrelse
RenderLoadedPagesParallel overlapper visningsliste-kompilering med avspilling, starter den første klare siden uten å vente på en full kompileringsbarriere, balanserer dynamisk begge trinnene på tvers av avgrensede arbeidere, og returnerer en THPDFBitmapArray i inngangsrekkefølge
Kompilering kjører utenfor visningsliste-hurtigbufferlåsen, mens dobbeltkontrollert opptak og beskyttede brukstell la uavhengige sider kompileres samtidig uten å duplisere publiserte innføringer eller kaste ut en liste under avspilling
THPDFParallelRenderPipelineInfo eksponerer cache-treff, kompileringer, fullføringer, topp-kompilerings- og gjengivelses-konkurranse, sider kompilert ved første resultat, latens for første resultat og total forløpt tid
RenderLoadedPagesParallelOrdered leverer tilbakeringinger i inngangsrekkefølge på den kallende tråden og frigir hvert lånte bitmap etter at tilbakeringen returnerer, mens en kaller-valgt utgangsdybde anvender produsent-backtrykk og reserverer én plass for den neste nødvendige siden, så en langsom tidlig side ikke kan deadlocke bak senere resultater
Ordnet strømming beholder høyst én visningsliste og én aktiv gjengivelse per arbeider pluss den avgrensede fullførte-bitmap-køen i stedet for å holde hele jobbens utdata-resident
Pluggbare gjengivelsesbackendene forbruker de samme kompilerte listene gjennom et ikke-eiende dokumentressurs-visningsobjekt, så synkrone og parallelle baner unngår å omparse sideinnhold mens backend-kapabiliteter avgjør om kall kan overlappe eller krever seriell utsendelse
Den prosessomfattende topp-minneplanleggeren begrenser nå begge parallelle API-ene: det største sideestimatet reduserer det første antallet arbeidere, hver hentede side reserverer sitt fullstendige estimerte arbeidssett, og ordnet utdata beholder den reservasjonen gjennom tilbakeringingslevering
Planlegger-kansellering vekker budsjett-vendere ved tilbakeringings-kansellering eller arbeiderfeil, mens telemetri eksponerer forespurte versus effektive arbeidere, topp-reservasjonsvekt, forsinkede sider og samlet ventetid
RenderLoadedPageTilesParallel og RenderLoadedPageBandsParallel leverer lånte rad-major-fliser eller bunner fra topp til bunn på tvers av isolerte arbeidere, mens hver arbeider eier høyest én flise, og en kaller-levert arbeidsminnegrense reduserer konkurransen før første krav
Parallell renderingskontekster kopierer uforanderlige Type 3 glyf-tokensekvenser og rastermønster-terskelskjermer fra én avgrenset LRU-buffer, og bevarer renderer-lokalt eierskap til mutbar grafikktilstand og GDI-ressurser
SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded og SaveLoadedPagesToTiffStreamBanded konsumerer samme bunn-renderer gjennom strømmende PNG- eller TIFF-encodere, så svært store sider emitterer komprimert utdata rad for rad uten å holde en komplett framebuffer, mens THPDFBandImageExportInfo rapporterer renderete bunner, kodede rader, arbeidere, topp reserverte byte, utdatabyte, brukt tid og avbrudd
Deling av bildedekoding koordineres separat, så vektor-sidearbeid forblir parallelt uten å korrumpere dekodede bilde-cache-innføringer
PrefetchLoadedPages varmer opp raster-innføringer med et dedikert kanselleringstoken mens det kompileres og gjengis utenfor cache-låsen, og sidegjengivelse i forgrunnen overkjører arbeideren før den starter latensfølsomt arbeid
THPDFLoadedPagePrefetchInfo rapporterer planlagt, startet, fullført, lagret, gjengitt, mislykket, kansellert og forgrunns-overkjørt arbeid sammen med siste og topp kansellerings-latens
Gjennomsiktighet og utskriftskontroller
Utjevning av gjennomsiktighet sjekker først visningslistens gjennomsiktighets-telling og et kaller-definert piksel-tak, og erstatter deretter sidepensel med et tapsfritt Flate-komprimert kalibrert RGB-bilde
Sider med Separation- eller DeviceN-fargestoffer forblir som vektorinnhold, med de detekterte fargestoffene og bevaringsstatus eksponert for kaller
Rendereren utfører overføringsfunksjoner og Type 1-, 5-, 6-, 10- eller 16-halftoneordbøker fra ExtGState mens den bevarer uavhengige RGB-skremer og deres overføringsoverstyringer gjennom q og Q
THPDFInkCoverageInfo rapporterer gjennomsnittlig CMYK-dekning, maksimum total arealdekning og antallet piksler over den valgte terskelen
Prosess- og spotplater-utgang støtter DeviceCMYK, Separation og DeviceN-fargestoffer
Lastet-side fargeomskriving bruker den samme fullstendige rendereren til å konvertere komplekse sider til Gray, RGB eller CMYK mens enkle enhetsfarge-sideinnhold beholdes som vektorer og en eksplisitt spotplater-politikk anvendes
THPDFTrappingInfo kombinerer dokument-trapping-deklarasjoner, side-metadata og TrapNet-strukturell diagnostikk
ICC-arbeidsflyt
Gjengivelsestransformasjonen kan kombinere en PDF-kildeprofil, blandingsfargerom, bevisprofil, utgangsprofil og sRGB-raster-destinasjon
Alle fire ICC-gjengivelsesintensjoner og kompensasjon for ekte svartpunkt anvendes konsekvent på vektorfarger og bildeeksempler gjennom hele rørledningen
Fullstendige transformasjoner deles på tvers av vektor-, bilde-, side- og parallelle gjengivelsesbaner gjennom en trådsikker 64 MiB LRU-cache nøklet av kilde-, bevis- og utgangsprofilinnhold, effektiv gjengivelsesintensjon og svartpunkts-kompensasjon
Utjevning av gjennomsiktighet gjenbruker den samme transformasjonspipelinen, og sender deretter sømløse D65 CalRGB-tiles under kaller-kontrollerte total-raster- og per-tile pikselbudsjetter
Primære API-er
- Pluggbare gjengivelsesbackendene
IHPDFContentOperatorDeviceHPDFInterpretContentTokensDeviceTHotPDF.CompileLoadedPageDisplayListTHPDFPageDisplayList.GetTokenTHPDFPageDisplayList.GetObjectTHPDFPageDisplayList.QueryObjectIndexesTHPDFPageDisplayList.PageObjectTHPDFPageDisplayList.ResourcesTHPDFPageDisplayList.MediaBoxTHotPDF.RenderLoadedPageTilesogRenderLoadedPageBandsTHotPDF.RenderLoadedPageTilesParallelogRenderLoadedPageBandsParallelTHPDFParallelTileRenderInfoTHotPDF.SaveLoadedPageToPngTHotPDF.SaveLoadedPageToPngStreamTHotPDF.SaveLoadedPagesToTiffBandedTHotPDF.SaveLoadedPagesToTiffStreamBandedTHPDFBandImageExportInfoTHotPDF.RendererSharedCacheMaxBytesTHotPDF.RenderLoadedPagesParallelTHotPDF.RenderLoadedPagesParallelOrderedTHPDFParallelRenderPipelineInfoTHotPDF.PrefetchLoadedPagesTHotPDF.GetLoadedPagePrefetchInfoTHPDFLoadedPagePrefetchInfoTHotPDF.FlattenLoadedPageTransparencyTHotPDF.FlattenLoadedPageComplexGraphicsTHotPDF.RenderLoadedPageSeparationPlateTHotPDF.GetLoadedPageSpotColorantsTHotPDF.RewriteLoadedPageColorsTHotPDF.AnalyzeLoadedPageInkCoverageTHotPDF.InspectLoadedPageTrappingTHotPDF.ConfigureRenderICCWorkflow