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