Zero-copy срезы object stream

Когда разрешение ссылок впервые материализует член сжатого /Type /ObjStm, парсер читает zero-copy slice-представление поверх общего распакованного буфера контейнера вместо дублированной подстроки плюс второй копии потока, так что большие документы с множеством членов больше не платят двойным копированием за каждый объект

THPDFObjectStreamSliceStream

Публичное read-only представление TStream над тройкой (source, offset, length): оно держит исходный AnsiString по ссылке, так что байты контейнера живут без дублирования, отдаёт ровно байты члена, добавляет один виртуальный завершающий LF, чтобы парсеры видели ту же раскладку, что давала прежняя копия, и на seek до начала среза ограничивает позицию вместо исключения — в духе снисходительности TMemoryStream

THPDFObjectStreamCacheInfo

Две новые диагностические метрики описывают zero-copy путь: SliceViewCount считает представления членов, переданные парсеру, а SliceViewBytes суммирует покрытые ими байты членов — рядом с существующими счётчиками контейнера, индексации, попаданий, промахов и кэшированных байтов, которые возвращает GetLoadedObjectStreamCacheInfo