OpenOffice组件docx/doc转html

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
    
  • 参考文章 CentOS 6.5 Linux 安装 openoffice

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 = "";
        Pattern bodyPattern = Pattern.compile(bodyReg);
        Matcher bodyMatcher = bodyPattern.matcher(htmlStr);
        if (bodyMatcher.find()) {
            // 获取BODY内容,并转化BODY标签为DIV
            htmlStr = bodyMatcher.group().replaceFirst("", "
"); } // 调整图片地址 htmlStr = htmlStr.replaceAll("

转换成
保留样式 // content = content.replaceAll("(]*>.*?)(<\\/P>)", // ""); // 把

转换成
并删除样式 htmlStr = htmlStr.replaceAll("(]*)(>.*?)(<\\/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)