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