<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無為

    無為則可為,無為則至深!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      190 Posts :: 291 Stories :: 258 Comments :: 0 Trackbacks
    很多人用java進行文檔操作時經常會遇到一個問題,就是如何獲得word,excel,pdf等文檔的內容?我研究了一下,在這里總結一下抽取word,pdf的幾種方法。?

    ???1.?用jacob

    ??其實jacob是一個bridage,連接java和com或者win32函數的一個中間件,jacob并不能直接抽取word,excel等文件,需要自己寫dll哦,不過已經有為你寫好的了,就是jacob的作者一并提供了。?

    ??jacob?jar與dll文件下載:?http://danadler.com/jacob/?;

    ??下載了jacob并放到指定的路徑之后(dll放到path,jar文件放到classpath),就可以寫你自己的抽取程序了,下面是一個簡單的例子:?

    import?java.io.File;
    import?com.jacob.com.*;
    import?com.jacob.activeX.*;
    /**
    ?*?Title:?pdf?extraction
    ?*?Description:?email:chris@matrix.org.cn
    ?*?Copyright:?Matrix?Copyright?(c)?2003
    ?*?Company:?Matrix.org.cn
    ?*?@author?chris
    ?*?@version?1.0,who?use?this?example?pls?remain?the?declare
    ?*/
    public?class?FileExtracter{
    ?public?static?void?main(String[]?args)?{
    ??ActiveXComponent?component?=?new?ActiveXComponent("Word.Application");
    ??String?inFile?=?"c:\\test.doc";
    ??String?tpFile?=?"c:\\temp.htm";
    ??String?otFile?=?"c:\\temp.xml";
    ??boolean?flag?=?false;
    ??try?{
    ???component.setProperty("Visible",?new?Variant(false));
    ???Object?wordacc?=?component.getProperty("document.").toDispatch();
    ???Object?wordfile?=?Dispatch.invoke(wordacc,"Open",?Dispatch.Method,?
    ?????????????????????????????????????new?Object[]{inFile,new?Variant(false),?new?Variant(true)},
    ?????????????????????????????????????new?int[1]?).toDispatch();
    ???Dispatch.invoke(wordfile,"SaveAs",?Dispatch.Method,?new?Object[]{tpFile,new?Variant(8)},?new?int[1]);
    ???Variant?f?=?new?Variant(false);
    ???Dispatch.call(wordfile,?"Close",?f);
    ???flag?=?true;
    ??}?catch?(Exception?e)?{
    ???e.printStackTrace();
    ??}?finally?{
    ???component.invoke("Quit",?new?Variant[]?{});
    ??}
    ?}
    }

    2.?用apache的poi來抽取word,excel。

    poi是apache的一個項目,不過就算用poi你可能都覺得很煩,不過不要緊,這里提供了更加簡單的一個接口給你:?

    下載經過封裝后的poi包:?http://jakarta.apache.org/poi/?;

    下載之后,放到你的classpath就可以了,下面是如何使用它的一個例子:?

    import?java.io.*;
    import??org.textmining.text.extraction.WordExtractor;
    /**
    ?*?<p>Title:?word?extraction</p>
    ?*?<p>Description:?email:chris@matrix.org.cn</p>
    ?*?<p>Copyright:?Matrix?Copyright?(c)?2003</p>
    ?*?<p>Company:?Matrix.org.cn</p>
    ?*?@author?chris
    ?*?@version?1.0,who?use?this?example?pls?remain?the?declare
    ?*/

    public?class?PdfExtractor?{
    ??public?PdfExtractor()?{
    ??}
    ??public?static?void?main(String?args[])?throws?Exception
    ??{
    ??FileInputStream?in?=?new?FileInputStream?("c:\\a.doc");
    ??WordExtractor?extractor?=?new?WordExtractor();
    ??String?str?=?extractor.extractText(in);
    ??System.out.println("the?result?length?is"+str.length());
    ???System.out.println("the?result?is"+str);
    }
    }

    3.?pdfbox-用來抽取pdf文件

    但是pdfbox對中文支持還不好,先下載pdfbox:?http://www.pdfbox.org/?;

    下面是一個如何使用pdfbox抽取pdf文件的例子:?

    import?org.pdfbox.pdmodel.PDdocument.
    import?org.pdfbox.pdfparser.PDFParser;
    import?java.io.*;
    import?org.pdfbox.util.PDFTextStripper;
    import?java.util.Date;
    /**
    ?*?<p>Title:?pdf?extraction</p>
    ?*?<p>Description:?email:chris@matrix.org.cn</p>
    ?*?<p>Copyright:?Matrix?Copyright?(c)?2003</p>
    ?*?<p>Company:?Matrix.org.cn</p>
    ?*?@author?chris
    ?*?@version?1.0,who?use?this?example?pls?remain?the?declare
    ?*/

    public?class?PdfExtracter{

    public?PdfExtracter(){
    ??}
    public?String?GetTextFromPdf(String?filename)?throws?Exception
    ??{
    ??String?temp=null;
    ??PDdocument.nbsppdfdocument.null;
    ??FileInputStream?is=new?FileInputStream(filename);
    ??PDFParser?parser?=?new?PDFParser(?is?);
    ??parser.parse();
    ??pdfdocument.nbsp=?parser.getPDdocument.);
    ??ByteArrayOutputStream?out?=?new?ByteArrayOutputStream();
    ??OutputStreamWriter?writer?=?new?OutputStreamWriter(?out?);
    ??PDFTextStripper?stripper?=?new?PDFTextStripper();
    ??stripper.writeText(pdfdocument.getdocument.),?writer?);
    ??writer.close();
    ??byte[]?contents?=?out.toByteArray();

    ??String?ts=new?String(contents);
    ??System.out.println("the?string?length?is"+contents.length+"\n");
    ??return?ts;
    }
    public?static?void?main(String?args[])
    {
    PdfExtracter?pf=new?PdfExtracter();
    PDdocument.nbsppdfdocument.nbsp=?null;

    try{
    String?ts=pf.GetTextFromPdf("c:\\a.pdf");
    System.out.println(ts);
    }
    catch(Exception?e)
    ??{
    ??e.printStackTrace();
    ??}
    }

    }

    4.?抽取支持中文的pdf文件-xpdf

    xpdf是一個開源項目,我們可以調用他的本地方法來實現抽取中文pdf文件。?

    下載xpdf函數包:?http://www.foolabs.com/xpdf/?;

    同時需要下載支持中文的補丁包,按照readme放好中文的patch,就可以開始寫調用本地方法的java程序了。

    下面是一個如何調用的例子:?

    import?java.io.*;
    /**
    ?*?<p>Title:?pdf?extraction</p>
    ?*?<p>Description:?email:chris@matrix.org.cn</p>
    ?*?<p>Copyright:?Matrix?Copyright?(c)?2003</p>
    ?*?<p>Company:?Matrix.org.cn</p>
    ?*?@author?chris
    ?*?@version?1.0,who?use?this?example?pls?remain?the?declare
    ?*/


    public?class?PdfWin?{
    ??public?PdfWin()?{
    ??}
    ??public?static?void?main(String?args[])?throws?Exception
    ??{
    ????String?PATH_TO_XPDF="C:\\Program?Files\\xpdf\\pdftotext.exe";
    ????String?filename="c:\\a.pdf";
    ????String[]?cmd?=?new?String[]?{?PATH_TO_XPDF,?"-enc",?"UTF-8",?"-q",?filename,?"-"};
    ????Process?p?=?Runtime.getRuntime().exec(cmd);
    ????BufferedInputStream?bis?=?new?BufferedInputStream(p.getInputStream());
    ????InputStreamReader?reader?=?new?InputStreamReader(bis,?"UTF-8");
    ????StringWriter?out?=?new?StringWriter();
    ????char?[]?buf?=?new?char[10000];
    ????int?len;
    ????while((len?=?reader.read(buf))>=?0)?{
    ????//out.write(buf,?0,?len);
    ????System.out.println("the?length?is"+len);
    ????}
    ????reader.close();
    ????String?ts=new?String(buf);
    ????System.out.println("the?str?is"+ts);
    ??}
    }


    凡是有該標志的文章,都是該blog博主Caoer(草兒)原創,凡是索引、收藏
    、轉載請注明來處和原文作者。非常感謝。

    posted on 2006-06-11 12:58 草兒 閱讀(163) 評論(0)  編輯  收藏 所屬分類: Java編程經驗談
    主站蜘蛛池模板: 人妻在线日韩免费视频| 一级特黄a免费大片| 伊人久久免费视频| 国产V亚洲V天堂无码| 99re6在线精品免费观看| 国产亚洲成人在线播放va| 亚洲黄片手机免费观看| 亚洲精品你懂的在线观看| 国产午夜无码精品免费看| 国产AV无码专区亚洲AV男同| 免费观看男人吊女人视频| 久久亚洲精品国产精品| 久草视频免费在线| 亚洲精品成a人在线观看夫| 日本不卡视频免费| 一个人看的hd免费视频| 欧洲亚洲国产清在高| 久久国产色AV免费观看| 2020久久精品亚洲热综合一本| 国内自产少妇自拍区免费| 污污视频网站免费观看| 亚洲情综合五月天| 亚洲一区二区三区免费在线观看| 亚洲欧洲另类春色校园网站| 成年女人视频网站免费m| 免费国产污网站在线观看不要卡 | aa级毛片毛片免费观看久| 国产亚洲美女精品久久久久狼 | 一个人看www在线高清免费看| 亚洲av无码专区在线电影 | 伊人久久亚洲综合影院| 最好免费观看高清在线| 亚洲精品第一国产综合野| 亚洲成av人片一区二区三区 | 亚洲avav天堂av在线网毛片| 亚洲乱码日产精品a级毛片久久| 日本高清高色视频免费| 亚洲愉拍一区二区三区| 国产亚洲精品成人AA片新蒲金| 2019中文字幕在线电影免费| 亚洲AⅤ男人的天堂在线观看|