Škálovateľné načítavanie PDF s náhodným prístupom

HotPDF udržiava veľké načítané súbory responzívne oneskorením kópií streamov a syntaktickou analýzou komprimovaných objektov, kým nie sú dáta potrebné

Okná streamov zálohovaných súborom

Nešifrované dokumenty otvorené pomocou LoadFromFile si ponechajú nemenné telá streamov ako rozsahy zdrojového súboru

Čítania vyhľadajú požadovaný rozsah a okamžite uvoľnia handle zdroja, takže pôvodný súbor zostáva nahraditeľný vo Windows

OpenLoadedStreamSourceSlice vytvorí nezávislý pohľad len na čítanie cez nefiltrovaný zdrojový rozsah bez kopírovania alebo materializácie lenivého streamu

Prvý zápis materializuje stream v pamäti, keď je na alebo pod LoadedStreamMemoryThreshold, alebo vo vlastnom dočasnom súbore, keď je väčší

Lenivé objektové streamy

Každý dekódovaný kontajner /Type /ObjStm je indexovaný autoritatívnym číslom objektu xref bez syntaktickej analýzy každého člena počas otvorenia

Rozlíšenie katalógu, stromu stránok a neskorších odkazov materializuje jednotlivých členov raz a znovu použije ich rozparsované objekty

Úplné prepísanie automaticky materializuje každého zostávajúceho člena, zatiaľ čo nezmenené uloženie zálohované súborom môže zachovať pôvodné bajty priamo

ReleaseDecodedStreamsAfterSave uvoľní kontajner objektového streamu až po materializácii každého indexovaného člena a ReleaseLoadedDecodedStreamCaches vystavuje rovnaký bezpečný prechod uvoľnenia na požiadanie

Vlastný náhodný prístup

Odvodte od THPDFRandomAccessSource a implementujte GetSize plus ReadAt pre načítanie z HTTP rozsahov, databáz, archívov alebo virtuálneho úložiska; prepíšte IsRangeAvailable, keď môžu stiahnuté rozsahy prísť nezávisle

LoadFromRandomAccessSource prispôsobí zdroj seekovateľnému parseru HotPDF a môže voliteľne vlastniť zdroj počas životnosti dokumentu

Progresívna linearizovaná dostupnosť

GetProgressiveLinearizedLoadInfo číta iba ohraničenú sondu prvého objektu, validuje /L, /O, /E, /N a /T a hlási rozsahy prefixu prvej stránky a chvosta hlavného xref potrebné pre skoré zobrazenie

ReadProgressiveLinearizedFirstPageSection skopíruje dostupnú sekciu prvej stránky v blokoch po 64 KiB po prítomnosti oboch požadovaných rozsahov, pričom zrušenie operácie zostáva aktívne medzi čítaniami

THPDFProgressiveLoadStatus odlišuje nedostupnú hlavičku, nelinearizovaný alebo neplatný zdroj, chýbajúce rozsahy prvej stránky, pripravenosť prvej stránky a pripravenosť kompletného dokumentu

Paralelná optimalizácia obrazov a streamov s vysokým pomerom

OptimizeLoadedStreams môže vybrať frmHighRatio na vyskúšanie štyroch deterministických zlib stratégií pri maximálnej kompresii a zachovanie najmenšieho štandardmi kompatibilného Flate streamu

OptimizeLoadedImagesParallel dekóduje spôsobilé obrazové streamy do ohraničeného adaptívneho úložiska, komprimuje až do limitu workerov volajúceho a potvrdzuje výsledky sériovo v poradí zdrojových objektov iba vtedy, keď sa dosiahne požadovaná úspora bajtov

Diagnostika

Pozri tiež: LoadFromRandomAccessSource, GetProgressiveLinearizedLoadInfo, ReadProgressiveLinearizedFirstPageSection, OptimizeLoadedImagesParallel, OpenLoadedStreamSourceSlice, SourceBacked, LoadedStreamMemoryThreshold, ReleaseLoadedDecodedStreamCaches, DecompressAllObjectStreams