Visitantes de operadores de conteúdo

O HotPDF expõe cada operação em um stream de conteúdo decodificado por meio de uma interface de visitante com contagem de referências e um callback de evento Delphi sem exigir que os chamadores escrevam um tokenizador PDF

Inspecionar e medir

THPDFContentOperatorEventData identifica as fases de início de stream, operador e fim de stream e relata o índice de operação, o nome do operador, a contagem de operandos, o intervalo de bytes e o estado determinístico antes que o operador de origem atual seja executado

O estado contém profundidades de estado gráfico, objeto de texto, conteúdo marcado e seção de compatibilidade, enquanto THPDFContentOperatorView fornece bytes de operação ou operando somente leitura sob demanda sem copiar o stream de origem completo

Transformar ou rejeitar

Callbacks selecionam coaKeep, coaDelete, coaReplace, coaStop ou coaReject

Ações de exclusão e substituição tornam-se edições AST ordenadas e não sobrepostas; uma rejeição não publica saída e coaStop conclui com sucesso após o operador atual

Instantâneos de estado seguem a travessia de origem original mesmo quando uma operação é substituída, tornando a inspeção repetida determinística

Orçamentos e validação

THPDFContentOperatorVisitOptions.Default configura MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes e ValidateOutput

O cancelamento é verificado durante a travessia, e a saída transformada é analisada novamente sob os mesmos limites de lexema, profundidade e operador antes de poder ser retornada ou gravada em uma página carregada

Entrada malformada, saída de substituição inválida, exceções de callback, falhas de limite e rejeição explícita são distinguidos por THPDFContentOperatorVisitStatus e um diagnóstico

Registro em página carregada

PDF.ContentOperatorVisitor := Visitor;
PDF.OnContentOperator := HandleContentOperator;
Options := THPDFContentOperatorVisitOptions.Default;
if PDF.VisitLoadedPageContentOperators(0, True, Options,
  CancellationToken, Statistics) then
  UseStatistics(Statistics);

O visitante de interface é executado antes do callback de evento quando ambos estão atribuídos, e ambos executam sincronamente na thread de chamada

Com ApplyChanges=True, o HotPDF valida primeiro o stream transformado completo, depois substitui o conteúdo da página em uma única mutação de grafo e invalida caches compilados de lista de exibição, raster, disco, decodificador de fonte e miniatura

APIs relacionadas