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