2014-10-31 53 views
-1

我通過ItextSharp庫閱讀pdf文檔。 但這些文件是捷克語使用變音符號(řěššč等) 我怎樣才能讀這個字符?任何想法?或者,是否有一些解決方案將這些字符替換爲正常的r e z s c? 這是我的方法中的代碼。謝謝ItextSharp - 撥號字符

PdfReader reader = new PdfReader("M:/ShareDirs_KSP/RDM_Debtors/DMS_PROD/" + src); 

    // we can inspect the syntax of the imported page 
    String text = new String(); 
    for (int page = 1; page <= 1; page++) { 

     text += PdfTextExtractor.getTextFromPage(reader, page); 
    } 

    reader.close(); 
+0

如果PDF創建正確,那麼應該正確解析字符。您使用的是哪種版本的iText? PDF中的字體是作爲簡單字體還是複合字體存儲的?如果你不知道區別,請閱讀http://stackoverflow.com/questions/26631815/cant-get-czech-characters-while-generating-a-pdf。 – 2014-10-31 09:10:41

+0

我有5.5.2版本。 我不寫,但我只是閱讀。我可以在哪裏設置編碼? – 2014-10-31 09:21:27

回答

1

我已經寫了一個小的概念驗證文件解析文件czech.pdf。這個文件包含幾個帶有變音符的字符。它創建回答以下問題:Can't get Czech characters while generating a PDF

文本存儲在文件中兩次:一次使用簡單字體,一次使用複合字體。在我的概念(名爲ParseCzech)的證明,我分析這個PDF使用UTF-8(UNICODE)編碼的文件:

public void parse(String filename) throws IOException { 
    PdfReader reader = new PdfReader(filename); 
    FileOutputStream fos = new FileOutputStream(DEST); 
    for (int page = 1; page <= 1; page++) { 
     fos.write(PdfTextExtractor.getTextFromPage(reader, page).getBytes("UTF-8")); 
    } 
    fos.flush(); 
    fos.close(); 
} 

結果是文件czech.txt

enter image description here

由於您可以從屏幕截圖中看到正確提取文本(但要確保您使用的查看器知道文件編碼爲UTF-8,否則您可能會看到奇怪的字符而不是實際的文本)。

請注意,某些PDF不允許正確提取文本。這在以下視頻中進行了解釋:

請分享您的PDF,以便StackOverflow上的人員可以檢查您是否因爲代碼中的錯誤而無法成功提取文本,或者您是否因爲PDF不允許您提取文本。

+0

不幸的是,這些文檔包含非常祕密的信息(有法院發送)我添加.getbytes(「UTF-8」),但我的文本變量只包含「[B @ 1d14147」:/ – 2014-10-31 10:05:51

+0

如果您是客戶,可以共享與NDA簽署的付費支持團隊的文件。如果您是用戶,爲什麼不使用RUPS查看文檔?如果文檔包含祕密信息,則文字可能會被故意混淆,在這種情況下,您將無法提取它。如果你想了解我的意思,請觀看視頻。 – 2014-10-31 10:33:39

+1

*我的文本變量只包含「[B @ 1d14147」* - 看起來您的文本變量是一個字節數組,您嘗試按原樣或其toString值打印。這顯然是行不通的。 – mkl 2014-10-31 20:33:47