Visitor degli Operatori di Contenuto

HotPDF espone ogni operazione in un flusso di contenuto decodificato tramite un'interfaccia di visitor con conteggio dei riferimenti e una callback di evento Delphi, senza richiedere ai chiamanti di scrivere un tokenizer PDF

Ispezione e misura

THPDFContentOperatorEventData identifica le fasi di inizio flusso, operatore e fine flusso e riporta l'indice dell'operazione, il nome dell'operatore, il conteggio degli operandi, l'intervallo di byte e lo stato deterministico prima che l'operatore sorgente corrente venga eseguito

Lo stato contiene le profondità dello stato grafico, dell'oggetto di testo, del contenuto marcato e della sezione di compatibilità, mentre THPDFContentOperatorView fornisce byte di operazione o operandi in sola lettura su richiesta senza copiare il flusso sorgente completo

Trasformazione o rifiuto

Le callback selezionano coaKeep, coaDelete, coaReplace, coaStop o coaReject

Le azioni di eliminazione e sostituzione diventano modifiche AST ordinate e non sovrapposte; un rifiuto non pubblica alcun output e coaStop completa in modo corretto dopo l'operatore corrente

Gli snapshot di stato seguono la traversata sorgente originale anche quando un'operazione viene sostituita, rendendo deterministica l'ispezione ripetuta

Budget e validazione

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

La cancellazione viene controllata durante la traversata e l'output trasformato viene analizzato di nuovo sotto gli stessi limiti di lexeme, profondità e operatore prima di poter essere restituito o scritto su una pagina caricata

L'input non valido, l'output di sostituzione non valido, le eccezioni delle callback, i fallimenti dei limiti e il rifiuto esplicito sono distinti da THPDFContentOperatorVisitStatus e da una diagnostica

Registrazione per pagina caricata

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

Il visitor dell'interfaccia viene eseguito prima della callback di evento quando entrambi sono assegnati ed entrambi vengono eseguiti in modo sincrono sul thread chiamante

Con ApplyChanges=True, HotPDF valida prima il flusso trasformato completo, quindi sostituisce il contenuto della pagina in un'unica mutazione del grafo e invalida le cache compilate di display-list, raster, disco, decoder di font e miniature

API correlate