Visitantes de operadores de contenido

HotPDF expone cada operación de un flujo de contenido decodificado mediante una interfaz de visitante con recuento de referencias y una devolución de llamada de evento de Delphi, sin exigir que los llamadores escriban un tokenizador de PDF

Inspección y medición

THPDFContentOperatorEventData identifica las fases de inicio de flujo, operador y fin de flujo, e informa del índice de operación, el nombre del operador, el recuento de operandos, el rango de bytes y el estado determinista antes de que se ejecute el operador de origen actual

El estado contiene las profundidades de estado gráfico, objeto de texto, contenido marcado y sección de compatibilidad, mientras que THPDFContentOperatorView proporciona bytes de operación u operando de solo lectura bajo demanda sin copiar el flujo de origen completo

Transformación o rechazo

Las devoluciones de llamada seleccionan coaKeep, coaDelete, coaReplace, coaStop o coaReject

Las acciones de eliminación y reemplazo se convierten en ediciones de AST ordenadas y no superpuestas; un rechazo no publica ninguna salida y coaStop finaliza correctamente después del operador actual

Las instantáneas de estado siguen el recorrido original del origen incluso cuando se reemplaza una operación, lo que hace determinista la inspección repetida

Presupuestos y validación

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

La cancelación se comprueba durante el recorrido, y la salida transformada se analiza de nuevo bajo los mismos límites de lexema, profundidad y operador antes de poder devolverse o escribirse en una página cargada

La entrada malformada, la salida de reemplazo no válida, las excepciones de devolución de llamada, los fallos de límite y el rechazo explícito se distinguen mediante THPDFContentOperatorVisitStatus y un diagnóstico

Registro en página cargada

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

El visitante de interfaz se ejecuta antes de la devolución de llamada de evento cuando ambos están asignados, y ambos se ejecutan de forma síncrona en el hilo que realiza la llamada

Con ApplyChanges=True, HotPDF valida primero el flujo transformado completo, luego reemplaza el contenido de la página en una única mutación de grafo e invalida las cachés compiladas de lista de visualización, ráster, disco, decodificador de fuentes y miniaturas

APIs relacionadas