PDFium Delphi Component Docs

TPdfProgressiveDocument classe

Unidade: PDFium  ·  Classe base: TPdf
Sessão nativa de download progressivo do PDFium com disponibilidade esparsa de bytes, agendamento priorizado de intervalos, novas tentativas limitadas, cancelamento e portões de documento, formulário e página

Syntax

type TPdfProgressiveDocument = class(TPdf) ... end;

Methods

MethodDescription
CreateCria o componente de documento e seu agendador de solicitações de intervalo próprio
DestroyCancela o estado progressivo antes de liberar os recursos herdados do documento
BeginProgressiveLoad(AStream, AFileSize, AOwnsStream, AInitialAvailableByteCount)Cria o provedor nativo de disponibilidade mantendo o tamanho final lógico separado dos bytes atualmente armazenados
CheckDocumentAvailabilityRetorna pdaAvailable, pdaNotAvailable ou pdaError e devolve os intervalos de bytes mesclados solicitados pelo PDFium
OpenProgressiveDocumentAbre um PDF linearizado por meio de FPDFAvail_GetDocument ou um PDF não linearizado totalmente recebido por meio de FPDF_LoadCustomDocument
CheckFormAvailabilityCondiciona o preenchimento inicial de formulários até que os dados nativos de formulário estejam disponíveis
LoadAvailablePageCondiciona e carrega uma página de base um depois que a disponibilidade de formulário atinge um estado terminal
CancelProgressiveLoadFecha a página, o formulário, o documento, o handle de disponibilidade, os callbacks e o adaptador de stream em ordem de dependência

Properties and events

MemberTypeDescription
ProgressiveLoadingBooleanTrue enquanto a sessão nativa de disponibilidade está ativa
LogicalFileSizeUInt64Comprimento final do conteúdo fornecido pelo servidor ou contêiner
AvailableByteCountUInt64Comprimento monotônico do prefixo contíguo já legível a partir do stream
LinearizationTPdfLinearizationVeredito nativo de linearização quando bytes de cabeçalho suficientes estão disponíveis
FirstAvailablePageNumberIntegerPrimeira página de base um depois que o handle do documento é aberto
OnDataAvailableTPdfDataAvailableEventSubstitui o teste de prefixo para armazenamentos esparsos ou fora de ordem
RangeRequestsTPdfRangeRequestSchedulerAgendador próprio preenchido a partir de cada dica nativa de download de documento, formulário e página

Description

TPdfProgressiveDocument é proprietário do handle nativo FPDF_AVAIL e dos records de callback que o PDFium pode revisitar ao longo de um carregamento remoto ou de stream em crescimento

Comece com o comprimento do conteúdo do servidor e qualquer prefixo inicial, chame o método de disponibilidade relevante, desenfileire trabalho de RangeRequests, grave cada resposta no armazenamento de acesso aleatório de suporte, chame CompleteRequest e repita até que um estado terminal de disponibilidade seja retornado

Para um download contíguo, avance AvailableByteCount após gravar novos bytes; para um cache de intervalos esparso, atribua OnDataAvailable e responda se cada deslocamento e tamanho solicitados são legíveis

O agendador aceita as mesmas dicas nativas retornadas pela saída legada DownloadHints, remove intervalos já conhecidos por meio do prefixo ou do callback esparso, preempta transferências em segundo plano sobrepostas em favor de bytes críticos de página sem promover caudas adjacentes e divide o trabalho de transporte em MaxRequestSize

PDFs linearizados podem abrir seus metadados de documento e a primeira página antes que o arquivo inteiro chegue; PDFs não linearizados exigem o arquivo completo e usam automaticamente o carregador nativo normal de stream personalizado

Example

var
  Hints: TPdfDownloadRanges;
  Request: TPdfRangeRequest;
  State: TPdfDataAvailability;
begin
  Progressive.BeginProgressiveLoad(CacheStream, ContentLength,
    False, InitialPrefixLength);
  repeat
    State := Progressive.CheckDocumentAvailability(Hints);
    while Progressive.RangeRequests.TryDequeue(Request) do
    begin
      FetchRangeIntoCache(Request.Offset, Request.Size);
      Progressive.RangeRequests.CompleteRequest(Request);
    end;
  until State <> pdaNotAvailable;
  if State = pdaAvailable then
    Progressive.OpenProgressiveDocument;
end;

Remarks

Related types

TPdfDataAvailability, TPdfDownloadRange, TPdfDownloadRanges, TPdfRangeRequest, TPdfRangeRequestPriority, TPdfRangeRequestStatistics, TPdfRangeRequestScheduler, TPdfDataAvailableEvent, TPdfLinearization, TPdfFormAvailability