Odwiedzający operatorów treści

HotPDF wystawia każdą operację w zdekodowanym strumieniu treści przez interfejs odwiedzającego z licznikiem odwołań oraz wywołanie zwrotne zdarzenia Delphi bez wymagania, by wywołujący pisali tokenizer PDF

Przeglądaj i mierz

THPDFContentOperatorEventData identyfikuje fazy początek-strumienia, operatora i koniec-strumienia oraz raportuje indeks operacji, nazwę operatora, liczbę argumentów, zakres bajtów i deterministyczny stan przed wykonaniem bieżącego operatora źródłowego

Stan zawiera głębokości stanu grafiki, obiektu tekstu, treści oznaczonej i sekcji kompatybilności, podczas gdy THPDFContentOperatorView dostarcza na żądanie bajty operacji lub argumentów tylko do odczytu bez kopiowania kompletnego strumienia źródłowego

Przekształć lub odrzuć

Wywołania zwrotne wybierają coaKeep, coaDelete, coaReplace, coaStop lub coaReject

Akcje usuwania i zastępowania stają się posortowanymi nie nakładającymi się edycjami AST; odrzucenie nie publikuje wyjścia, a coaStop kończy się pomyślnie po bieżącym operatorze

Migawki stanu podążają za pierwotnym przechodzeniem źródła nawet, gdy operacja jest zastępowana, czyniąc powtarzaną inspekcję deterministyczną

Budżety i walidacja

THPDFContentOperatorVisitOptions.Default konfiguruje MaxSourceBytes, MaxOperators, MaxLexemes, MaxDepth, MaxReplacementBytes i ValidateOutput

Anulowanie jest sprawdzane podczas przechodzenia, a przekształcone wyjście jest ponownie analizowane pod tymi samymi limitami leksemów, głębokości i operatorów, zanim może zostać zwrócone lub zapisane do załadowanej strony

Źle uformowane dane wejściowe, nieprawidłowe wyjście zastępowania, wyjątki wywołań zwrotnych, niepowodzenia limitów i jawne odrzucenie są rozróżniane przez THPDFContentOperatorVisitStatus i diagnostykę

Rejestracja załadowanej strony

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

Odwiedzający interfejsu przebiega przed wywołaniem zwrotnym zdarzenia, gdy oba są przypisane, a oba wykonują się synchronicznie na wątku wywołującym

Przy ApplyChanges=True HotPDF najpierw sprawdza cały przekształcony strumień, następnie zastępuje treść strony w jednej mutacji grafu i unieważnia skompilowane pamięci podręczne list wyświetlania, rastra, dysku, dekodera czcionek i miniatur

Powiązane API