Besøgende for indholdsoperatorer

HotPDF eksponerer hver operation i en afkodet indholdsstrøm gennem en referenceoptalt besøgsgrænseflade og et Delphi-hændelseskald uden at kræve, at kaldere skriver en PDF-tokenizer

Undersøg og mål

THPDFContentOperatorEventData identificerer faserne begynd-strøm, operator og slut-strøm og rapporterer operationsindeks, operatornavn, antal operander, byteområde og deterministisk tilstand, før den aktuelle kildeoperator udføres

Tilstanden indeholder dybder for grafiktilstand, tekstobjekt, markeret indhold og kompatibilitetssektion, mens THPDFContentOperatorView giver efterspurgt skrivebeskyttet adgang til operations- eller operandbytes uden at kopiere hele kildestrømmen

Transformér eller afvis

Callbacks vælger coaKeep, coaDelete, coaReplace, coaStop eller coaReject

Sletnings- og erstatningshandlinger bliver sorterede, ikke-overlappende AST-redigeringer; en afvisning udgiver intet output, og coaStop fuldføres uden fejl efter den aktuelle operator

Tilstandssnapshots følger den oprindelige gennemløb af kilden, også når en operation erstattes, hvilket gør gentagen undersøgelse deterministisk

Budgetter og validering

THPDFContentOperatorVisitOptions.Default konfigurerer MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes og ValidateOutput

Annullering kontrolleres under gennemløbet, og transformeret output parses igen under de samme grænser for leksemer, dybde og operatorer, før det kan returneres eller skrives til en indlæst side

Fejldannet input, ugyldigt erstatningsoutput, callback-undtagelser, grænsefejl og eksplicit afvisning skelnes af THPDFContentOperatorVisitStatus og en diagnosticering

Registrering af indlæst side

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

Grænsefladebesøgeren kører før hændelsescallbacket, når begge er tildelt, og begge udføres synkront på den kaldende tråd

Med ApplyChanges=True validerer HotPDF først den komplette transformerede strøm, erstatter derefter sideindholdet i én grafmutation og ugyldiggør cacher for kompileret displayliste, raster, disk, fontafkoder og miniature

Relaterede API'er