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