文档章节

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

局座
 局座
发布于 2016/08/06 14:43
字数 438
阅读 108
收藏 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();
    }
}

© 著作权归作者所有

共有 人打赏支持
局座
粉丝 2
博文 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....

阿虚同学
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

没有更多内容

加载失败,请刷新页面

加载更多

Flink-数据流编程模型

1、抽象等级 Flink提供了不同级别的抽象来开发流/批处理应用程序。 1) 低层级的抽象 最低层次的抽象仅仅提供有状态流。它通过Process函数嵌入到DataStream API中。它允许用户自由地处理来自一...

liwei2000
20分钟前
1
0
Java开发Swing实战JFrame和JTabbedPane容器的用法详细解析

概述: 项目是一个桌面程序,涉及标签和按钮组件、布局管理器组件、面板组件、列表框和下拉框组件等组件,以及Swing事件处理机制。 下面先从最基础的界面开始。 /** * @author: lishuai * @...

金铭鼎IT教育
26分钟前
7
0
flask 之旅

环境 为了正确地跑起来,你的应用需要依赖许多不同的软件。 就算是再怎么否认这一点的人,也无法否认至少需要依赖Flask本身。 你的应用的运行环境,在当你想要让它跑起来时,是至关重要的。 ...

hblt-j
26分钟前
5
0
easyui的上传文件

记录一下自己亲手操刀easyui的心得:不用不知道,一用就问题多,网上查资料,有用的真的太少了 ——————————————————正文 FileBox,还是不错的讲真,至少我去自己写就gaga了...

anlve
27分钟前
4
0
如何做好SQLite 使用质量检测,让事故消灭在摇篮里

本文由云+社区发表 SQLite 在移动端开发中广泛使用,其使用质量直接影响到产品的体验。 常见的 SQLite 质量监控一般都是依赖上线后反馈的机制,比如耗时监控或者用户反馈。这种方式问题是: ...

腾讯云加社区
29分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部