Seznami prikaza in produkcija tiska
HotPDF prevede tokove naloženih strani v ponovno uporabne instance THPDFPageDisplayList z metrikami THPDFDisplayListInfo in omejitvenimi polji objektov vsebine
Upodabljanje dokumenta predpomni prevedene sezname, medtem ko lahko klicatelji zahtevajo neodvisno lasten seznam za ponovljeno izvajanje ali poizvedbe po regionalnih objektih
Skupni produkcijski interpreter
Ne-progresivna bitna slika, direktni DC, ponovljeno predvajanje Form in seznamov prikaza vse posredujejo že tokenizirano vsebino skozi HPDFInterpretContentTokensDevice, ki lasti prehod po operatorjih in meje preklica
THPDFPageRenderer implementira IHPDFContentOperatorDevice, zato skupni prehod pokliče njegov celoten stroj stanj za grafiko, besedilo, vire, izrezovanje, vzorce, prosojnost, označeno vsebino in slike, namesto da bi produkcijsko upodabljanje zmanjšal na manjšo semantično površino povratnih klicev
Seznami prikaza med prevajanjem tokov predpomnijo indekse žetonov operatorjev in predvajajo samo te indekse, s čimer se izognejo ponavljanju pregledov operandov; THPDFPageDisplayList.OperatorCount in THPDFDisplayListInfo.OperatorCount izpostavita število predpomnjenih ukazov
Semantične naprave, ki implementirajo samo IHPDFContentDevice, obdržijo povratne klice filtrirane po zmožnostih, celotne operatorske naprave pa prejmejo enega preverjenega operatorja naenkrat s točko preklica za vsak operator
Omejeno in sočasno upodabljanje
THPDFRenderTileEvent prejme eno ploščico velikosti klicatelja ali vodoravni pas naenkrat, kar ohranja najvišjo porabo rastrskega pomnilnika neodvisno od velikosti celotne strani
RenderLoadedPagesParallel prekriva prevajanje seznamov prikaza s predvajanjem, začne prvo pripravljeno stran brez čakanja na polno prevajalno zaporo, dinamično uravnoteži obe stopnji prek omejenih delavcev in vrne THPDFBitmapArray v vrstnem redu vnosa
Prevajanje teče zunaj zaklepa predpomnilnika seznamov prikaza, medtem ko dvojno preverjeni sprejem in zaščiteni števci uporabe omogočajo nepovezanim stranem sočasno prevajanje brez podvajanja objavljenih vnosov ali izselitve seznama med predvajanjem
THPDFParallelRenderPipelineInfo izpostavi zadetke predpomnilnika, prevajanja, dokončanja, najvišjo sočasnost prevajanja in upodabljanja, strani, prevedene ob prvem rezultatu, zakasnitev prvega rezultata in skupni pretečeni čas
RenderLoadedPagesParallelOrdered dostavi povratne klice v vrstnem redu vnosa na klicni niti in sprosti vsako izposojeno bitno sliko po vrnitvi povratnega klica, medtem ko globina izhoda, ki jo izbere klicatelj, uporabi povratni pritisk proizvajalca in rezervira eno režo za naslednjo zahtevano stran, tako da počasna zgodnja stran ne more povzročiti mrtve točke za kasnejšimi rezultati
Urejeno pretakanje ohrani največ en seznam prikaza in aktivno upodabljanje na delavca plus omejeno čakalno vrsto dokončanih bitnih slik namesto stalnega zadrževanja celotnega izhoda opravila
Vtični upodabljalniški zaledji porabijo iste prevedene sezname prek pogleda virov dokumenta brez lastništva, zato se sinhrona in vzporedna pot izogneta ponovnemu razčlenjevanju vsebine strani, medtem ko zmogljivosti zaledja določajo, ali se lahko klici prekrivajo ali zahtevajo zaporedno oddajo
Razporejevalnik najvišje porabe pomnilnika v procesu zdaj omeji oba vzporedna API-ja: največja ocena strani zmanjša začetno število delavcev, vsaka zahtevana stran rezervira svoj celotni ocenjeni delovni niz in urejeni izhod ohrani to rezervacijo skozi dostavo povratnih klicev
Preklic razporejevalnika prebudi čakajoče na proračun ob preklicu povratnega klica ali napaki delavca, medtem ko telemetrija izpostavi zahtevane v primerjavi z dejanskimi delavci, najvišjo težo rezervacij, zakasnjene strani in skupni čas čakanja
RenderLoadedPageTilesParallel in RenderLoadedPageBandsParallel dostavljata izposojene ploščice po vrsticah ali pasove od zgoraj navzdol prek izoliranih delavcev, pri čemer ima vsak delavec največ eno ploščico, klicateljeva omejitev delovnega pomnilnika pa ohrani vrhovno rabo pomnilnika pod nadzorom
Vzporedni konteksti upodabljanja kopirajo nespremenljiva zaporedja žetonov glifov Type 3 in pragovske zaslone poltonov iz enega omejenega predpomnilnika LRU, s čimer ohranita lastništvo na ravni upodabljalnika za spremenljivo grafično stanje in vire GDI
SaveLoadedPageToPng, SaveLoadedPageToPngStream, SaveLoadedPagesToTiffBanded in SaveLoadedPagesToTiffStreamBanded porabljajo isti pasovni upodabljalnik skozi pretakanje PNG ali TIFF, rezultat pa je napovedljiva poraba pomnilnika neodvisno od velikosti strani; THPDFBandImageExportInfo izpostavistatistike pasov po izvozu
Skupno dekodiranje slik je usklajeno ločeno, tako da vektorsko delo strani ostane vzporedno brez poškodovanja vnosov predpomnilnika dekodiranih slik
PrefetchLoadedPages ogreje rastrske vnose z namenskim žetonom preklica, medtem ko prevaja in upodablja zunaj zaklepa predpomnilnika, upodabljanje strani v ospredju pa prekine delavca pred začetkom dela, občutljivega na zakasnitev
THPDFLoadedPagePrefetchInfo poroča o razporejenem, začetem, dokončanem, predpomnjenem, upodobljenem, spodletelem, preklicanem in v ospredju prekinjenem delu skupaj z zadnjo in najvišjo zakasnitvijo preklica
Nadzor prosojnosti in tiska
Ravnanje prosojnosti najprej preveri število prosojnosti seznama prikaza in strop pikslov, ki ga določi klicatelj, nato nadomesti risanje strani z brezizgubno Flate-stisnjeno kalibrirano sliko RGB
Strani z barvili Separation ali DeviceN ostanejo kot vektorska vsebina, pri čemer so zaznana barvila in status ohranitve izpostavljeni klicatelju
Upodabljalnik izvede prenosne funkcije in slovarje poltonov tipa 1, 5, 6, 10 ali 16 iz ExtGState, medtem ko ohrani neodvisne zaslone RGB in njihove preglasitve prenosa skozi q in Q
THPDFInkCoverageInfo poroča o povprečni pokritosti CMYK, največji skupni pokritosti površine in številu pikslov nad izbranim pragom
Izhod procesnih in spot plošč podpira barvila DeviceCMYK, Separation in DeviceN
Ponovni zapis barv naložene strani uporabi isti celotni upodabljalnik za pretvorbo zapletenih strani v Gray, RGB ali CMYK, medtem ko preprosto vsebino strani z barvami naprav ohrani kot vektorje in uporabi eksplicitno politiko spot plošč
THPDFTrappingInfo združuje deklaracije ujemanja dokumenta, metapodatke strani in strukturne diagnoze TrapNet
Delovni tok ICC
Transformacija upodabljanja lahko združi izvorni profil PDF, barvni prostor mešanja, profil dokaza, izhodni profil in rastrski cilj sRGB
Vsi štirje nameni upodabljanja ICC in prava kompenzacija črne točke so dosledno uporabljeni za vektorske barve in vzorce slik skozi cevovod
Celotne transformacije so deljene med vektorske, slikovne, stranske in vzporedne poti upodabljanja prek predpomnilnika LRU 64 MiB, varnega za niti, ključanega po vsebini izvornega, dokaznega in izhodnega profila, učinkovitem namenu upodabljanja in kompenzaciji črne točke
Ravnanje prosojnosti ponovno uporabi isti transformacijski cevovod, nato odda brezšivne ploščice D65 CalRGB pod proračuni skupnega rastra in pikslov na ploščico, ki jih nadzoruje klicatelj
Glavni API-ji
- Vtični upodabljalniški zaledji
IHPDFContentOperatorDeviceHPDFInterpretContentTokensDeviceTHotPDF.CompileLoadedPageDisplayListTHPDFPageDisplayList.GetTokenTHPDFPageDisplayList.GetObjectTHPDFPageDisplayList.QueryObjectIndexesTHPDFPageDisplayList.PageObjectTHPDFPageDisplayList.ResourcesTHPDFPageDisplayList.MediaBoxTHotPDF.RenderLoadedPageTilesinRenderLoadedPageBandsTHotPDF.RenderLoadedPageTilesParallelinRenderLoadedPageBandsParallelTHPDFParallelTileRenderInfoTHotPDF.SaveLoadedPageToPngTHotPDF.SaveLoadedPageToPngStreamTHotPDF.SaveLoadedPagesToTiffBandedTHotPDF.SaveLoadedPagesToTiffStreamBandedTHPDFBandImageExportInfoTHotPDF.RendererSharedCacheMaxBytesTHotPDF.RenderLoadedPagesParallelTHotPDF.RenderLoadedPagesParallelOrderedTHPDFParallelRenderPipelineInfoTHotPDF.PrefetchLoadedPagesTHotPDF.GetLoadedPagePrefetchInfoTHPDFLoadedPagePrefetchInfoTHotPDF.FlattenLoadedPageTransparencyTHotPDF.FlattenLoadedPageComplexGraphicsTHotPDF.RenderLoadedPageSeparationPlateTHotPDF.GetLoadedPageSpotColorantsTHotPDF.RewriteLoadedPageColorsTHotPDF.AnalyzeLoadedPageInkCoverageTHotPDF.InspectLoadedPageTrappingTHotPDF.ConfigureRenderICCWorkflow