1、用jacob.

其实jacob是一个bridage,连接java和com或者win32函数的一个中间件,jacob并不能直接抽取word,excel等文件,需要自己写dll哦,不过已经有为你写好的了,就是jacob的作者一并提供了。

jacob下载:http://www.matrix.org.cn/down_view.asp?id=13

下载了jacob并放到指定的路径之后(dll放到path,jar文件放到classpath),就可以写你自己的抽取程序了,下面是一个例子:

import java.io.File;
import com.jacob.com.*;
import com.jacob.activeX.*;
public class FileExtracter{public static void main(String[] args) {ActiveXComponent app = new ActiveXComponent("Word.Application");
String inFile = "c:\test.doc";
String tpFile = "c:\temp.htm";
String otFile = "c:\temp.xml";
boolean flag = false;
try {
app.setProperty("Visible", new Variant(false));
Object docs = app.getProperty("document.").toDispatch();
Object doc = Dispatch.invoke(docs,"Open", Dispatch.Method, new Object[]{
inFile,new Variant(false), new Variant(true)}, new int[1]).toDispatch();
Dispatch.invoke(doc,"SaveAs", Dispatch.Method, new Object[]{
tpFile,new Variant(8)}, new int[1]);
Variant f = new Variant(false);
Dispatch.call(doc, "Close", f);
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
app.invoke("Quit", new Variant[] {});
}}
}

2、用apache的poi来抽取word,excel

poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这里提供了更加简单的一个接口给你:

下载经过封装后的poi包:http://www.matrix.org.cn/down_view.asp?id=14

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

import java.io.*;
import org.textmining.text.extraction.WordExtractor;
/**
* <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 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.matrix.org.cn/down_view.asp?id=12

下面是一个如何使用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+"
");
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.matrix.org.cn/down_view.asp?id=15

同时需要下载支持中文的补丁包:http://www.matrix.org.cn/down_view.asp?id=16

按照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);
}
}

Java语言中抽取word、pdf的四种方法相关推荐

  1. [转载]java抽取word,pdf的四种武器

    java抽取word,pdf的四种武器 很多人用java进行文档操作时经常会遇到一个问题,就是如何获得word,excel,pdf等文档的内容? 我研究了一下,在这里总结一下抽取word,pdf的几种 ...

  2. java抽取word,pdf的四种武器

    java抽取word,pdf的四种武器 @ java抽取word,pdf的四种武器 chris 2003-07-01 19:04:00 542 次浏览 chris (chris@matrix.org. ...

  3. c语言中字符串去掉逗号,JS四种方法去除字符串最后的逗号

    window.οnlοad=function() { var obj = {name: "xxx", age: 30, sex: "female"};//定义一 ...

  4. c语言能返回字符串吗,C语言中函数返回字符串的四种方法

    在讨论着四种方法以前,首先要对函数有一个简单的认识,不管是在形实结合时,仍是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,天然函数在工做以前要把这个值拷贝一份供本身使用,你传进来 ...

  5. java抽取pdf_java 抽取 word,pdf 的四种武器

    转自:https://www.ibm.com/developerworks/cn/java/l-java-tips/     感谢作者发布的文章 用 jacob 其实 jacob 是一个 bridag ...

  6. java 抽取 word,pdf 的四种武器

    转自:https://www.ibm.com/developerworks/cn/java/l-java-tips/     感谢作者发布的文章 用 jacob 其实 jacob 是一个 bridag ...

  7. java 中lock,java中lock获取锁的四种方法

    在java接口中会存放着许多方法,方便线程使用时的直接调用.对于lock接口大家都不陌生,我们已经初步对概念进行了理解.那么在获取锁的方法上想必还不是很清楚.下面我们就lock获取锁的四种方法分别进行 ...

  8. 【转】Java中字符串中子串的查找共有四种方法(indexof())

    原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下: 1.int ...

  9. Java中字符串中子串的查找共有四种方法(indexof())

    2019独角兽企业重金招聘Python工程师标准>>> public class FirstDemo { /** *API中String的常用方法 */ // 查找指定字符串是否存在 ...

最新文章

  1. 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.8 创建数据库...
  2. fliqlo windows_Windows小众软件工具推荐
  3. hide handkerchief(hdu2104)
  4. django-ckeditor表情包修改
  5. 华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...
  6. Android 系统(181 )----Android中各类.mk文件的编写
  7. 在Ubuntu 14.04平台上利用Intel的GPU实现硬件加速--基于VAAPI
  8. Kubernetes 搭建 ES 集群(存储使用 cephfs)
  9. 无法打开预编译头文件的解决方法及预编译头原理[ZZ] 转
  10. Restful API 的设计规范
  11. html中怎么让照片变模糊,CSS改变图片由模糊到清晰
  12. 全国海选第四期:北京和海外赛区(视频)
  13. IN4007和IN4148的作用
  14. CUDA编程: GPU与CPU之间使用全局统一内存的完整代码及编译
  15. wcf,webservice,.nett Remoting
  16. 泛微OA 开发环境搭建 IDEA
  17. 全网心疼的鸿星尔克,距离安踏还差两个李宁
  18. 视频直播方案(播放器和SDK)
  19. 解决ubuntu打不开软件更新器和软件中心的问题
  20. .NETFramework

热门文章

  1. 使用计算机数据采集的优点,什么是数据采集器
  2. 基于SpringBoot开发的企业OA自动化办公系统
  3. JavaScript给网页添加水印
  4. JavaWeb完整笔记
  5. CSS入门系列(一)概述和html结合的方式
  6. debian 安装声卡驱动(Realtek alc887_vd)
  7. 我,程序员,马上35岁...
  8. 2019华为实习面经
  9. windows客户端开发--也许是一条不归路
  10. 【时间序列聚类】KMedoids聚类+DTW算法