C# で iTextSharp を使用して PDF コンテンツを抽出する: 英語以外の文字の問題に対処する
この記事では、C# で iTextSharp を使用して PDF ファイルから英語以外のテキストを抽出するという課題に取り組みます。 この問題は、ペルシア語やアラビア語などの言語を扱うときにテキストの文字化けとして現れることがよくあります。
問題の原因を理解する
根本的な原因は、不必要なエンコード変換にあります:
<code class="language-csharp">currentText = Encoding.UTF8.GetString(Encoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.UTF8.GetBytes(currentText)));</code>
このコードは、テキストを UTF-8 バイト配列に変換し、その後 UTF-8 文字列に戻します。これは、基本的な ASCII 範囲 (0 ~ 127) 以外の文字を誤って破損する冗長なプロセスです。
解決策: エンコーディングの簡素化
解決策は簡単です。冗長なエンコード手順を削除します。修正されたコードは次のとおりです:
<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>
その他の注意点
適切に表示するには、アプリケーションのレンダリング エンジンが Unicode をサポートしていることを確認してください。 最適なパフォーマンスを得るには、最新の iTextSharp バージョン (現在 5.2.0.0) を使用することをお勧めします。
右から左へ記述するテキストの処理
修正されたコードではエンコーディングの問題は解決されていますが、右から左に記述する言語 (アラビア語やヘブライ語など) では依然として問題が発生する可能性があります。 抽出されたテキストは間違った順序で表示される可能性があります。これは PDF 形式自体の制限のようで、特定の言語によっては手動で並べ替える必要がある場合があります。
以上がiTextSharp を使用して PDF から英語以外のテキストを抽出し、エンコーディングの問題を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。