文档章节

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

局座
 局座
发布于 2016/08/06 14:43
字数 438
阅读 88
收藏 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
3.1K
7
五款免费pdf转换成word软件下载

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

liangxiaowei66
2014/05/29
0
0
让您的手机、平板电脑实现移动办公

金软OfficePro-浏览版是北京红樱枫软件有限公司推出的、运行于 Android 手机、平板电脑上的全功能办公软件,支持各种常用Office文档浏览,支持手写批注、语音朗读、中英文自动翻译、网络打印...

hyfsoft
2014/07/30
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

没有更多内容

加载失败,请刷新页面

加载更多

70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
2
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
6
0
C++ yield()与sleep_for()

C++11 标准库提供了yield()和sleep_for()两个方法。 (1)std::this_thread::yield(): 线程调用该方法时,主动让出CPU,并且不参与CPU的本次调度,从而让其他线程有机会运行。在后续的调度周...

yepanl
今天
4
0
Java并发编程实战(chapter_3)(线程池ThreadPoolExecutor源码分析)

这个系列一直没再写,很多原因,中间经历了换工作,熟悉项目,熟悉新团队等等一系列的事情。并发课题对于Java来说是一个又重要又难的一大块,除非气定神闲、精力满满,否则我本身是不敢随便写...

心中的理想乡
今天
40
0
shell学习之获取用户的输入命令read

在运行脚本的时候,命令行参数是可以传入参数,还有就是在脚本运行过程中需要用户输入参数,比如你想要在脚本运行时问个问题,并等待运行脚本的人来回答。bash shell为此提 供了read命令。 ...

woshixin
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部