文档章节

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

村长__
 村长__
发布于 2016/08/06 14:43
字数 438
阅读 78
收藏 0
点赞 0
评论 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 ⋅ 7

五款免费pdf转换成word软件下载

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

liangxiaowei66 ⋅ 2014/05/29 ⋅ 0

ppt转换pdf免费软件

ppt转换pdf免费软件 在日常生活工作中,经常需要将一些PPT演讲稿转换成PDF文档,而这些演讲文稿里面有的是带有图片的,如何将这类图文并茂的PPT演示文稿转换成PDF文档,供大家浏览,也不是没...

迅捷PDF ⋅ 2014/08/26 ⋅ 0

ppt怎样转换成pdf

ppt怎样转换成pdf PDF文档的规范性使得浏览者在阅读上方便了许多,但倘若要从里面提取些资料,实在是麻烦,而从百度上很多所谓的PPT转换成PDF转换器软件都是带有病毒的,对电脑有很大的危害,...

迅捷PDF ⋅ 2014/08/25 ⋅ 0

使用apache.tika判断文件类型

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

debugable ⋅ 2016/11/11 ⋅ 0

让您的手机、平板电脑实现移动办公

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

hyfsoft ⋅ 2014/07/30 ⋅ 0

office转html文档在线预览

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

hyfsoft ⋅ 2014/06/13 ⋅ 0

受支持的PDF文档格式该怎样进行转换

ABBYY PDF Transformer+图文识别软件,是一款可创建、编辑、添加注释以及将PDF文件转换为其他可编辑格式的通用工具,在创建或转换PDF时支持很多PDF文档格式,是日常办公的好帮手,大大提高了...

ABBYY ⋅ 2016/01/13 ⋅ 0

jpg转换pdf转换器免费下载

jpg转换pdf转换器免费下载 回忆起大四制作毕业论文的那段日子,为了能够让自己的文章更加出彩,我翻阅了网上相关资料,发现有些精彩的J图片,想将它转换到PDF文档里,但是花了一个晚上的时间...

迅捷PDF ⋅ 2014/08/25 ⋅ 0

jacob操作ppt报错

private boolean ppt2PDF(String inputFile, String pdfFile) { ComThread.InitSTA(); long start = System.currentTimeMillis(); ActiveXComponent app = null; Dispatch ppt = null; try {......

睡觉不关灯 ⋅ 2016/06/20 ⋅ 1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

一篇文章学懂Shell脚本

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用...

Jake_xun ⋅ 26分钟前 ⋅ 0

大数据工程师需要精通算法吗,要达到一个什么程度呢?

机器学习是人工智能的一个重要分支,而机器学习下最重要的就是算法,本文讲述归纳了入门级的几个机器学习算法,加大数据学习群:716581014一起加入AI技术大本营。 1、监督学习算法 这个算法由...

董黎明 ⋅ 58分钟前 ⋅ 0

Kylin 对维度表的的要求

1.要具有数据一致性,主键值必须是唯一的;Kylin 会进行检查,如果有两行的主键值相同则会报错。 2.维度表越小越好,因为 Kylin 会将维度表加载到内存中供查询;过大的表不适合作为维度表,默...

无精疯 ⋅ 今天 ⋅ 0

58到家数据库30条军规解读

军规适用场景:并发量大、数据量大的互联网业务 军规:介绍内容 解读:讲解原因,解读比军规更重要 一、基础规范 (1)必须使用InnoDB存储引擎 解读:支持事务、行级锁、并发性能更好、CPU及...

kim_o ⋅ 今天 ⋅ 0

代码注释中顺序更改 文件读写换行

`package ssh; import com.xxx.common.log.LogFactory; import com.xxx.common.log.LoggerUtil; import org.apache.commons.lang3.StringUtils; import java.io.*; public class DirErgodic ......

林伟琨 ⋅ 今天 ⋅ 0

linux实用操作命令

参考 http://blog.csdn.net/qwe6112071/article/details/50806734 ls [选项] [目录名 | 列出相关目录下的所有目录和文件 -a 列出包括.a开头的隐藏文件的所有文件-A 同-a,但不列出"."和"...

简心 ⋅ 今天 ⋅ 0

preg_match处理中文符号 url编码方法

之前想过直接用符号来替换,但失败了,或者用其他方式,但有有些复杂,这个是一个新的思路,亲测可用 <?php$str='637朗逸·超速新风王(300)(白光)'; $str=iconv("UTF-8","GBK",$s...

大灰狼wow ⋅ 今天 ⋅ 0

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。 作者: Tony Baer 原文: Has the time finally come for PostgreSQL?(有删节) 近30年来 PostgreSQL 无疑是您从未听...

RiboseYim ⋅ 今天 ⋅ 0

github太慢

1:用浏览器访问 IPAddress.com or http://tool.chinaz.com 使用 IP Lookup 工具获得github.com和github.global.ssl.fastly.net域名的ip地址 2:/etc/hosts文件中添加如下格式(IP最好自己查一...

whoisliang ⋅ 今天 ⋅ 0

非阻塞同步之 CAS

为解决线程安全问题,互斥同步相当于以时间换空间。多线程情况下,只有一个线程可以访问同步代码。这种同步也叫阻塞同步(Blocking Synchronization). 这种同步属于一种悲观并发策略。认为只...

长安一梦 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部