<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編程經驗談
    主站蜘蛛池模板: 国产一区二区三区免费观看在线| 91亚洲自偷在线观看国产馆| 男人的天堂亚洲一区二区三区 | 69精品免费视频| 青青青免费国产在线视频小草| 国产在线观看片a免费观看| 成人无遮挡裸免费视频在线观看| 成人免费视频一区| 免费人成视频x8x8入口| 中文字幕亚洲乱码熟女一区二区 | 91麻豆精品国产自产在线观看亚洲 | 每天更新的免费av片在线观看| 国产精品免费看久久久| 亚洲w码欧洲s码免费| 成年人在线免费观看| 亚洲成A人片77777国产| 亚洲欧洲日产国码av系列天堂 | 亚洲av中文无码乱人伦在线r▽ | 亚洲黄色免费电影| 色欲aⅴ亚洲情无码AV| 中文字幕a∨在线乱码免费看 | 亚洲电影日韩精品 | 亚洲国产综合专区电影在线| 亚洲成在人天堂在线| 亚洲av乱码一区二区三区香蕉 | 精品久久久久久亚洲中文字幕| 国产精品黄页免费高清在线观看| 亚洲精品免费在线观看| 四虎影院免费在线播放| 国产亚洲精品a在线观看| 亚洲最新中文字幕| 一二三四在线观看免费中文在线观看| 99在线观看视频免费| 日韩中文字幕在线免费观看| 亚洲精品国产电影| 亚洲天堂2016| 91视频免费观看高清观看完整| 国产一卡二卡四卡免费| 亚洲性日韩精品一区二区三区 | 亚洲日韩精品A∨片无码加勒比| 国产99久久久久久免费看|