(java)word转html并提取word中的目录结构树生成到html页面中的左边树

2021-03-20 00:00:00 生成 结构 提取

目录

 

概述

1.将word转为html

MAVEN配置

具体java代码实现

2.提取word中的目录结构并生成html中的树目录

调用方式

概述

最近接了一个项目,其中有一个需求将word转html,并将word中的目录结构树提取出来放到html的左侧并生成相应的树目录。经研究要实现该需求可以分为两步:

1.将word转为html

2.提取word中目录结构树并生成html中的树目录

1.将word转为html

网上有很多将word转为html的方案,这里不作详细说明,大致分为使用word自带的转html的api(也就是使用jacob)和POI进行转换。简单的对比了一下使用jacob转换的html的效果比POI好,使用POI时有一些特殊的表格、公式等不能正常显示。具体使用jacob将word转为html的步骤如下:

MAVEN配置

 <dependency>
      <groupId>jacob</groupId>
      <artifactId>jacob</artifactId>
      <version>1.19</version>
 </dependency>

具体java代码实现

public static int  DOC_SAVE_TYPE_HTML = 10;
public static int  DOC_SAVE_TYPE_DOCX = 12;
 /**
     * doc转为docx
     * @param docPath
     * @param docxPath
     */
    public static void wordConvertDocx(String docPath,String docxPath){
        wordConvert(docPath,docxPath,JacobUtil.DOC_SAVE_TYPE_DOCX);
    }
    /**
     * docx转为html
     * @param docPath
     * @param docxPath
     */
    public static void wordConvertHtml(String docPath,String docxPath){
        wordConvert(docPath,docxPath,JacobUtil.DOC_SAVE_TYPE_HTML);
    }

    /**
     * word转换为文件
     * @param docPath word路径
     * @param newFileName html文件路径
     * @param docSaveType 另存为的文件类型,
     */
    public static void wordConvert(String docPath,String newFileName,int docSaveType) {
        try {
            app = getWordInstance();
            Dispatch documents = app.getProperty("Documents").toDispatch();

            // 打开要转换的word文件
            Dispatch doc = Dispatch.call(documents, "Open", docPath, false, true)
                    .toDispatch();
            Dispatch selection = Dispatch.get(app, "Selection").toDispatch();
            // 设置编码 65001----utf-8
            Dispatch option = Dispatch.get(doc, "WebOptions").toDispatch();
            Dispatch.put(option, "Encoding", 65001);
            Dispatch.invoke(doc, "SaveAs", Dispatch.Method,
                    new Object[]{newFileName, new Variant(docSaveType)}, new int[1]);
            Dispatch.call(doc, "Close", new Variant(0));
            System.out.println("文件【" + docPath + "】转换完成");
            //没有调用Quit命令
            doc = null;


        } catch (Exception e) {
            e.printStackTrace();

        }finally {
            //关闭WINWORD.exe进程
            Dispatch.call(app, "Quit");
            app = null;
        }
    }

2.提取word中的目录结构并生成html中的树目录

可使用 poi提取word中的目录结构,在提取poi提取word的目录结构时先从网上找了一些资料,有一些word能提取,但是有一些word文档不能提取。经过一周时间的研究的反复终于完成,做了一个demo放到外网。生成的结果如下图:

《(java)word转html并提取word中的目录结构树生成到html页面中的左边树》

转换后的html如下图,显示2级目录:

   http://112.74.115.22:9000/downFile?url=http://***************/test.docx&titleLevel=2

《(java)word转html并提取word中的目录结构树生成到html页面中的左边树》

显示1级目录:

http://112.74.115.22:9000/downFile?url=http://***************/test.docx&titleLevel=1

《(java)word转html并提取word中的目录结构树生成到html页面中的左边树》

调用方式

http://112.74.115.22:9000/downFile后加两个参数:

url:外网可以下载的word文件url

titleLevel:要目录结构级别,默认值为3级

 

    原文作者:脚穿草鞋
    原文地址: https://blog.csdn.net/today__/article/details/107901405
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章