Display lists en printproductie

HotPDF compileert geladen paginastreams naar herbruikbare THPDFPageDisplayList-instanties met THPDFDisplayListInfo-metrieken en bounding boxes van contentobjecten

Documentrendering cachet gecompileerde lijsten, terwijl aanroepers een lijst in eigen beheer kunnen vragen voor herhaalde uitvoering of regionale objectquery's

Gedeelde productie-interpreter

Niet-progressieve bitmap-, direct-DC-, Form- en display-list-replay voeren voorgetokeniseerde content allemaal door HPDFInterpretContentTokensDevice, dat de operatortraversering en annuleringsgrenzen beheert

THPDFPageRenderer implementeert IHPDFContentOperatorDevice, dus de gedeelde traversering roept de volledige graphics-, tekst-, resource-, clipping-, patroon-, transparantie-, marked-content- en afbeeldingsstatemachine aan zonder productierendering te reduceren tot het kleinere semantische callbackoppervlak

Display lists cachen operatortoken-indexen terwijl streams worden gecompileerd en spelen alleen die indexen af, zodat herhaalde operandscans vervallen; THPDFPageDisplayList.OperatorCount en THPDFDisplayListInfo.OperatorCount stellen het gecachte aantal commando's beschikbaar

Semantische devices die alleen IHPDFContentDevice implementeren behouden capabilitygefilterde callbacks, terwijl volledige operatordevices telkens één gevalideerde operator ontvangen met per operator één annuleringscontrolepunt

Begrensde en gelijktijdige rendering

THPDFRenderTileEvent ontvangt telkens één tile of horizontale band op aanroepersgrootte, zodat het piekrastergeheugen onafhankelijk is van de volledige paginagrootte

RenderLoadedPagesParallel laat display-listcompilatie en afspelen overlappen, start de eerste kant-en-klare pagina zonder op een volledige compilebarrière te wachten, balanceert beide stadia dynamisch over begrensde workers en geeft een THPDFBitmapArray in invoervolgorde terug

Compilatie draait buiten de display-listcachelock, terwijl dubbel gecontroleerde toelating en beschermde use counts ongerelateerde pagina's gelijktijdig laten compileren zonder gepubliceerde invoeren te dupliceren of een lijst te verdrijven tijdens het afspelen

THPDFParallelRenderPipelineInfo stelt cachehits, compilaties, voltooiingen, piekcompile- en renderconcurrentie, pagina's gecompileerd bij het eerste resultaat, first-result-latentie en totale verstreken tijd beschikbaar

RenderLoadedPagesParallelOrdered levert callbacks in invoervolgorde op de aanroepende thread en geeft elke uitgeleende bitmap vrij nadat de callback terugkeert, terwijl een door de aanroeper gekozen uitvoerdiepte producerbackpressure toepast en één sleuf reserveert voor de volgende vereiste pagina, zodat een trage vroege pagina niet vast kan lopen achter latere resultaten

Geordend streamen houdt per worker hoogstens één display list en actieve render vast plus de begrensde wachtrij met voltooide bitmaps, in plaats van de volledige jobuitvoer resident te houden

Pluggable render backends verbruiken dezelfde gecompileerde lijsten via een niet-bezittelijke documentresourceview, zodat synchrone en parallelle paden herparsen van pagina-inhoud vermijden, terwijl backendcapabilities bepalen of aanroepen mogen overlappen of serieel moeten worden verstuurd

De procesbrede piekgeheugenscheduler begrenst nu beide parallelle API's: de grootste paginaschatting verlaagt het initiële aantal workers, elke geclaimde pagina reserveert zijn volledige geschatte working set en geordende uitvoer houdt die reservering vast tot de callback is afgeleverd

Schedulerannulering wekt budgetwachters bij callbackannulering of workerfalen, terwijl telemetrie aangevraagde versus effectieve workers, piekreserveringsgewicht, vertraagde pagina's en cumulatieve wachttijd blootgeeft

RenderLoadedPageTilesParallel en RenderLoadedPageBandsParallel leveren uitgeleende row-major-tiles of boven-naar-onder-banden over geïsoleerde workers af, waarbij elke worker hoogstens één tile bezit en een door de aanroeper opgegeven cap op het werkgeheugen de gelijktijdigheid verlaagt vóór de eerste claim

Parallelle rendercontexten kopiëren immutable Type 3-glyph-tokensequenties en halftone-thresholdscreens uit één begrensde LRU-cache en houden rendererlokaal eigendom van mutable graphics state en GDI-resources

SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded en SaveLoadedPagesToTiffStreamBanded verbruiken dezelfde bandrenderer via streaming-PNG- of TIFF-encoders, zodat zeer grote pagina's gecomprimeerde uitvoer rij voor rij uitgeven zonder een volledige framebuffer vast te houden, terwijl THPDFBandImageExportInfo gerenderde banden, gecodeerde rijen, workers, piekreserveringsbytes, uitvoerbytes, verstreken tijd en annulering rapporteert

Gedeelde afbeeldingsdecodering wordt apart gecoördineerd, zodat vectorpaginawerk parallel blijft zonder gecachte gedecodeerde-afbeeldingsinvoeren te beschadigen

PrefetchLoadedPages warmt rasterinvoeren voor met een eigen cancellation token, compileert en rendert buiten de cachelock, en voorgrondpaginarendering verdringt de worker vóór latentiegevoelig werk start

THPDFLoadedPagePrefetchInfo rapporteert gepland, gestart, voltooid, gecached, gerenderd, mislukt, geannuleerd en door voorgrond verdrongen werk, samen met de laatste en de piekannuleringslatentie

Transparantie- en afdrukregeling

Transparantieflattening controleert eerst de transparantieteller van de display list en een door de aanroeper bepaald pixelpakaf, en vervangt daarna paginaverf door een verliesvrije, Flate-gecomprimeerde gekalibreerde RGB-afbeelding

Pagina's met Separation- of DeviceN-colourants blijven vectorcontent, met de gedetecteerde colourants en de behoudstatus beschikbaar voor de aanroeper

De renderer voert transferfuncties en Type 1-, 5-, 6-, 10- of 16-halftonewoordenboeken uit ExtGState uit en bewaart onafhankelijke RGB-screens en hun transferoverrides via q en Q

THPDFInkCoverageInfo rapporteert de gemiddelde CMYK-dekking, de maximale totale vlakdekking en het aantal pixels boven de gekozen drempel

Proces- en spotplate-uitvoer ondersteunt DeviceCMYK-, Separation- en DeviceN-colourants

Loaded-page colour rewrite gebruikt dezelfde volledige renderer om complexe pagina's naar Gray, RGB of CMYK te converteren, houdt eenvoudige device-colour-pagina-inhoud als vectors vast en past een expliciet spotplate-beleid toe

THPDFTrappingInfo combineert trappingdeclaraties van het document, pagemetadata en structurele TrapNet-diagnostiek

ICC workflow

De renderingtransformatie kan een PDF-bronprofiel, blendkleurruimte, proofprofiel, uitvoerprofiel en een sRGB-rasterdoel combineren

Alle vier de ICC-renderingintents en echte black-point-compensatie worden consistent toegepast op vectorkleuren en afbeeldingssamples in de hele pijplijn

Volledige transformaties worden gedeeld over vector-, afbeeldings-, pagina- en parallelle renderingpaden via een thread-safe LRU-cache van 64 MiB, gesleuteld op de inhoud van bron-, proof- en uitvoerprofielen, de effectieve rendering intent en black-point-compensatie

Transparantieflattening hergebruikt dezelfde transformatiepijplijn en geeft daarna naadloze D65 CalRGB-tiles uit onder door de aanroeper beheerste total-raster- en per-tile-pixelbudgetten

Primaire API's