基于tm-extractor的Word解析
1. 环境
2. 简介
3. Helloworld
难度:入门
作者:曹祺
Email:[email protected]
Blog:http://blogs.sun.com/greysh
源代码下载
http://developers.sun.com.cn/blog/functionalca/resource/Greysh/FCA_Greysh_Word.zip
开发环境
Netbeans6.5
tm-extractors0.4版本不需要apache的poi包,因为里面已经整合了
tm-extractors1.0版本需要poi-3.0.1-FINAL-20070705.jar,版本一定要正确
tm-extractors官方网站
http://www.textmining.org/
SVN源代码:http://code.google.com/p/text-mining/source/browse/
Apache POI工程
http://poi.apache.org
简介
对于Java的word解析,主流方法是用中间件去访问,但是需要用JNI
Apache和微软合作,开发的POI,但是POI虽然功能强大,但是用起来也很麻烦
3.5版本和以前的3.0版本修改了很多,而且还没稳定下来。
对于一班的应用,例如类似QQ手机邮箱那样,仅仅只需要读出文本内容的话,我们可以直接用tm-extractors,当然它底层也是调用的Apache POI
Helloworld
对于0.4版本代码如下
package com.greysh.word;
/**
* @author Genix.Cao
*/
import java.io.File;
import java.io.FileInputStream;
import org.textmining.text.extraction.WordExtractor;
public class WordUtils {
public static String readDoc(String doc) throws Exception {
FileInputStream in = new FileInputStream(new File(doc));
WordExtractor extractor = new WordExtractor();
String text = extractor.extractText(in);
return text;
}
public static void main(String[] args) throws Exception {
String text = WordUtils.readDoc("D:/1.doc");
System.out.println(text);
}
}
对于1.0版本
package com.greysh.word;
/**
* @author Genix.Cao
*/
import java.io.File;
import java.io.FileInputStream;
import org.textmining.extraction.word.WordTextExtractorFactory;
public class WordUtils {
public static String readDoc(String doc) throws Exception {
FileInputStream in = new FileInputStream(new File(doc));
WordTextExtractorFactory extractor = new WordTextExtractorFactory();
String text = extractor.textExtractor(in).getText();
return text;
}
public static void main(String[] args) {
try{
String text = WordUtils.readDoc("D:/1.doc");
System.out.println(text);
}catch(Exception ex){
ex.printStackTrace();
}
}
}
注意:使用此代码的时候,记得修改word文件的路径和POI的版本
POI 3.5有些函数改变了,直接用会保异常
org.apache.poi.poifs.filesystem.POIFSFileSystem.getRoot()Lorg/apache/poi/poifs/filesystem/DirectoryEntry;
详情可以查看邮件列表
http://markmail.org/message/fla67r6kisrukom2#query:+page:1+mid:fla67r6kisrukom2+state:results(网址如果变了,请用邮件列表的搜索功能)
另外1.0和0.4相比,对于不同的Word版本有不同的策略,目前很多项目还是使用的0.4的版本
1.0采用的是LPGL的发布协议
得到文件流后用WordTextExtractorFactory去进行解析