Maison > développement back-end > C++ > Pourquoi iTextSharp ne parvient-il pas à extraire correctement le texte non anglais des PDF ?

Pourquoi iTextSharp ne parvient-il pas à extraire correctement le texte non anglais des PDF ?

Mary-Kate Olsen
Libérer: 2025-01-11 08:00:42
original
657 Les gens l'ont consulté

Why Does iTextSharp Fail to Extract Non-English Text from PDFs Correctly?

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>
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal