iTextSharp 與多語言 PDF:解決非英語文字擷取問題
從多語言 PDF 中提取文字可能很棘手。 iTextSharp 雖然對英文文字有效,但常常難以處理非英文字符,從而導致文字損壞或遺失。讓我們來看看這個問題及其解決方案。
問題:非英文字亂碼
一個常見的情況是嘗試使用 iTextSharp 從 PDF 中提取波斯語或阿拉伯語文本。 該程式碼對於英語可以正確運行,但非英語字元會顯得混亂或不完整。
根本原因:編碼錯誤
核心問題在於.NET框架中如何處理和編碼字串。 .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中文網其他相關文章!