iTextSharp と多言語 PDF: 英語以外のテキスト抽出の問題を解決する
多言語 PDF からテキストを抽出するのは難しい場合があります。 iTextSharp は英語のテキストには効果的ですが、英語以外の文字には問題があり、テキストが破損したり欠落したりすることがあります。問題とその解決策を調べてみましょう。
問題: 英語以外の文字化け
一般的なシナリオには、iTextSharp を使用して PDF からペルシア語またはアラビア語のテキストを抽出しようとすることが含まれます。 コードは英語では正しく機能しますが、英語以外の文字はスクランブルまたは不完全に表示されます。
根本原因: エンコードエラー
中心的な問題は、.NET Framework 内で文字列がどのように処理され、エンコードされるかにあります。 .NET 文字列は本質的に Unicode です。 不必要なエンコード変換はデータの破損につながります。
問題のあるコード スニペットは、次のようになります:
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
この複数のエンコード変換プロセスが問題の原因です。
解決策: エンコーディングを簡素化する
解決策は非常に簡単です。冗長なエンコード変換行を削除します。
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
この行を削除すると、元の Unicode 表現が保存されます。 さらに、アプリケーションが Unicode をサポートしていること、および現在の iTextSharp バージョンを使用していることを確認してください。
エンコーディングを超えて: テキストの順序に関する考慮事項
エンコーディングを解決すると文字の破損は修正されますが、潜在的なテキストの順序の問題には対処できません。右から左に記述する言語 (アラビア語やヘブライ語など) は、PDF 内で逆の順序で表示される場合があります。 これを正しく処理するには、テキストを適切に再配置するための追加の解析ロジックが必要です。
以上がiTextSharp が PDF から英語以外のテキストを正しく抽出できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。