Slices de flujo de objetos de copia cero

Cuando la resolución de enlaces materializa por primera vez un miembro comprimido de /Type /ObjStm, el analizador ahora lee una vista de slice de copia cero sobre el búfer de contenedor descomprimido compartido en lugar de una subcadena duplicada más una segunda copia de flujo, por lo que los documentos grandes con muchos miembros dejan de pagar una doble copia por objeto

THPDFObjectStreamSliceStream

Una vista pública de solo lectura TStream sobre (source, offset, length): mantiene el AnsiString de origen por referencia para que los bytes del contenedor permanezcan vivos sin duplicarlos, sirve exactamente los bytes del miembro, anexa un LF final virtual para que los analizadores observen el diseño que produjo la copia heredada y limita en lugar de lanzar una excepción en las búsquedas antes del inicio del slice, coincidiendo con la indulgencia de TMemoryStream

THPDFObjectStreamCacheInfo

Dos nuevos diagnósticos informan de la ruta de copia cero: SliceViewCount cuenta las vistas de miembros entregadas al analizador y SliceViewBytes suma los bytes de miembros que cubrieron, junto a los contadores existentes de contenedor, indexación, aciertos, fallos y bytes en caché devueltos por GetLoadedObjectStreamCacheInfo