美文网首页
OpenOffice组件docx/doc转html

OpenOffice组件docx/doc转html

作者: 人形大叔 | 来源:发表于2018-05-14 16:48 被阅读0次

    OpenOffice组件docx/doc转html

    准备工作

    1. CentOS 安装OpenOffice

      • 资源准备

        openOffice安装包

      • 安装
        • 将资源包放在/opt/moudles路径下,解压后放在/opt/softwares路径
          解压
        [root@localhost moudles]
        # tar -zxvf Apache_OpenOffice_4.1.4_Linux_x86-64_install-rpm_zh-CN.tar.gz  -C ../softwares/
        
      • 解压之后会在 /opt/softwares 中生成zh-CN文件夹,进入zh-CNRPMS文件夹。
        [root@localhost moudles]# cd /opt/softwares/zh-CN/RPMS
        
      • 运行yum localinstall *.rpm
        [root@localhost RPMS]# yum localinstall *.rpm
        
      • 成功之后会在当前目录生成desktop-integration文件夹,运行运行 yum localinstall
        [root@localhost desktop-integration]# yum localinstall openoffice4.1.4-redhat-menus-4.1.4-9788.noarch.rpm
        
      • 安装成功会在 /opt 目录下生成openoffice4文件夹。
    1. 启动OpenOffice

      • 临时启动 :临时启动之后画面就不会动了, 不要认为是死机。只要不报错就是好现象。
        [root@localhost desktop-integration]# /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
        
      • 永久启动
        [root@localhost desktop-integration]# nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
        
    2. 查看启动是否成功

      [root@localhost opt]# ps -ef|grep openoffice
      
    3. 查看端口

      [root@localhost opt]# netstat -lnp |grep 8100
      

    Codeing....

    package com.jeecg.ud.service.util;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ConnectException;
    import java.util.Date;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    import com.artofsolving.jodconverter.DocumentConverter;
    import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
    import com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection;
    import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;
    
    /***
     * 
     * @ClassName: Doc2Html
     * @Description: 将Word文档转换成html字符串的工具类
     * @author 王维杰
     * @date 2018年5月14日
     *
     */
    public class Doc2Html {
    
        /**
         * 将word转换成html文件,并且获取html文件代码。
         * 
         * @param docFile
         *            需要转换的文档
         * @param filepath
         *            文档中图片的保存位置
         * @param imgUrl
         *            文档中图片网络路径
         * 
         * @return 转换成功的html代码
         * 
         *         toHtmlString(new File(
         *         "D:\\workSpace\\testDir\\市场信息管理系统软件研制总结报告.docx"),
         *         "D:\\workSpace\\testDir\\image", "cestsa")
         */
        public static String toHtmlString(File docFile, String filepath,String imgUrl) {
            // 转换word文档
            File htmlFile = convert(docFile, filepath);
            // 获取html文件流
            StringBuffer htmlSb = new StringBuffer();
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(htmlFile)));
                while (br.ready()) {
                    htmlSb.append(br.readLine());
                }
                br.close();
                // 删除临时文件
                htmlFile.delete();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // HTML文件字符串
            String htmlStr = htmlSb.toString();
            // 返回经过清洁的html文本
            return clearFormat(htmlStr, filepath, imgUrl);
        }
    
        /**
         * 将word文档转换成html文档
         * 
         * @param docFile
         *            需要转换的word文档
         * @param filepath
         *            转换之后html的存放路径
         * @return 转换之后的html文件
         */
        public static File convert(File docFile, String filepath) {
            // 创建保存html的文件
            File htmlFile = new File(filepath + "/" + new Date().getTime()
                    + ".html");
            // 创建Openoffice连接
            OpenOfficeConnection con = new SocketOpenOfficeConnection(8100);
            try {
                // 连接
                con.connect();
            } catch (ConnectException e) {
                System.out.println("获取OpenOffice连接失败...");
                e.printStackTrace();
            }
            // 创建转换器
            DocumentConverter converter = new OpenOfficeDocumentConverter(con);
            // 转换文档问html
            converter.convert(docFile, htmlFile);
            // 关闭openoffice连接
            con.disconnect();
            return htmlFile;
        }
    
        /**
         * 清除一些不需要的html标记
         * 
         * @param htmlStr
         *            带有复杂html标记的html语句
         * @return 去除了不需要html标记的语句
         */
        protected static String clearFormat(String htmlStr, String docImgPath,String imgUrl) {
            // 获取body内容的正则
            String bodyReg = "<BODY .*</BODY>";
            Pattern bodyPattern = Pattern.compile(bodyReg);
            Matcher bodyMatcher = bodyPattern.matcher(htmlStr);
            if (bodyMatcher.find()) {
                // 获取BODY内容,并转化BODY标签为DIV
                htmlStr = bodyMatcher.group().replaceFirst("<BODY", "<DIV").replaceAll("</BODY>", "</DIV>");
            }
            // 调整图片地址
            htmlStr = htmlStr.replaceAll("<IMG SRC=\"", "<IMG SRC=\"" + imgUrl+ "/");
            // 把<P></P>转换成</div></div>保留样式
            // content = content.replaceAll("(<P)([^>]*>.*?)(<\\/P>)",
            // "<div$2</div>");
            // 把<P></P>转换成</div></div>并删除样式
            htmlStr = htmlStr.replaceAll("(<P)([^>]*)(>.*?)(<\\/P>)", "<p$3</p>");
            // 删除不需要的标签
            htmlStr = htmlStr.replaceAll("<[/]?(font|FONT|span|SPAN|xml|XML|del|DEL|ins|INS|meta|META|[ovwxpOVWXP]:\\w+)[^>]*?>","");
            // 删除不需要的属性
            htmlStr = htmlStr.replaceAll("<([^>]*)(?:lang|LANG|class|CLASS|style|STYLE|size|SIZE|face|FACE|[ovwxpOVWXP]:\\w+)=(?:'[^']*'|\"\"[^\"\"]*\"\"|[^>]+)([^>]*)>","<$1$2>");
            return htmlStr;
        }
    
    }
    

    相关文章

      网友评论

          本文标题:OpenOffice组件docx/doc转html

          本文链接:https://www.haomeiwen.com/subject/yhsjdftx.html