Tika解析word文件
Apache Tika是一个内容抽取的工具集合(a toolkit for text extracting)。它集成了POI, Pdfbox 并且为文本抽取工作提供了一个统一的界面。其次,Tika也提供了便利的扩展API,用来丰富其对第三方文件格式的支持。
Tika提供了对如下文件格式的支持:
PDF - 通过Pdfbox、MS-* - 通过POI、HTML - 使用nekohtml将不规范的html整理成为xhtml、OpenOffice 格式 - Tika提供、Archive - zip, tar, gzip, bzip等、RTF - Tika提供、Java class - Class解析由ASM完成、Image - 只支持图像的元数据抽取。
详细支持请登陆Apache Tika查询
碍于作者能力有限,本问仅介绍Tika如何解析word文件。
引入依赖
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.20</version>
</dependency>
解析doc和docx文件
public static String readWord(InputStream is ,boolean doc) {
String buffer = "";
try {
if (doc) {
//根据文件后缀进判断分支,.doc和.docx使用的方法不一样
BodyContentHandler handler = new BodyContentHandler(1024 * 1024 * 10);//设置文档大小,避免文件太大tika报错,默认大小就是1024*1024*10
Metadata metadata = new Metadata();
ParseContext pContext = new ParseContext();
Parser msOfficeParser = new OfficeParser();
msOfficeParser.parse(is , handler , metadata , pContext);
buffer = handler.toString();
is.close();
} else {
Tika tika = new Tika();
buffer = tika.parseToString(is);
is.close();
}
} catch (Exception e) {
throw new RRException("读取文件失败,请用Microsoft Word另存为之后再上传");
}
return buffer;
}
注意:
若原工程内使用过POI工具,需要把原POI依赖先清空,避免依赖冲突。