由于项目在做网站内容搜索的时候,信息存储给是有office中的word,和pdf文件。还好基于lucence的处理,预留了良好的扩展接口。加入如下的工具支持,可以实现无逢的多信息格式的搜索引擎了。下面介绍主要的处理工具:

很多人问到如何抽取word、excel、pdf等文件,在这里我总结一下抽取word、pdf的几种方法。

  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+"\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.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操作execel文件可以使用jxl处理,jxl是一个开放源码项目,与apache的poi相比是各有千秋

JAVA EXCEL API简介

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。

现在发布的稳定版本是V2.0,提供以下功能:

* 从Excel 95、97、2000等格式的文件中读取数据;
* 读取Excel公式(可以读取Excel 97以后的公式);
* 生成Excel数据表(格式为Excel 97);
* 支持字体、数字、日期的格式化;
* 支持单元格的阴影操作,以及颜色操作;
* 修改已经存在的数据表;

现在还不支持以下功能,但不久就会提供了:

1. 不能够读取图表信息;
2. 可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;

java提出word和pdf等文件的信息相关推荐

  1. [JAVA使用技巧]Java抽取Word和PDF格式文件_网络大本营

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

  2. java操作word/excel/pdf等文件技术方案

    最近项目中遇到很多对word/excel/pdf等文件的操作,解决方案有好多,开源免费有:利用openoffice组件(需要安装openoffice软件),poi,itext等.也有收费的服务:asp ...

  3. txt doc rtf html,JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例.docx

    JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例 JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例??2012-06-2 ...

  4. java全文检索word中的内容_搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结...

    搜索引擎时对WORD,EXCEL,PDF,POWERPOINT文件全文检索的总结 (2012-02-12 16:31:59) 标签: pdf文档 幻灯片 pdf文件 全文检索 控件 it JAVA读取 ...

  5. Aspose.Java实现word转pdf,添加水印等操作

    Aspose.Java实现word转pdf,添加水印等操作 一. word转pdf 二. 文档插入水印 Aspose是一款商用版控件,支持各类文档操作,这里主要介绍如何在Springboot项目中使用 ...

  6. java 模板 word转pdf 可分页 带图片

    java 模板 word转pdf 可分页 带图片 之前写过一个简单的案例,但是在项目中完全不能满足客户的需求,所以重新用啦一种方式来写,采用了word转换pdf的方式,这种经过不断研究,满足了可分页, ...

  7. Java实现Word转PDF方案选择

    Java实现Word转PDF方案选择 很多应用场景中都会涉及到Word转PDF,但Word转PDF的方案在网上一搜一大把,让人眼花缭乱,笔者踩过无数的坑后,最终总结出以下三种方案 OpenOffice ...

  8. java实现word转pdf在线预览格式

    java实现word转pdf在线预览格式 前段时间的项目里涉及了此功能,调研过一些方案,踩过一些坑,一一总结在此. java转pdf的方案很多,但是很多都要收费,转pdf也有一些格式方面的问题. 方案 ...

  9. 后台实现word转pdf输出文件流

    首先需要安装好LibreOffice,支持免费使用,安装包太大没法上传,可以去官网下载:https://zh-cn.libreoffice.org/download/download/ 根据系统选择需 ...

最新文章

  1. 人工智能带来的事业浪潮或将提前到来
  2. 常用的上网 发帖技巧
  3. Matlab提取矩阵数据
  4. JS应用之禁止抓屏、复制、打印
  5. 计算机路表配置命令,计算机、华为交换机、路由器配置命令表
  6. linux下用grep命令根据文件内容进行关键字搜索[linux ubuntu grep] -转
  7. MySQL源码—线程篇
  8. xml中特殊含义的字符_mybatis中的作用
  9. DATAGEAR统计报表简单教学
  10. 【linux】X Server / X Client / Window manager 的关系
  11. 微信公众号测试号申请
  12. java面试换背景颜色_开源)嗨,Java,你可以生成金山词霸的二维码分享海报吗?...
  13. scratch成绩查询 电子学会图形化编程scratch等级考试四级真题和答案解析2022年6月
  14. 从行业到技术,一位嵌入式er带你清晰总览嵌入式行业职业规划
  15. a boo peek_|音译|171120*歌词ΓRed Velvet - Peek-A-Boo
  16. 鸿蒙 OS 2.0 公测!已适配多款机型
  17. win8修改炉石服务器,炉石传说如何去其他服务器玩炉石
  18. 英文网站更新自动采集工具
  19. 电脑中毒后常见的问题以及防毒的总结
  20. linux查看block大小命令,Linux/Centos下多种方法查看系统block size大小

热门文章

  1. ffmpeg 命令 监控屏幕,摄像头 udp推流 收流 。 包括低延迟处理
  2. css实现盾牌的动画效果
  3. java des解密乱码_des解密不完整,前面几位是乱码的解决办法
  4. 前端汉字encode_前端常用的几种加密与解密
  5. C语言经典例题及答案3
  6. myeclipes10.7+maven+myBatis+spring+springMvc
  7. java学习第12天
  8. oracle安装遇到 [INS-20802] Oracle Net Configuration Assistant 失败。
  9. 世界各国英文简写代码
  10. Android 之 向模拟器的sdcard中添加文件