`
ldzyz007
  • 浏览: 715254 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java提出word和pdf等文件的信息

    博客分类:
  • java
阅读更多
由于项目在做网站内容搜索的时候,信息存储给是有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调用WPS或pdfcreator的com接口实现doc转pdf

    除了上述方法,还有许多第三方库如Apache POI、iText等,它们直接在Java中处理doc和pdf格式,无需依赖外部软件。此外,还可以考虑云服务API,如Google Docs或Microsoft Azure的转换服务。 通过以上知识点,开发者...

    hutool文档pdf

    17. **hutool-poi**:对Apache POI的封装,用于处理Excel和Word文档。 18. **hutool-socket**:基于NIO和AIO的Socket通信封装。 Hutool的模块化设计允许开发者根据实际需求选择引入特定的模块,也可以通过引入`...

    java电子图章.pdf

    电子图章加盖在PDF文件中,需要使用PDF文档操作相关的技术,如Adobe PDF Library、PDFBox等。 5. ActiveX:ActiveX是微软公司推出的一组使用COM(组件对象模型)技术实现的可复用软件组件。它在Windows平台上有广泛...

    一种基于Java字节码的软件设计信息提取方法.pdf

    为了有效地从Class文件中提取信息,文章提出了基于ASM(Java bytecode engineering library)框架解析字节码文件的算法。ASM是一个开源的Java字节码操作和分析框架,它能够动态生成类或者增强既有类的功能。基于这一...

    基于Java的测试文档自动生成方案.pdf

    DocletAPI包括一系列的对象和方法属性,如RootDoc、PackageDoc、ClassDoc、MethodDoc、FieldDoc、Tag等,这些对象分别代表了整个Java文档、Java的包、Java的类等。 5. 自动化模板技术FreeMarker: FreeMarker是一个...

    pdf_reader

    综上所述,“pdf_reader”这个项目涉及了PDF文件的解析与呈现、阅读器的实现技术、用户体验设计等多个方面,是信息技术领域一个涵盖广泛的知识点集合。通过深入理解和开发这样的应用,我们可以更深入地了解PDF生态...

    在线预览,文件转换,能预览word各种格式、rar、zip、视频、音频文件及各种格式图片

    总的来说,这个服务利用了Java等编程语言提供的库,实现了对各种文件格式的在线预览和转换功能,涵盖了文档、图像、音频、视频以及压缩文件。这种技术的广泛应用简化了文件处理流程,提升了用户体验,同时也对安全性...

    html/word/doc导出windows/linux

    以下内容基于作者的实际经验和个人总结,着重介绍了几种主流的Word处理库(如Apache POI、JXL、iText、JACOB等)的功能特性,并提出了一种无需依赖特定库的自定义解决方案。 ### Java文件操作开源项目简介 #### 1....

    基于Java实现的明日知道系统.zip

    5. `.project`:这是Eclipse项目的配置文件,包含项目的基本信息和构建设置。 6. `.settings`:这是Eclipse工作空间的配置文件夹,包含项目的特定于用户的设置,如代码格式化规则、编译器设置等。 7. `src`:源...

    JavaWeb实验报告.pdf

    ### 知识点一:JavaWeb开发...但是从提供的信息来看,该实验报告为学习JavaWeb开发的同学们提供了一个全面的实践案例,并对实验过程中可能遇到的问题提出了应对策略,这对于学习者理解和掌握JavaWeb开发是大有裨益的。

    KM知识管理 知识管理系统解决方案.pdf

    - 新建、编辑、浏览知识:用户可以创建、修改和查看各类知识文档,系统支持多种格式,如PDF、Word、PPT等。 - 知识分类浏览:通过建立知识分类体系,方便用户按类别查找所需知识。 - 全文检索:通过关键词搜索,...

    doc pdf转换成swf

    在探讨如何将doc或pdf文件转换为SWF格式时,我们首先需要理解几个核心概念和技术背景。SWF(Shockwave Flash)是一种由Adobe Systems开发的矢量图形和动画文件格式,主要用于网络上发布动画、视频、游戏以及交互式...

    基于Java的在线阅览系统设计.docx

    这一转换过程通常需要借助SwfTools工具,通过命令行将PDF文件转换为SWF文件。在Java代码中,可以通过调用`Runtime.getRuntime().exec(cmd)`的方法实现文件格式的转换。 ##### 2.2 SSH框架 SSH框架是Java Web开发中...

    知识库中文档在线预览功能实现.pdf

    - **jodconverter**:这是一个Java库,用于将Microsoft Office文档(如Word、Excel和PowerPoint)转换为OpenDocument格式,进而可以转换为其他格式,例如PDF。jodconverter通过与OpenOffice或LibreOffice交互来完成...

    程序员的面试技巧.pdf,这是一份不错的文件

    此外,提供多种格式的简历(如PDF和Word)以适应不同的接收者需求。 **面试准备** 面试是评估求职者综合素质的重要环节,包括仪表、性格、知识、能力和经验等。面试前要对公司有深入的了解,包括行业地位、业务范围...

    2020年乐东黎族自治县住房城乡建设部信息中心招聘《计算机专业知识》试题汇编.pdf

    1. **编程语言**:题目指出大多数软件开发人员使用高级语言设计程序,这表明在软件开发中,高级语言如Java、Python、C++等因其易读性、抽象性和跨平台特性被广泛应用。 2. **操作系统**:Windows帮助窗口的功能介绍...

Global site tag (gtag.js) - Google Analytics