Paginação do mapa de referências cruzadas

Quando o mapa de referências cruzadas de um documento cresce além de THotPDF.XRefMapPagingThreshold entradas (padrão 250000, cerca de 8 MB densos), a passada de conclusão de carga o empacota em THPDFXRefMapPager e libera a matriz densa, portanto documentos grandes param de reter cada entrada em um mapa de registros alinhado

THPDFXRefMapPager

O paginador armazena um instantâneo ordenado de slots compactados de 24 bytes (THPDFXRefMapSlot): número do objeto, tipo de entrada, geração de 16 bits, deslocamento e localização do fluxo de objetos. GetEntry responde por busca binária em uma página de 64 entradas materializada por LRU, portanto buscas sequenciais decodificam uma página para muitas entradas; CollectFreeEntries extrai o conjunto livre em ordem de número de objeto para a reconstrução da atualização incremental

Diagnósticos e consumidores

GetLoadedXRefMapPaged relata o estado paginado com contagem de entradas, bytes do instantâneo e contagens de acerto ou erro de janela; a reconstrução do conjunto livre de salvamento incremental e a resolução indireta de /Length de membros de fluxo materializados preguiçosamente respondem por meio do paginador, e definir o limite como 0 desativa a paginação por completo