1. 程式人生 > >好記性不如爛部落格--使用xpdf操作pdf檔案

好記性不如爛部落格--使用xpdf操作pdf檔案

上次寫了使用pdfbox解析pdf的時候遇到一些無法解決的問題,於是改用xpdf。使用xpdf之後腰不酸了,背不痛了,走路有勁兒了。。。
但是!!!當我把程式碼放到伺服器上時,解析後,控制檯出現一堆亂碼啊亂碼。然後我各種查資料,設定程式碼的properties啊,設定run configuration啊,焦頭爛額忙了好幾天完全沒結果,亂碼還是亂碼,只是一會兒是“***@@@@”這樣的,一會兒是“鈮吥嬞硪の懮搡”這樣的。
然後,在翻看別人的部落格的時候,突然想起來,我根本木有修改配置檔案!!!我不是腦殘,我是木有記性。。。
所以,決定還是乖乖地複習、記錄一下xpdf的使用。


****************************************************以下才是正文****************************************************
1.下載
需要下載xpdf 工具包,還需要一個xpdf-chinese-simplified.tar.gz來支援中文。

2.解壓
解壓xpdf工具包,然後將xpdf-chinese-simplified.tar.gz解壓到xpdf資料夾內。這裡我直接將xpdf解壓到e盤。

3.配置
找到xpdf資料夾內的“sample-xpdfrc ”檔案,開啟,在其最後加入如下內容:
#----- begin Chinese Simplified support package (2004-jul-27)

cidToUnicode Adobe-GB1 e:/xpdf/xpdf-chinese-simplified/Adobe-GB1.cidToUnicode

unicodeMap ISO-2022-CN e:/xpdf/xpdf-chinese-simplified/ISO-2022-CN.unicodeMap

unicodeMap EUC-CN e:/xpdf/xpdf-chinese-simplified/EUC-CN.unicodeMap

unicodeMap GBK e:/xpdf/xpdf-chinese-simplified/GBK.unicodeMap

cMapDir Adobe-GB1 e:/xpdf/xpdf-chinese-simplified/CMap

toUnicodeDir e:/xpdf/chinese-simplified/CMap

#displayCIDFontTT Adobe-GB1 /usr/..../gkai00mp.ttf

#----- end Chinese Simplified support package

其中路徑部分根據具體情況修改。
修改好之後將檔案重新命名為xpdfrc。

4.在程式碼中使用:

執行pdftotext:
//使用的轉換器的位置、名稱
String PATH_TO_XPDF="e:\\search\\xpdf\\pdftotext.exe";
//使用原有的layout,設定編碼格式encoding為UTF-8,-q不列印錯誤和訊息,file為檔名稱,最後的引數
//是輸出到txt檔案的名稱,此處沒有
String[] cmd = new String[] { PATH_TO_XPDF,"-layout", "-enc", "UTF-8", "-q",
file, "-"};
Process p = Runtime.getRuntime().exec(cmd);
獲取內容,可以使用:
BufferedInputStream bis = new BufferedInputStream(p.getInputStream());