首頁 >後端開發 >C++ >如何使用 iTextSharp 從 PDF 中提取非英語文字並處理編碼問題?

如何使用 iTextSharp 從 PDF 中提取非英語文字並處理編碼問題?

DDD
DDD原創
2025-01-11 07:28:42244瀏覽

How Can I Extract Non-English Text from PDFs using iTextSharp and Handle Encoding Issues?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn