Tika解析word文件

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

posted on 2020-09-12 13:32  zzzqi  阅读(2170)  评论(0编辑  收藏  举报