簡體   English   中英

Java:如何將PDF寫入文本文件?

[英]Java: how to write out PDF to a text file?

當我打開PDF文件並將內容寫入文本文件時,文本文件中的內容被弄亂了。 我認為是因為編碼。 據我了解, JVM將默認字符集設置為Cp1252 (因為我在Windows XP上運行)。 我已經更改了默認字符集,但沒有任何結果( System.setProperty("file.encoding", "ISO-8859-1");

  • 我嘗試使用IText,但是結果內容缺少一些帶有變音符號的字母

有任何想法嗎?

iText無法正確讀取所有字母的原因可能是由於字體使用了編碼。 您可以像這樣聲明字體:

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

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

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

使用iText幫助程序類PdfTextExtractor應該可以正常工作。 只需在將文件寫入磁盤時檢查是否使用了正確的編碼即可:

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

iText是用於從頭開始創建pdf的API,但是為了閱讀和編輯現有文件,您可以查看以下鏈接http://www.lowagie.com/iText/

您必須使用專門的軟件包。 我使用的兩個是pdftotext( http://en.wikipedia.org/wiki/Pdftotext )和PDFBox( http://incubator.apache.org/pdfbox/ )。 即使使用軟件包,也不能總是保證成功,因為某些PDF編寫工具的質量很差,生成的PDF也很差。

我們的PDFTextStream庫為變音符以及Unicode標准中定義的所有字符集(包括水平和垂直書寫模式下的中文,日文和韓文字符)提供了全面的支持。 您可能會發現它在其他工具無法提取的情況下正確提取了變音符。

在某些情況下,當字符被提取到文本中時,看起來與Acrobat之類的PDF閱讀器所顯示的字符不同-在大多數情況下,使用基於圖像的圖像渲染所涉及的文本時,情況最常見字體(顯然不會直接轉換為文本,並且需要進行OCR處理才能得出正確的帶重音符號)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM