Heim >Backend-Entwicklung >C++ >Warum kann iTextSharp nicht-englischen Text nicht korrekt aus PDFs extrahieren?
iTextSharp und mehrsprachige PDFs: Lösung von Problemen bei der Extraktion nicht-englischer Texte
Das Extrahieren von Text aus mehrsprachigen PDFs kann schwierig sein. Obwohl iTextSharp bei englischem Text effektiv ist, hat es oft Probleme mit nicht-englischen Zeichen, was zu beschädigtem oder fehlendem Text führt. Lassen Sie uns das Problem und seine Lösung untersuchen.
Das Problem: Verstümmelte nicht-englische Zeichen
Ein häufiges Szenario besteht darin, mit iTextSharp persischen oder arabischen Text aus einer PDF-Datei zu extrahieren. Der Code funktioniert für Englisch korrekt, aber nicht-englische Zeichen erscheinen verwürfelt oder unvollständig.
Die Hauptursache: Codierungsfehler
Das Kernproblem liegt darin, wie Zeichenfolgen innerhalb des .NET-Frameworks behandelt und codiert werden. .NET-Strings sind von Natur aus Unicode. Unnötige Kodierungskonvertierungen führen zu Datenbeschädigung.
Der problematische Codeausschnitt sieht oft so aus:
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
Dieser mehrfache Kodierungskonvertierungsprozess ist die Ursache des Problems.
Die Lösung: Codierung vereinfachen
Die Lösung ist bemerkenswert einfach: Entfernen Sie die redundante Kodierungskonvertierungszeile:
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
Durch das Entfernen dieser Zeile bleibt die ursprüngliche Unicode-Darstellung erhalten. Stellen Sie außerdem sicher, dass Ihre Anwendung Unicode unterstützt und Sie eine aktuelle iTextSharp-Version verwenden.
Über die Kodierung hinaus: Überlegungen zur Textreihenfolge
Während das Auflösen der Codierung die Zeichenbeschädigung behebt, werden mögliche Probleme mit der Textreihenfolge nicht behoben. Von rechts nach links geschriebene Sprachen (wie Arabisch und Hebräisch) werden im PDF möglicherweise in umgekehrter Reihenfolge wiedergegeben. Um dies richtig zu handhaben, ist zusätzliche Parsing-Logik erforderlich, um den Text entsprechend neu anzuordnen.
Das obige ist der detaillierte Inhalt vonWarum kann iTextSharp nicht-englischen Text nicht korrekt aus PDFs extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!