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依賴先清空,避免依賴沖突。