iTextSharp et PDF multilingues : résoudre les problèmes d'extraction de texte dans une langue autre que l'anglais
Extraire du texte à partir de PDF multilingues peut être délicat. iTextSharp, bien qu'efficace avec le texte anglais, a souvent du mal avec les caractères non anglais, ce qui entraîne un texte corrompu ou manquant. Examinons le problème et sa solution.
Le problème : les caractères non anglais tronqués
Un scénario courant consiste à tenter d'extraire du texte persan ou arabe d'un PDF à l'aide d'iTextSharp. Le code fonctionne correctement pour l'anglais, mais les caractères non anglais apparaissent brouillés ou incomplets.
La cause profonde : les erreurs d'encodage
Le problème principal réside dans la manière dont les chaînes sont gérées et codées dans le framework .NET. Les chaînes .NET sont intrinsèquement Unicode. Les conversions d'encodage inutiles entraînent une corruption des données.
L'extrait de code problématique ressemble souvent à ceci :
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
Ce processus de conversion à encodages multiples est à l'origine du problème.
La solution : simplifier l'encodage
La solution est remarquablement simple : supprimez la ligne de conversion d'encodage redondante :
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
En éliminant cette ligne, la représentation Unicode originale est préservée. De plus, assurez-vous que votre application prend en charge Unicode et que vous utilisez une version actuelle d'iTextSharp.
Au-delà de l'encodage : considérations relatives à l'ordre du texte
Bien que la résolution de l'encodage corrige la corruption des caractères, elle ne résout pas les problèmes potentiels d'ordre du texte. Les langues écrites de droite à gauche (comme l'arabe et l'hébreu) peuvent être rendues dans l'ordre inverse dans le PDF. Gérer correctement cela nécessite une logique d'analyse supplémentaire pour réorganiser le texte de manière appropriée.
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!