首頁 > 後端開發 > C++ > 為什麼 iTextSharp 無法正確從 PDF 中提取非英文文字?

為什麼 iTextSharp 無法正確從 PDF 中提取非英文文字?

Mary-Kate Olsen
發布: 2025-01-11 08:00:42
原創
677 人瀏覽過

Why Does iTextSharp Fail to Extract Non-English Text from PDFs Correctly?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板