Scalable and Random-Access PDF Loading
HotPDF сохраняет отзывчивость больших загруженных файлов за счёт откладывания копирования потоков и разбора сжатых объектов до момента, когда эти данные действительно требуются
Файловые окна потоков
Не зашифрованные документы, открытые через LoadFromFile, сохраняют неизменяемые тела потоков как диапазоны исходного файла
Операции чтения позиционируются на нужный диапазон и немедленно освобождают дескриптор источника, поэтому исходный файл остаётся заменяемым в Windows
Первая запись материализует поток в памяти, если его размер не превышает LoadedStreamMemoryThreshold, или в принадлежащем ему временном файле, если он больше
Отложенные объектные потоки
Каждый декодированный контейнер /Type /ObjStm индексируется по авторитетному номеру объекта xref без разбора всех элементов при открытии
Каталог, дерево страниц и последующее разрешение ссылок материализуют отдельные элементы однократно и повторно используют разобранные объекты
Полная перезапись автоматически материализует все оставшиеся элементы, тогда как неизменное файловое сохранение может сохранить исходные байты напрямую
Пользовательский произвольный доступ
Создайте подкласс THPDFRandomAccessSource и реализуйте GetSize и ReadAt для загрузки из диапазонов HTTP, баз данных, архивов или виртуального хранилища
LoadFromRandomAccessSource адаптирует источник к позиционируемому парсеру HotPDF и может по желанию владеть источником в течение времени жизни документа
Диагностика
GetLoadedStreamCacheInfoсообщает количество потоков на основе источника, материализованных в память и материализованных на дискGetLoadedObjectStreamCacheInfoсообщает об индексированных и материализованных элементах, попаданиях и промахах кэша и сохранённых декодированных байтах
См. также: LoadFromRandomAccessSource, LoadedStreamMemoryThreshold, DecompressAllObjectStreams