ExtractTextFromPageによるしおりの追加
テキストコンテンツに基づいてしおりを追加する際、Pages.Linesプロパティでの検索が失敗する可能性があります。それは取得されたテキストが乱れたり順序が崩れたりするからです。そのため、タイトルに基づいた検索が一度も一致しません。 Each page のテキストをExtractTextFromPage()で抽出し、論理的な順序でページを読み、信頼できる文字列を検索できるようにしてください。
LinkAnnotationを使用します。 (特定のページと位置に移動するためのクリッカブルリンクをサポートしており、利用可能な場合には推奨されるアプローチです。
Pages.Linesは、ページに視覚的に表示される方法からテキストを再構成します。 テキストが非線型順序で描画されている場合や、カスタムフォントやエンコーディングが使用されている場合、またはHTMLやサードパーティツールから生成されたPDFで複雑なレイアウトがある場合に、その機能が低下します。 その結果得られるのは、完全ではなかったり混在したテキストであり、信頼性のある検索を行うことはできません。
解決策
1. ExtractTextFromPage()で各ページを読み取る
視覚的な再構成ではなく、すべてのページから埋め込まれた生のテキストを取り出します。 ExtractTextFromPage()はページのコンテンツを論理的な読み順で返し、異なるPDF構造全体でのヘッダー検索をより信頼性のあるものにします。
2. 各ページをループし、各ユニークなヘッダーをしおりにします
どのセクションも見逃さないよう全ページをウォークし、どのヘッダーを既に見たかを記録して、各ヘッダーが1回だけしおりにされるようにします。 ドキュメント内のHashSetを使ってデデュープするのはクリーンな方法です。それにより、各記事に対する単一のしおりが保証されます。
出力は、動的HTMLソースから来たPDFであっても複雑なフォーマットを持っていてもしっかりと整列された各指定見出しを指すしおりのセットです。


