Besøkere for innholdsoperatorer

HotPDF eksponerer hver operasjon i en dekodet innholdsstrøm gjennom et referanse-tallsett grensesnitt og en Delphi-hendelseskallerback, uten at kallere trenger å skrive en PDF-tokeniserer

Inspiser og mål

THPDFContentOperatorEventData identifiserer startstrøm-, operator- og sluttstrøm-fasene og rapporterer operasjonsindeksen, operatornavnet, antall operander, byteområdet og deterministisk tilstand før den aktuelle kildeoperatoren utføres

Tilstanden inneholder dybder for grafikk-tilstand, tekstobjekt, markert innhold og kompatibilitetsseksjon, mens THPDFContentOperatorView gir på-forespørsel skrivebeskyttede operasjons- eller operand-bytes uten å kopiere hele kilde-strømmen

Transformer eller avvis

Tilbakeringinger velger coaKeep, coaDelete, coaReplace, coaStop eller coaReject

Slett- og erstatt-handlinger blir sorterte ikke-overlappende AST-redigeringer; en avvisning publiserer ingen utdata og coaStop fullføres vellykket etter gjeldende operator

Tilstandsoyeblikksbilder følger den opprinnelige kildetraverseringen selv når en operasjon erstattes, noe som gjør gjentatt inspeksjon deterministisk

Budsjetter og validering

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

Kansellering kontrolleres under traverseringen, og transformert utdata parses på nytt under de samme leksem-, dybde- og operatorgrensene før den kan returneres eller skrives til en lastet side

Feilformet input, ugyldig erstatningsutdata, unntak fra tilbakeringing, grensefeil og eksplisitt avvisning skilles av THPDFContentOperatorVisitStatus og en diagnostikk

Registrering for lastet side

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

Grensesnittbesøkeren kjører før hendelses-tilbakeringen når begge er tildelt, og begge utføres synkront på den kallende tråden

Med ApplyChanges=True validerer HotPDF den fullstendige transformerte strømmen først, og erstatter deretter sideinnholdet i én grafmuterer og ugyldiggjør kompilerte visningsliste-, raster-, disk-, skriftdekoder- og miniatyrbuffere

Relaterte API-er