Content-operator-visitors

HotPDF stelt elke bewerking in een gedecodeerde contentstroom beschikbaar via een referentiegetelde visitor-interface en een Delphi-eventcallback zonder dat aanroepers een PDF-tokenizer hoeven te schrijven

Inspecteren en meten

THPDFContentOperatorEventData identificeert de begin-stroom-, operator- en eind-stroomfases en rapporteert de bewerkingsindex, operatornaam, operandtelling, bytereeks en deterministische status vóór de huidige bron-operator wordt uitgevoerd

De status bevat grafische-status-, tekstobject-, gemarkeerde-inhoud- en compatibiliteits-sectiediepten, terwijl THPDFContentOperatorView on-demand alleen-lezen bewerkings- of operand-bytes biedt zonder de volledige bronstroom te kopiëren

Transformeren of afwijzen

Callbacks selecteren coaKeep, coaDelete, coaReplace, coaStop of coaReject

Verwijder- en vervangacties worden gesorteerde niet-overlappende AST-bewerkingen; een afwijzing publiceert geen uitvoer en coaStop voltooit succesvol na de huidige operator

Statussnapshots volgen de oorspronkelijke bron-doorloop, zelfs wanneer een bewerking wordt vervangen, waardoor herhaalde inspectie deterministisch blijft

Budgetten en validatie

THPDFContentOperatorVisitOptions.Default configureert MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes en ValidateOutput

Annulering wordt gecontroleerd tijdens de doorloop, en getransformeerde uitvoer wordt opnieuw geparst onder dezelfde lexeme-, diepte- en operatorlimieten voordat deze kan worden geretourneerd of naar een geladen pagina kan worden geschreven

Ongeldige invoer, ongeldige vervanguitvoer, callback-fouten, limietconfiguraties en expliciete afwijzing worden onderscheiden door THPDFContentOperatorVisitStatus en een diagnostiek

Laden-pagina-registratie

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

De interface-visitor draait vóór de eventcallback wanneer beide zijn toegewezen, en beide voeren synchroon uit op de aanroepende thread

Met ApplyChanges=True valideert HotPDF eerst de volledige getransformeerde stroom, vervangt dan de pagina-inhoud in één grafiekmutatie en maakt gecompileerde display-list-, raster-, schijf-, lettertype-decoder- en thumbnailcaches ongeldig

Gerelateerde API's