Scalable and Random-Access PDF Loading

HotPDF сохраняет отзывчивость больших загруженных файлов за счёт откладывания копирования потоков и разбора сжатых объектов до момента, когда эти данные действительно требуются

Файловые окна потоков

Не зашифрованные документы, открытые через LoadFromFile, сохраняют неизменяемые тела потоков как диапазоны исходного файла

Операции чтения позиционируются на нужный диапазон и немедленно освобождают дескриптор источника, поэтому исходный файл остаётся заменяемым в Windows

Первая запись материализует поток в памяти, если его размер не превышает LoadedStreamMemoryThreshold, или в принадлежащем ему временном файле, если он больше

Отложенные объектные потоки

Каждый декодированный контейнер /Type /ObjStm индексируется по авторитетному номеру объекта xref без разбора всех элементов при открытии

Каталог, дерево страниц и последующее разрешение ссылок материализуют отдельные элементы однократно и повторно используют разобранные объекты

Полная перезапись автоматически материализует все оставшиеся элементы, тогда как неизменное файловое сохранение может сохранить исходные байты напрямую

Пользовательский произвольный доступ

Создайте подкласс THPDFRandomAccessSource и реализуйте GetSize и ReadAt для загрузки из диапазонов HTTP, баз данных, архивов или виртуального хранилища

LoadFromRandomAccessSource адаптирует источник к позиционируемому парсеру HotPDF и может по желанию владеть источником в течение времени жизни документа

Диагностика

См. также: LoadFromRandomAccessSource, LoadedStreamMemoryThreshold, DecompressAllObjectStreams