Carga diferida del árbol de páginas

HotPDF puede conservar un árbol de páginas PDF cargado ordinario como una tabla de marcadores de posición compacta y resolver páginas individuales solo cuando una API las necesita por primera vez

Activación

LazyPageTreeThreshold tiene un valor predeterminado de 4096 páginas y se aplica a árboles de páginas válidos cuya raíz expone una estructura /Count y /Kids utilizable

Establezca el umbral en 0 antes de cargar para deshabilitar el manejo diferido del árbol de páginas

Los archivos por debajo del umbral y los árboles malformados continúan por la ruta de recuperación anticipada existente

Acceso aleatorio

El primer acceso a una página sigue los valores /Count del subárbol para omitir ramas no relacionadas y resuelve los objetos indirectos mediante un índice de direccionamiento abierto local al documento

La página resuelta se almacena en su ranura de marcador de posición, por lo que el acceso repetido es un acierto directo de caché

Las APIs ordinarias de páginas cargadas materializan la página solicitada de forma transparente, mientras que MaterializeLoadedPage permite a los llamadores preparar una página conocida explícitamente

Expansión completa y mutación

MaterializeAllLoadedPages expande el árbol restante en orden de página canónico

Las operaciones que añaden, eliminan, copian, reemplazan, mueven, invierten, intercambian, reconstruyen o guardan páginas cargadas de forma estructural realizan una expansión completa antes de mutar o serializar el grafo de páginas

Esto conserva la semántica de mutación y guardado existente mientras mantiene el acceso orientado a lectura proporcional a la profundidad de la rama recorrida

Telemetría

GetLoadedPageTreeStatistics informa del almacenamiento de marcadores de posición, las páginas materializadas, la profundidad y el trabajo de recorrido, la capacidad del índice de objetos, la actividad de caché y las expansiones completas sin forzar la materialización

Una puerta de regresión cubre 100 000 páginas con un tope de crecimiento del conjunto de trabajo de 256 MiB y un tope de 500 ms para el primer acceso aleatorio en destinos Windows admitidos

Véase también: LazyPageTreeThreshold, MaterializeLoadedPage, MaterializeAllLoadedPages, GetLoadedPageTreeStatistics