JAVA讀取PDF文件

在java中要讀取pdf文件內容,我們可以藉助第三方軟件實現。常用的是xpdf,本文就簡單介紹在linux下如何安裝xpdf,及在java中如何利用xpdf讀取pdf文件內容。
一.安裝xpdf
       在fc系列下,不用安裝,可以直接yum,但是筆者建議還是下載安裝的好,因爲筆者曾經碰到過這樣的問題,客戶服務器上的xpdf是yum安裝的,有一些特殊的pdf文件就無法預覽,但是將yum安裝的xpdf卸載,然後下載xpdf安裝程序,再重新安裝後,就可以了。
1.下載
ok,我們需要下載的xpdf安裝包主要有三個:
2.安裝部署
(1)進入下載目錄,將主程序解壓至/usr,也可以是其他地方,根據個人情況而定。
#tar zvfx xpdf-3.01pl2-linux.tar.gz -C /usr
#cd usr
然後將其重命名,這樣看起來簡單點
mv xpdf-3.01pl2-linux/ xpdf
(2)建立中文支持。回到下載目錄,依次執行:
#tar zvfx xpdf-chinese-simplified.tar.gz -C /usr/xpdf
#mv  /usr/xpdf/xpdf-chinese-simplified /usr/xpdf/chinese-simplified
#tar zvfx xpdf-chinese-traditional.tar.gz -C /usr/xpdf
#mv  /usr/xpdf/xpdf-chinese-traditional /usr/xpdf/chinese-traditional
(3)配置環境
#vi /etc/bashrc
增加如下內容
export PATH=/usr/xpdf/:$PATH
確保重啓機器後,在控制檯輸入xpdf不會提示找不到命令或文件即可。
(4)資源配置
#cd /usr/xpdf
#cp sample-xpdfrc xpdfrc
#vi xpdfrc
*在文件開始處增加如下內容(將/usr/xpdf替換爲xpdf的實際路徑)*
#----- begin Chinese Simplified support package (2004-jul-27)
cidToUnicode Adobe-GB1 
"/usr/xpdf/chinese-simplified/Adobe-GB1.cidToUnicode"
unicodeMap         ISO-
2022-CN "/usr/xpdf/chinese-simplified/ISO-2022-CN.unicodeMap"
unicodeMap         EUC-CN 
"/usr/xpdf/chinese-simplified/EUC-CN.unicodeMap"
unicodeMap         GBK 
"/usr/xpdf/chinese-simplified/GBK.unicodeMap"
cMapDir Adobe-GB1 
"/usr/xpdf/chinese-simplified/CMap"
toUnicodeDir 
"/usr/xpdf/chinese-simplified/CMap"
#displayCIDFontTT Adobe-GB1 /usr/..../gkai00mp.ttf
#----- end Chinese Simplified support package
#----- begin Chinese Traditional support package (2004-jul-27)
cidToUnicode Adobe-CNS1 
"/usr/xpdf/chinese-traditional/Adobe-CNS1.cidToUnicode"
unicodeMap Big5 
"/usr/xpdf/chinese-traditional/Big5.unicodeMap"
unicodeMap Big5ascii 
"/usr/xpdf/chinese-traditional/Big5ascii.unicodeMap"
cMapDir Adobe-CNS1 
"/usr/xpdf/chinese-traditional/CMap"
toUnicodeDir 
"/usr/xpdf/chinese-traditional/CMap"
#displayCIDFontTT Adobe-CNS1 /usr/..../bkai00mp.ttf
#----- end Chinese Traditional support package
然後再執行:
#cp xpdfrc /usr/local/etc/
好了,到這裏我們也就安裝完成了。下面介紹如何利用xpdf讀取pdf文件的內容
二.利用xpdf讀取pdf文件的內容
方法很簡單,利用著名的Runtime.getRuntime()即可,如下:
    /**
     * 
@param filePath  pdf文件路徑
     * 
@return
     
*/

    
public String getPdfContent(String filePath){
        String excute
="pdftotext";

        String[] cmd
=new String[]{excute, "-enc""UTF-8""-q", filePath,"-"};
        Process p
=null;
        
try {
            p
=Runtime.getRuntime().exec(cmd);
        }
 catch (IOException e) {
            e.printStackTrace();
        }


        BufferedInputStream bis
=new BufferedInputStream(p.getInputStream());

        InputStreamReader reader
=null;

        
try {
            reader
=new InputStreamReader(bis,"UTF-8");
        }
 catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }


        StringBuffer sb
=new StringBuffer();

        
try {
            BufferedReader br 
= new BufferedReader(reader);
            String line 
= br.readLine();            
            sb 
= new StringBuffer();
            
while (line != null{
                sb.append(line);
                sb.append(
" ");
                line 
= br.readLine();
            }

        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
        
return sb.toString();
    }
 
發佈了20 篇原創文章 · 獲贊 10 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章