Návštěvníci operátorů obsahu

HotPDF poskytuje synchronní návštěvnické zpětné volání pro průchod a transformaci operátorů obsahového streamu PDF

Průchod

Návštěvník obdrží události začátku streamu, operátoru a konce streamu spolu se stavem grafiky, zobrazením operandů a požadovanou akcí Událost THPDFContentOperatorEventData rozliší fáze začátku streamu, operátoru a konce streamu a hlásí index operace, název operátoru, počet operandů, bajtový rozsah i deterministický stav dřív, než se aktuální zdrojový operátor provede

Stav obsahuje hloubky grafického stavu, textového objektu, marked-content a kompatibilní sekce, zatímco THPDFContentOperatorView poskytuje na požádání read-only bajty operace či operandů bez kopírování kompletního zdrojového streamu

Transformovat nebo odmítnout

Zpětná volání volí coaKeep, coaDelete, coaReplace, coaStop nebo coaReject

Akce smazání a náhrady se stanou uspořádanými nepřekrývajícími se úpravami AST; odmítnutí nezveřejní žádný výstup a žádost o ukončení návštěvy nese coaStop

Volající může zachovat, nahradit, vynechat nebo ukončit zpracování operátoru, zatímco ověřené náhradní bajty se zapíší do výsledného obsahu

Životnost

Zobrazení události je zapůjčené a platí jen během zpětného volání. Návštěvník nesmí znovu vstupovat do transformace téhož dokumentu ; limity návštěvy definuje THPDFContentOperatorVisitOptions.Default, který konfiguruje MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes a ValidateOutput

IHPDFContentOperatorVisitor

Poškozený vstup, neplatný náhradní výstup, výjimky zpětných volání, selhání limitů i explicitní odmítnutí rozlišuje THPDFContentOperatorVisitStatus spolu s diagnostikou

Registrace na načtené stránce

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

Rozhraní návštěvníka běží před událostním zpětným voláním, pokud jsou přiřazeny obě, a obojí se provádí synchronně na volajícím vlákně

S ApplyChanges=True nejprve HotPDF zvaliduje kompletní transformovaný stream, poté vymění obsah stránky jednou mutací grafu a zneplatní keše zkompilovaných display listů, rastrů, diskových obsahů, dekodérů fontů a miniatur

Související API