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