LoadFromRangeSource

Gestão de documentos, desempenho

Descrição

Carrega e seleciona um PDF através de um callback síncrono de acesso aleatório, permitindo que clientes HTTP, bases de dados, armazenamentos de objetos e fornecedores de armazenamento personalizados forneçam apenas os intervalos de bytes que o analisador toca

Sintaxe

Delphi

Function TPDFlib.LoadFromRangeSource(SourceSize: Int64;
  ReadCallback: TPDFlibRangeReadEvent; Const Password: WideString;
  ChunkSize: LongInt= 0; CacheLimitBytes: Int64= 0;
  CoalesceWindowMS: Cardinal= PDF_NET_DEFAULT_COALESCE_WINDOW_MS;
  AvailabilityCallback: TPDFlibRangeAvailabilityEvent= Nil): Integer;

Parâmetros

SourceSizeO tamanho total autoritativo da origem em bytes
ReadCallbackO callback que copia bytes para um desvio absoluto da origem
PasswordA senha usada para abrir o PDF, ou uma cadeia vazia para um documento não encriptado
ChunkSizeA granularidade alinhada de obtenção de intervalos; zero seleciona a predefinição de 64 KiB e valores abaixo de 4096 também usam a predefinição
CacheLimitBytesO máximo de bytes retidos entre janelas menos recentemente utilizadas; zero seleciona a predefinição de 4 MiB e valores abaixo de um bloco são elevados a um bloco
CoalesceWindowMSA janela de recolha do primeiro bloco fora da cache de cada leitura absoluta; 2 milissegundos é a predefinição e zero desativa o atraso inicial
AvailabilityCallbackUm teste opcional sem obtenção para intervalos de bytes já presentes em armazenamento progressivo

Valores devolvidos

0Os argumentos de origem eram inválidos ou o PDF não pôde ser carregado; inspecione LastErrorCode
1O documento foi carregado e selecionado

Observações

O callback de leitura recebe desvios absolutos com base zero e deve escrever no máximo Count bytes em Buffer, devolvendo o número escritoO destino do callback e o seu armazenamento de suporte devem permanecer válidos até o documento carregado ser fechado, porque a renderização de páginas, a extração e a gravação podem pedir intervalos adicionais mais tardeAs chamadas são síncronas e podem chegar por ordem não sequencial; um resultado curto é aceite no fim físico da origem, enquanto um resultado zero inesperado faz falhar o carregamento ou a operação diferida atualQuando

AvailabilityCallback está atribuído, devolva um valor diferente de zero apenas quando o intervalo pedido completo puder ser lido imediatamente sem transporte nem E/S bloqueanteUm intervalo em cache está disponível independentemente do resultado do callback; um callback

Nil preserva o comportamento síncrono tratando todos os intervalos de origem válidos como disponíveisBlocos alinhados evitam obtenções de transporte duplicadas para leituras sobrepostas, enquanto o orçamento de bytes limita o payload retido independentemente do tamanho do documentoAs leituras diferidas de objetos e segmentos usam desvios absolutos, pelo que o trabalho concorrente partilha pedidos do mesmo bloco e funde blocos adjacentes em fila sem alterar o cursor posicional do fluxoOs callbacks de origem são serializados e não devem ler recursivamente do mesmo fluxo de intervalos. Use

GetRangeSourceDataAvailability

GetRangeSourceCacheInfo para testar dependências de página, formulário ou objeto indireto sem ler intervalos reportados como em falta. Use SetRangeSourceCacheLimit, ClearRangeSourceCache e