Utiliser iTextSharp en C# pour extraire du contenu PDF : résoudre les problèmes de caractères non anglais
Cet article aborde le défi de l'extraction de texte non anglais à partir de fichiers PDF à l'aide d'iTextSharp en C#. Le problème se manifeste souvent par un texte tronqué lorsqu'il s'agit de langues comme le persan ou l'arabe.
Comprendre l'origine du problème
La cause première réside dans une conversion d'encodage inutile :
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
Ce code convertit le texte en un tableau d'octets UTF-8, puis le reconvertit en chaîne UTF-8 : un processus redondant qui corrompt par inadvertance les caractères en dehors de la plage ASCII de base (0-127).
La solution : un encodage simplifié
La solution est simple : supprimez l’étape d’encodage redondante. Le code corrigé est :
<code class="language-csharp">public string ReadPdfFile(string fileName) { StringBuilder text = new StringBuilder(); if (File.Exists(fileName)) { PdfReader pdfReader = new PdfReader(fileName); // ... (rest of the code remains unchanged) ... } return text.ToString(); }</code>
Autres points à noter
Pour un affichage correct, vérifiez que le moteur de rendu de votre application prend en charge Unicode. L'utilisation de la dernière version d'iTextSharp (actuellement 5.2.0.0) est recommandée pour des performances optimales.
Gestion du texte de droite à gauche
Bien que le code corrigé résolve les problèmes d'encodage, les langues s'écrivant de droite à gauche (comme l'arabe et l'hébreu) peuvent encore présenter un défi. Le texte extrait peut apparaître dans le mauvais ordre. Cela semble être une limitation du format PDF lui-même, et une réorganisation manuelle peut être nécessaire en fonction de la langue spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!