Î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

Vezi și: LoadFromRandomAccessSource, GetProgressiveLinearizedLoadInfo, ReadProgressiveLinearizedFirstPageSection, OptimizeLoadedImagesParallel, OpenLoadedStreamSourceSlice, SourceBacked, LoadedStreamMemoryThreshold, ReleaseLoadedDecodedStreamCaches, DecompressAllObjectStreams