Dodawanie zakładek za pomocą ExtractTextFromPage
Gdy dodajesz zakładki oparte na treści tekstowej, wyszukiwanie z właściwością Pages.Lines może się nie powieść, ponieważ zwracany tekst wraca złożony lub nieuporządkowany, więc wyszukiwanie w oparciu o tytuł nigdy nie zadziała. Wyciągnięcie tekstu strony za pomocą ExtractTextFromPage() odczytuje każdą stronę w logicznej kolejności i daje niezawodny ciąg do wyszukiwania.
LinkAnnotation zamiast. Posiada wbudowane wsparcie dla klikalnych linków, które nawigują do konkretnej strony i pozycji, i jest zalecanym podejściem, gdy jest dostępne.Pages.Lines rekonstruuje tekst z tego, jak wizualnie pojawia się na stronie. To załamuje się, gdy tekst jest rysowany w nie liniowym porządku, gdy niestandardowe czcionki lub kodowanie są w grze, lub gdy PDF został wygenerowany z HTML lub narzędzia trzeciej strony ze skomplikowanym układem. Rezultatem jest niepełny lub pomieszany tekst, którego nie można pewnie wyszukać.
Rozwiązanie
1. Odczytaj każdą stronę za pomocą ExtractTextFromPage()
Pobierz surowy osadzony tekst z każdej strony zamiast wizualnej rekonstrukcji. ExtractTextFromPage() zwraca zawartość strony w logicznej kolejności czytania, co czyni wyszukiwanie w nagłówkowym bardziej niezawodnym w różnych strukturach PDF.
2. Przeprowadzaj pętlę po każdej stronie i oznaczaj zakładką każdy unikalny nagłówek
Przejdź przez wszystkie strony, aby nie pominąć żadnej sekcji bez względu na to, gdzie się znajduje, i śledź, które nagłówki już widziałeś, aby każdy był oznakowowany tylko raz. HashSet to czysty sposób na usunięcie duplikatów: podając dokument z sekcje zatytułowane "ARTICLE 1", "ARTICLE 2", i tak dalej, gwarantuje pojedynczą zakładkę na artykuł.
Wyjściem jest zestaw zakładek wskazujących na każdy określony nagłówek, nawet gdy PDF pochodzi z dynamicznego źródła HTML lub zawiera skomplikowane formatowanie.


