文档章节

使用openffice 实现word、excel、ppt转pdf或者html文件

局座
 局座
发布于 2016/08/06 14:43
字数 438
阅读 118
收藏 0
  1. 运行环境:win10、eclipse mars、java8 所需相关jar包下载地址
  2. openoffice下载地址 转换之前请先安装openoffice,然后在软件安装目录的progrom目录下:使用命令启动相关服务: soffice -headless -accept=”socket,host=127.0.0.1,port=8100;urp;” -nofirststartwizard
  3. 相关代码
package com.sun.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.ConnectException;

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;

/**
 * @description 文件转换工具类
 * @author sunshanjin
 *
 */
public class Doc2HtmlUtils {

    private static Doc2HtmlUtils doc2HtmlUtils;

    /**
     * 获取Doc2HtmlUtil实例
     */
    public static synchronized Doc2HtmlUtils getDoc2HtmlUtilsInstance() {
        if (doc2HtmlUtils == null) {
            doc2HtmlUtils = new Doc2HtmlUtils();
        }
        return doc2HtmlUtils;
    }

    /**
     * @description dox,docx,xls,ppt转html
     * @param file
     * @return 生成的html文件名称 xxx.html
     * @throws IOException
     */
    public String file2html(File file) throws IOException {
    	if (!file.exists()) {
			throw new FileNotFoundException("没有找到该文件:" + file.getPath());
		}
        String filename = file.getName();
        File htmlFile = null;
        if (filename.endsWith("docx")) {
        	htmlFile = new File(file.getParent() + File.separator + filename.replace(".docx", ".html"));
		}else if (filename.endsWith("doc")) {
			htmlFile = new File(file.getParent() + File.separator + filename.replace(".doc", ".html"));
		}else if (filename.endsWith("xls")) {
			htmlFile = new File(file.getParent() + File.separator + filename.replace(".xls", ".html"));
		}else if (filename.endsWith("ppt")) {
			htmlFile = new File(file.getParent() + File.separator + filename.replace(".ppt", ".html"));
		}
        if (!htmlFile.exists()) {
			htmlFile.createNewFile();
		}else{
			return htmlFile.getName();
		}
        this.convent(file, htmlFile);
        //返回生成的html文件名
        return htmlFile.getName();
    }

    /**
     * @description dox,docx,xls,ppt转pdf
     * @param file
     * @return 生成的pdf文件名称xxx.pdf
     * @throws IOException
     */
    public String file2pdf(File file) throws IOException {
    	if (!file.exists()) {
			throw new FileNotFoundException("没有找到该文件:" + file.getPath());
		}
        String filename = file.getName();
        File pdfFile = null;
        if (filename.endsWith("docx")) {
        	pdfFile = new File(file.getParent() + File.separator + filename.replace(".docx", ".pdf"));
		}else if (filename.endsWith("doc")) {
			pdfFile = new File(file.getParent() + File.separator + filename.replace(".doc", ".pdf"));
		}else if (filename.endsWith("xls")) {
			pdfFile = new File(file.getParent() + File.separator + filename.replace(".xls", ".pdf"));
		}else if(filename.endsWith("xlsx")){
			pdfFile = new File(file.getParent() + File.separator + filename.replace(".xlsx", ".pdf"));
		}else if (filename.endsWith("ppt")) {
			pdfFile = new File(file.getParent() + File.separator + filename.replace(".ppt", ".pdf"));
		}
        if (!pdfFile.exists()) {
        	pdfFile.createNewFile();
		}else{
			return pdfFile.getName();
		}
        this.convent(file, pdfFile);
        //返回生成的html文件名
        return pdfFile.getName();
    }
    
    /**
     * 转换文件
     * @param sourceFile 源文件
     * @param distinctFile 目标文件
     */
    public void convent(File sourceFile, File distinctFile){
        OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
        try {
            connection.connect();
        } catch (ConnectException e) {
            System.err.println("无法完成文件转换,请检查OpenOffice服务是否启动!");
        }
        DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
        converter.convert(sourceFile, distinctFile);
        connection.disconnect();
    }
}

© 著作权归作者所有

局座
粉丝 3
博文 2
码字总数 648
作品 0
东城
后端工程师
私信 提问
Word、Excel、PPT、PDF在线预览,类似百度文库的实现方法?

Word、Excel、PPT、PDF在线预览的实现方法有什么,我暂时知道可以用flash和html实现预览 最好不要用flash预览,希望能用html5。 暂时我查到的技术有: flash预览有:flexpaper(支持Word、E...

槽卤
2015/09/02
4K
7
五款免费pdf转换成word软件下载

原文链接:http://www.wordlm.com/html/1711.html

liangxiaowei66
2014/05/29
0
0
两个软件,解决你所有的PDF转换问题

今天阿虚拿出私藏的两个PDF转换软件 希望能解决你所有的PDF转换问题 一、Solid Converter PDF 专业的PDF转换软件,支持把PDF转换为Word、PPT、Excel、HTML、图片、TXT (一)、下载与安装 1....

阿虚同学
2018/10/29
0
0
使用apache.tika判断文件类型

判断文件类型一般可采用两种方式 后缀名判断 简单易操作,但无法准确判断类型 文件头信息判断 通常可以判断文件类型,但有些文件类型无法判断(如word和excel头信息的前几个字节是一样的,无...

debugable
2016/11/11
314
0
office转html文档在线预览

要想实现office文档在线预览,可以使用红樱枫软件公司开发的数据格式转换软件HTML Filter,实现MS Office系列文档到HTML的快速转换,通过浏览器浏览HTML的内容。该产品可以将 word转html, exc...

hyfsoft
2014/06/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面向对象方面的一些东东

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" cont......

流年那么伤
23分钟前
2
0
git 过滤文件夹和文件(IDEA)

最近使用git版本管理工具遇到一件很烦的事情,commit时总会把.idea、.*.iml和target文件添加进来,实际开发中,这些是需要过滤掉的。在.gitnore文件添加了过滤不起作用。下面介绍一种成功过滤...

uug
31分钟前
2
0
Spark Streaming 实时统计商户当日累计PV流量

一、问题 对实时流量日志过滤筛选商户流量,对每个商户的流量进行累计,统计商户实时累计流量。 当时间超过24时时,重新统计当日商户的实时累计流量。 二、实现步骤 1、采用Spark Streaming...

boonya
35分钟前
1
0
如果Task与Event 创建了记录类型后,不出现在Lightning的Activities中

如果在Lightning的Activities没出现这两个Button,但是在页面布局的Lightning 按钮区也存在,全局操作的记录类型就需要选择一个,否则不会出现

在山的那边
44分钟前
2
0
ddd中的子域和界限上下文

我们先来说说子域是什么?子域在我的理解是在一个庞大的系统中可以明显感知的不同的区块,如果在电商模块中,商品目录,订单,物流,库存,发票等等都可以感知他们明显的不同,可以认为是子域...

算法之名
53分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部