Ajout de Signets avec ExtractTextFromPage
Lorsque vous ajoutez des signets basés sur le contenu textuel, la recherche avec la propriété Pages.Lines peut échouer car le texte retourné revient désordonné ou désorganisé, de sorte qu'une recherche basée sur le titre ne correspond jamais. Extraire le texte de la page avec ExtractTextFromPage() lit chaque page en ordre logique et vous donne une chaîne fiable à rechercher.
LinkAnnotation à la place. Elle comporte un support intégré pour les liens clicables qui naviguent vers une page spécifique et une position, et est l'approche recommandée lorsqu'elle est disponible.Pages.Lines reconstruit le texte selon son apparence visuelle sur la page. Cela échoue lorsque le texte est dessiné dans un ordre non linéaire, lorsque des polices ou encodages personnalisés sont utilisés, ou lorsque le PDF a été généré à partir de HTML ou d'un outil tiers avec une mise en page complexe. Le résultat est un texte incomplet ou confus que vous ne pouvez pas rechercher de manière fiable.
Solution
1. Lisez chaque page avec ExtractTextFromPage()
Extraire le texte brut intégré de chaque page plutôt que la reconstruction visuelle. ExtractTextFromPage() renvoie le contenu de la page dans l'ordre logique de lecture, ce qui rend la recherche d'en-tête bien plus fiable à travers des structures PDF variées.
2. Parcourez chaque page et créez un signet pour chaque en-tête unique
Parcourez toutes les pages pour ne manquer aucune section, peu importe où elle se trouve, et suivez les en-têtes que vous avez déjà vus pour que chacun soit signé seulement une fois. Un HashSet est un moyen propre de dédupliquer : étant donné un document avec des sections titrées "ARTICLE 1", "ARTICLE 2", et ainsi de suite, il garantit un seul signet par article.
La sortie est un ensemble de signets pointant vers chaque titre spécifié, même si le PDF provient d'une source HTML dynamique ou comporte un formatage complexe.


