Încărcare PDF scalabilă și cu acces aleatoriu
HotPDF menține fișierele mari încărcate reactive prin amânarea copierii fluxurilor și a analizării obiectelor comprimate până când datele sunt necesare
Ferestre de flux susținute de fișier
Documentele necriptate deschise cu LoadFromFile păstrează corpurile de flux imuabile ca intervale din fișierul sursă
Citirile se poziționează la intervalul necesar și eliberează imediat handle-ul sursă, astfel încât fișierul original rămâne înlocuibil pe Windows
OpenLoadedStreamSourceSlice creează o vizualizare independentă doar-citire asupra unui interval sursă nefiltrat, fără a copia sau materializa fluxul lent
Prima scriere materializează fluxul în memorie când este la sau sub LoadedStreamMemoryThreshold, sau într-un fișier temporar propriu când este mai mare
Fluxuri-obiect leneșe
Fiecare container /Type /ObjStm decodificat este indexat după numărul autoritar de obiect xref, fără a analiza fiecare membru în timpul deschiderii
Rezolvarea Catalog, a arborelui de pagini și, ulterior, a legăturilor materializează membri individuali o singură dată și reutilizează obiectele analizate
O rescriere completă materializează automat toți membrii rămași, în timp ce o salvare neschimbată susținută de fișier poate păstra direct octeții originali
ReleaseDecodedStreamsAfterSave eliberează un container de flux-obiect doar după ce fiecare membru indexat este materializat, iar ReleaseLoadedDecodedStreamCaches expune aceeași trecere sigură de eliberare la cerere
Acces aleatoriu personalizat
Derivați din THPDFRandomAccessSource și implementați GetSize plus ReadAt pentru a încărca din intervale HTTP, baze de date, arhive sau stocare virtuală; suprascrieți IsRangeAvailable atunci când intervalele aduse pot ajunge independent
LoadFromRandomAccessSource adaptează sursa la analizorul cu poziționare al HotPDF și poate deține opțional sursa pe durata de viață a documentului
Disponibilitate liniarizată progresivă
GetProgressiveLinearizedLoadInfo citește doar o sondă limitată a primului obiect, validează /L, /O, /E, /N și /T și raportează prefixul primei pagini plus intervalele de coadă ale xref-ului principal necesare pentru afișarea timpurie
ReadProgressiveLinearizedFirstPageSection copiază secțiunea disponibilă a primei pagini în blocuri de 64 KiB după ce ambele intervale necesare sunt prezente, în timp ce anularea operației rămâne activă între citiri
THPDFProgressiveLoadStatus distinge un antet indisponibil, o sursă non-liniarizată sau invalidă, intervale ale primei pagini lipsă, disponibilitatea primei pagini și disponibilitatea completă a documentului
Optimizare paralelă a imaginilor și a fluxurilor cu raport ridicat
OptimizeLoadedStreams poate selecta frmHighRatio pentru a încerca patru strategii zlib deterministe la compresie maximă și a păstra cel mai mic flux Flate compatibil cu standardele
OptimizeLoadedImagesParallel decodifică fluxurile de imagini eligibile în stocare adaptivă limitată, comprimă până la limita de worker-i a apelantului și comite rezultatele serial, în ordinea obiectelor sursă, doar atunci când este atinsă economia de octeți cerută
Diagnosticare
GetLoadedStreamCacheInforaportează numărul de fluxuri susținute de sursă, materializate în memorie și materializate pe discGetLoadedObjectStreamCacheInforaportează membri indexați și materializați, acces-uri și ratări de cache și octeți decodificați reținuțiGetLoadedObjectLifecycleStatisticssepară obiectele curate, murdare, eliberate și cu scriere obligatorie
Vezi și: LoadFromRandomAccessSource, GetProgressiveLinearizedLoadInfo, ReadProgressiveLinearizedFirstPageSection, OptimizeLoadedImagesParallel, OpenLoadedStreamSourceSlice, SourceBacked, LoadedStreamMemoryThreshold, ReleaseLoadedDecodedStreamCaches, DecompressAllObjectStreams