- 浏览: 720377 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
cuqing:
laogao598599 写道匿名内部类不一定是局部内部类,还 ...
匿名内部类访问外部类中的局部变量必须是final属性 -
laogao598599:
匿名内部类不一定是局部内部类,还可以作为成员变量
匿名内部类访问外部类中的局部变量必须是final属性 -
stand_star:
非常给力!
struts2验证规则配置文件命名方式 -
wenlongsust:
嗯, 将返回值修改为html的确就可以了
EasyUI form ajax submit后,在IE下提示下载内容的解决办法 -
勇往直前wwt:
这样是自动增长,但每次id还得插入,如何只插入其他字段而让id ...
把主键定义为自动增长标识符类型
由于项目在做网站内容搜索的时候,信息存储给是有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. 可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出;
很多人问到如何抽取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.lang.ClassCircularityError
2015-07-27 00:39 1360类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出 ... -
随记内容
2015-06-09 00:10 0public static CloseableHttpClie ... -
httpclient3.1使用小结
2017-08-18 00:08 691Jakarta的httpclient3.1是 ... -
POI
2014-05-21 16:08 576Apache POI是一个开源的Java读写Excel、WOR ... -
servlet与js 跳转
2014-05-15 17:19 851servlet跳转 1.request.getRequestD ... -
jdk各个版本下载地址
2014-05-12 17:40 988http://www.oracle.com/technetwo ... -
Jackson库
2014-04-20 13:17 980概述 Jackson库(http://jac ... -
生成Webservice客户端的4种方法
2014-04-09 15:39 11071.使用Axis生产客户端代码(另存为bat文件) 之前很多次 ... -
map遍历
2013-12-14 23:41 521Map<String, String> map = ... -
POI处理Excel
2013-12-14 22:44 8981.读取2003 InputStream stream ... -
常用数据库 JDBC URL 格式
2013-12-04 18:35 1139Microsoft SQL Server Microsoft ... -
公共查询接口
2013-12-04 15:19 1220http://www.webmasterhome.cn/ ht ... -
天气预报接口
2013-12-04 11:18 1405天气预报接口(中国天气网) 中国天气weather.com ... -
Java 判断文件夹、文件是否存在
2013-12-04 10:00 51361、判断文件是否存在,不存在创建文件 File file=ne ... -
Jakarta Commons Pool
2013-12-03 14:55 881使用Jakarta Commons Pool可以根据需要快速的 ... -
多线程读写资料利器-ReentrantReadWriteLock
2013-12-03 14:49 1314多线程读写文件利器-ReentrantReadWriteLoc ... -
保持顺序的 Java Properties 类
2013-12-02 16:21 907public class OrderedProperties ... -
java中用poi处理Excel表格之读取
2013-11-18 16:24 2032http://tool.oschina.net/apidocs ... -
科大讯飞语音识别服务
2013-09-03 17:06 14241.官方地址:http://open.voicecloud.c ... -
ibatis数据库字段带下划线(_)映射与java类不一致
2013-08-24 17:00 5349ibatis数据库字段带下划线(_)与java pojo对象映 ...
相关推荐
除了上述方法,还有许多第三方库如Apache POI、iText等,它们直接在Java中处理doc和pdf格式,无需依赖外部软件。此外,还可以考虑云服务API,如Google Docs或Microsoft Azure的转换服务。 通过以上知识点,开发者...
17. **hutool-poi**:对Apache POI的封装,用于处理Excel和Word文档。 18. **hutool-socket**:基于NIO和AIO的Socket通信封装。 Hutool的模块化设计允许开发者根据实际需求选择引入特定的模块,也可以通过引入`...
电子图章加盖在PDF文件中,需要使用PDF文档操作相关的技术,如Adobe PDF Library、PDFBox等。 5. ActiveX:ActiveX是微软公司推出的一组使用COM(组件对象模型)技术实现的可复用软件组件。它在Windows平台上有广泛...
为了有效地从Class文件中提取信息,文章提出了基于ASM(Java bytecode engineering library)框架解析字节码文件的算法。ASM是一个开源的Java字节码操作和分析框架,它能够动态生成类或者增强既有类的功能。基于这一...
DocletAPI包括一系列的对象和方法属性,如RootDoc、PackageDoc、ClassDoc、MethodDoc、FieldDoc、Tag等,这些对象分别代表了整个Java文档、Java的包、Java的类等。 5. 自动化模板技术FreeMarker: FreeMarker是一个...
综上所述,“pdf_reader”这个项目涉及了PDF文件的解析与呈现、阅读器的实现技术、用户体验设计等多个方面,是信息技术领域一个涵盖广泛的知识点集合。通过深入理解和开发这样的应用,我们可以更深入地了解PDF生态...
总的来说,这个服务利用了Java等编程语言提供的库,实现了对各种文件格式的在线预览和转换功能,涵盖了文档、图像、音频、视频以及压缩文件。这种技术的广泛应用简化了文件处理流程,提升了用户体验,同时也对安全性...
以下内容基于作者的实际经验和个人总结,着重介绍了几种主流的Word处理库(如Apache POI、JXL、iText、JACOB等)的功能特性,并提出了一种无需依赖特定库的自定义解决方案。 ### Java文件操作开源项目简介 #### 1....
5. `.project`:这是Eclipse项目的配置文件,包含项目的基本信息和构建设置。 6. `.settings`:这是Eclipse工作空间的配置文件夹,包含项目的特定于用户的设置,如代码格式化规则、编译器设置等。 7. `src`:源...
### 知识点一:JavaWeb开发...但是从提供的信息来看,该实验报告为学习JavaWeb开发的同学们提供了一个全面的实践案例,并对实验过程中可能遇到的问题提出了应对策略,这对于学习者理解和掌握JavaWeb开发是大有裨益的。
- 新建、编辑、浏览知识:用户可以创建、修改和查看各类知识文档,系统支持多种格式,如PDF、Word、PPT等。 - 知识分类浏览:通过建立知识分类体系,方便用户按类别查找所需知识。 - 全文检索:通过关键词搜索,...
对于PDF文件,系统利用PDFBox或Xpdf这类开源的Java库来抽取文本信息。针对Word文档和Excel表格,系统采用Microsoft Office提供的自动化COM组件或PHP的相关类库来读取内容。对于HTML文档,系统则负责去除HTML标签,以...
在探讨如何将doc或pdf文件转换为SWF格式时,我们首先需要理解几个核心概念和技术背景。SWF(Shockwave Flash)是一种由Adobe Systems开发的矢量图形和动画文件格式,主要用于网络上发布动画、视频、游戏以及交互式...
这一转换过程通常需要借助SwfTools工具,通过命令行将PDF文件转换为SWF文件。在Java代码中,可以通过调用`Runtime.getRuntime().exec(cmd)`的方法实现文件格式的转换。 ##### 2.2 SSH框架 SSH框架是Java Web开发中...
- **jodconverter**:这是一个Java库,用于将Microsoft Office文档(如Word、Excel和PowerPoint)转换为OpenDocument格式,进而可以转换为其他格式,例如PDF。jodconverter通过与OpenOffice或LibreOffice交互来完成...
此外,提供多种格式的简历(如PDF和Word)以适应不同的接收者需求。 **面试准备** 面试是评估求职者综合素质的重要环节,包括仪表、性格、知识、能力和经验等。面试前要对公司有深入的了解,包括行业地位、业务范围...
1. **编程语言**:题目指出大多数软件开发人员使用高级语言设计程序,这表明在软件开发中,高级语言如Java、Python、C++等因其易读性、抽象性和跨平台特性被广泛应用。 2. **操作系统**:Windows帮助窗口的功能介绍...