2012-06-05 35 views
3

我想使用iTextSharp讀取PDF文件。問題是,當試圖閱讀英文以外的PDF文件(例如印地文或阿拉伯文)時,它沒有得到正確的單詞。使用Itextsharp讀取本地化的PDF文件

我想知道,我是否應該在我的系統上安裝印地文或阿拉伯文字體,還是需要使用編碼進行操作?

ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText))); 
text.Append(currentText); 

編輯:

樣品PDF作爲圖片:

enter image description here

提取的文本:

uxj ikfydk IFJ 「KN fuokZpd ukekoyh i`」 B la [; k%個& & & ftys DK UKE ftys DK UKE ftys DK UKE ftys DK UKE%%%% 0701-ò¶âã£ûæ- & & & fudk fudk fudk fudk; ; ; ; DK UKE DK UKE DK UKE DK UKE%%%% 1-¢AI™ & & & okMZ LA okMZ LA okMZ LA okMZ LA〔〔〔〔; ; ; ; ko uke ko uke ko uke ko uke%%% 1-®®®â§ââââÕÕÕâ012 012 012 012 & & & Hkkx la Hkkx la Hkkx la Hkkx la [[[[[ ; ; ; k k k k%%%%

+1

看看是否有幫助http://stackoverflow.com/a/10191879/231316 –

+0

對不起克里斯,沒有幫助。我正在嘗試閱讀印地文PDF文件。 – Parwej

+0

你可以發佈樣本PDF嗎?如果沒有,你能至少張貼提取的原始字節,也許是前20個左右?字體不應該以任何方式用於文本提取,字體僅用於渲染。 –

回答

0

不要使用任何種類的編碼,因爲您不知道 編碼是pdf文件所具有的。

。 我認爲它會工作。

ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); 
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy); 
text=text+currentText; 

///do what you want with text 
MessageBox.Show(text); 

如果仍然不能正常工作,那麼您必須安裝特定的字體。

+0

對不起,得到同樣的結果。 N.ot – Parwej

+0

你安裝了必要的字體嗎? –

+0

我能夠以正確的格式查看PDf。事件我正在調試代碼並獲取不正確格式的文本字符串。所以我相信字體被安裝。 – Parwej