2009-11-10 53 views
1

當我打開PDF文件並將內容寫入文本文件時,文本文件中的內容會混亂。我認爲這是因爲編碼。據我所知,JVM將默認字符集設置爲Cp1252(因爲我在Windows XP上運行)。我已經改變了默認的字符集,但沒有結果(System.setProperty("file.encoding", "ISO-8859-1");Java:如何將PDF寫入文本文件?

  • 我試着使用iText的,但得到的內容缺少一些字母有變音符號

任何想法?

回答

4

iText沒有正確讀取所有字母的原因可能是由於用於該字體的編碼。您可以聲明字體如下:

BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED); 

其中BaseFont.CP1252是使用的編碼。請注意,某些字體不支持所有類型的編碼。

+0

非常感謝你,你的建議解決了問題的一部分:D乾杯 – Stephan 2009-11-10 10:48:01

0

PDF是一個二進制文件,因此您無法將其作爲文本文件讀取。您將不得不尋找一些第三方庫來閱讀PDF內容。

+0

你的權利感謝你的迴應...我試圖使用IText,但在結果的內容是缺少一些字母有變音符號 任何想法?謝謝 – Stephan 2009-11-10 09:58:37

1

iText的是從頭開始創建PDF格式的API,但序閱讀和編輯現有的文件,你可以看看下面的鏈接 http://www.lowagie.com/iText/

+0

我試過使用IText,但在結果內容中缺少一些帶有變音符號的字母。任何想法?謝謝 – Stephan 2009-11-10 10:06:17

2

你可以試試JavaPDF。它有一個API供你完成這項工作。您可以從PDFReader類調用方法extractTextFromPage(int pageIndex)

2

使用iText幫手類PdfTextExtractor應該可以正常工作。只是檢查你正在寫文件到磁盤時使用正確的編碼:

OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file),"ISO-8859-1")); 
+0

謝謝你的回覆,它使我的工作變得更容易,但它仍然沒有解決我的問題一些變音符號的問題 – Stephan 2009-11-10 13:37:52

1

我們PDFTextStream庫提供了變音符號的全面支持,以及(Unicode標準中定義的所有字符集,包括中國,日本,和韓國字符,在水平和垂直書寫模式下)。您可能會發現它在其他工具沒有的地方正確提取這些變音符號。

有些情況下,字符在提取爲文本時看起來與用Acrobat這樣的PDF閱讀器顯示的時候不一樣 - 當使用Acrobat進行渲染時,這種情況通常是這種情況一個基於圖像的字體(顯然不直接轉換爲文本,並且需要OCR處理才能派生出合適的重音字符)。