Visiteurs d’opérateurs de contenu

HotPDF expose chaque opération d’un flux de contenu décodé par une interface de visiteur à comptage de références et un rappel d’événement Delphi, sans exiger que les appelants écrivent un tokenizer PDF

Inspection et mesure

THPDFContentOperatorEventData identifie les phases de début de flux, d’opérateur et de fin de flux et rapporte l’index de l’opération, le nom d’opérateur, le compte d’opérandes, la plage d’octets et l’état déterministe avant l’exécution de l’opérateur source courant

L’état contient les profondeurs d’état graphique, d’objet texte, de contenu marqué et de section de compatibilité, tandis que THPDFContentOperatorView fournit à la demande des octets d’opération ou d’opérande en lecture seule sans copier le flux source complet

Transformation ou rejet

Les rappels sélectionnent coaKeep, coaDelete, coaReplace, coaStop ou coaReject

Les actions de suppression et de remplacement deviennent des modifications AST triées et sans chevauchement ; un rejet ne publie aucune sortie et coaStop réussit après l’opérateur courant

Les instantanés d’état suivent le parcours de la source d’origine même lorsqu’une opération est remplacée, ce qui rend les inspections répétées déterministes

Budgets et validation

THPDFContentOperatorVisitOptions.Default configure MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes et ValidateOutput

L’annulation est vérifiée durant le parcours et la sortie transformée est analysée à nouveau avec les mêmes limites de lexèmes, profondeur et opérateurs avant de pouvoir être renvoyée ou écrite dans une page chargée

Les entrées mal formées, sorties de remplacement non valides, exceptions de rappel, échecs de limite et rejets explicites sont distingués par THPDFContentOperatorVisitStatus et un diagnostic

Enregistrement pour page chargée

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

Le visiteur d’interface s’exécute avant le rappel d’événement lorsque les deux sont affectés et tous deux s’exécutent de manière synchrone sur le thread appelant

Avec ApplyChanges=True, HotPDF valide d’abord le flux transformé complet, remplace ensuite le contenu de page dans une unique mutation de graphe et invalide les caches de liste d’affichage compilée, raster, disque, décodeur de police et miniatures

API associées