zoukankan      html  css  js  c++  java
  • 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依赖先清空,避免依赖冲突。

  • 相关阅读:
    浅谈Java两种并发类型——计算密集型与IO密集型
    设置线程池的大小
    Java 四种线程池newCachedThreadPool,newFixedThreadPool,newScheduledThreadPool,newSingleThreadExecuto
    gitlab的简单操作
    GitHub vs GitLab:区别?
    前端小知识汇总
    花里胡哨的CSS集锦
    码云如何上传代码
    小程序自定义底部导航
    Vue实践过程中的几个问题
  • 原文地址:https://www.cnblogs.com/zzzqi/p/13656735.html
Copyright © 2011-2022 走看看