Lesezeichen hinzufügen mit ExtractTextFromPage
Wenn Sie Lesezeichen basierend auf Textinhalten hinzufügen, kann die Suche mit der Eigenschaft Pages.Lines fehlschlagen, da der zurückgegebene Text verstümmelt oder in falscher Reihenfolge zurückkommt, sodass eine Titelsuche nie übereinstimmt. Das Extrahieren des Seitentexts mit ExtractTextFromPage() liest jede Seite in logischer Reihenfolge und gibt Ihnen eine verlässliche Zeichenkette, zu der gesucht werden kann.
LinkAnnotation. Sie hat eingebaute Unterstützung für klickbare Links, die zu einer bestimmten Seite und Position navigieren, und wird empfohlen, wenn verfügbar.Pages.Lines rekonstruiert den Text, wie er auf der Seite visuell erscheint. Das bricht zusammen, wenn Text in einer nicht-linearen Reihenfolge gezeichnet wird, bei maßgeschneiderten Schriften oder Codierungen oder wenn das PDF aus HTML oder einem Drittanbietertool mit einem komplexen Layout generiert wurde. Das Ergebnis ist unvollständiger oder durcheinandergeratener Text, der nicht zuverlässig durchsucht werden kann.
Lösung
1. Lesen Sie jede Seite mit ExtractTextFromPage()
Ziehen Sie den rohen eingebetteten Text aus jeder Seite, anstatt die visuelle Rekonstruktion zu verwenden. ExtractTextFromPage() gibt den Seiteninhalt in logischer Leserichtung zurück, was eine Kopfzeilensuche über verschiedene PDF-Strukturen deutlich zuverlässiger macht.
2. Durchlaufen Sie jede Seite und fügen Sie jedem einzigartigen Header ein Lesezeichen hinzu
Durchlaufen Sie alle Seiten, damit kein Abschnitt übersehen wird, unabhängig davon, wo er liegt, und verfolgen Sie, welche Header Sie bereits gesehen haben, damit jedes nur einmal mit einem Lesezeichen versehen wird. Ein HashSet ist eine saubere Möglichkeit zur Duplikaterkennung: Bei einem Dokument mit Abschnitten, die mit "ARTICLE 1", "ARTICLE 2" und so weiter betitelt sind, wird ein einzelnes Lesezeichen pro Artikel garantiert.
Die Ausgabe ist eine Sammlung von Lesezeichen, die auf jede festgelegte Überschrift zeigen, selbst wenn das PDF aus einer dynamischen HTML-Quelle stammt oder komplexe Formatierungen aufweist.


