一、      软件安装以及jar包下载

官网的下载地址如下(英文):

OpenOffice 下载地址http://www.openoffice.org/

JodConverter 下载地址http://sourceforge.net/projects/jodconverter/files/JODConverter/

你也可以百度去搜,在CSDN上面也可以下载到需要的程序包。

JodConverter 下载地址:http://download.csdn.net/download/yali1990515/4443791

解压后将目录下的所有jar包放在工程的lib下面或者采用引用的方式调用这些jar包。

OpenOffice 下载地址:

http://www.baidu.com/link?url=NprmkaLZg44Nn-SPoUwjsrrLGohs5qzN7aejTC2cCsUKJJWo6rXfJHH5G4kW0cKzm4ZjS2KR2GRDWSQ8tARCsWjb08oujQ_IH4WQeeML_Lm

下载后安装,我安装的路径为C:/OpenOffice 4

二、  启动服务

这一部将在程序中以线程启动的形式实现,不需要额外做调用系统的cmd窗口启动服务。

程序中将实现将该服务启动并在完成所有操作之后关闭服务。也就是说,每次执行改程序都会经过服务启动与服务关闭的过程。如果你觉得这样子对于系统性能有影响,你也可以单独地启动该openoffice服务。

三、  程序代码

package com.sheke.wenku;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

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;

public class Office2PDF {

/**

* 将Office文档转换为PDF. 运行该函数需要用到OpenOffice, OpenOffice下载地址为

* http://www.openoffice.org/

*

* <pre>

* 方法示例:

* String sourcePath = "F:\\office\\source.doc";

* String destFile = "F:\\pdf\\dest.pdf";

* Converter.office2PDF(sourcePath, destFile);

* </pre>

*

* @param sourceFile

*            源文件, 绝对路径. 可以是Office2003-2007全部格式的文档, Office2010的没测试. 包括.doc,

*            .docx, .xls, .xlsx, .ppt, .pptx等. 示例: F:\\office\\source.doc

* @param destFile

*            目标文件. 绝对路径. 示例: F:\\pdf\\dest.pdf

* @return 操作成功与否的提示信息. 如果返回 -1, 表示找不到源文件, 或url.properties配置错误; 如果返回 0,

*         则表示操作成功; 返回1, 则表示转换失败

*/

public static int office2PDF(String sourceFile, String destFile) {

try {

File inputFile = new File(sourceFile);

if (!inputFile.exists()) {

return -1;// 找不到源文件, 则返回-1

}

// 如果目标路径不存在, 则新建该路径

File outputFile = new File(destFile);

if (!outputFile.getParentFile().exists()) {

outputFile.getParentFile().mkdirs();

}

// 启动OpenOffice的服务

String command = "C:/OpenOffice 4/program/soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";

Process pro = Runtime.getRuntime().exec(command);

// connect to an OpenOffice.org instance running on port 8100

OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);

connection.connect();

// convert

DocumentConverter converter = new OpenOfficeDocumentConverter(

connection);

converter.convert(inputFile, outputFile);

// close the connection

connection.disconnect();

// 关闭OpenOffice服务的进程

pro.destroy();

return 0;

} catch (FileNotFoundException e) {

e.printStackTrace();

return -1;

} catch (IOException e) {

e.printStackTrace();

}

return 1;

}

public static void main(String[] args){

String source = "D:\\TRS/TRSWCMV7\\protect\\P0201501\\P020150109\\P020150109485061451482.doc";

String dest = "c:\\1.pdf";

int result = office2PDF(source, dest);

System.out.println(result);

}

}

你可以适当注释掉注解。

四、  常见错误

错误信息:

java.net.ConnectException: connection failed: socket,host=10.101.50.71,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect

at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)

at com.ygsoft.eam.demo.DocConverter.wordToPdf(DocConverter.java:65)

at com.ygsoft.eam.demo.DocConverter.conver(DocConverter.java:156)

at com.ygsoft.eam.demo.DocConverter.main(DocConverter.java:206)

java.lang.NullPointerException

at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.disconnect(AbstractOpenOfficeConnection.java:88)

at com.ygsoft.eam.demo.DocConverter.wordToPdf(DocConverter.java:72)

at com.ygsoft.eam.demo.DocConverter.conver(DocConverter.java:156)

at com.ygsoft.eam.demo.DocConverter.main(DocConverter.java:206)

问题原因:新安装的OpenOffice还没有注册,当你用程序去调用soffice.exe时会被阻止,进而出现Connection refused的错误。

解决办法:找到安装在计算机上的这个soffice.exe程序,双击打开,注册之后就可以正常使用了。

Java用OpenOffice将word转换为PDF的更多相关文章

  1. java 调用OpenOffice将word格式文件转换为pdf格式

    一:环境搭建 OpenOffice 下载地址http://www.openoffice.org/ JodConverter 下载地址http://sourceforge.net/projects/jo ...

  2. Java通过openOffice实现word,excel,ppt转成pdf实现在线预览

    Java通过openOffice实现word,excel,ppt转成pdf实现在线预览 一.OpenOffice 1.1 下载地址 1.2 JodConverter 1.3 新建实体类PDFDemo ...

  3. winform实现word转换为PDF(.doc)

    注意:实现word转换为PDF文件,本人安装Office为2013; word以后缀为.doc为例实现文件类型转换,具体方式如下所示: 实现步骤: 1.添加命名空间引用——using Microsof ...

  4. C#,VB.NET如何将Word转换为PDF和Text

    众所周知,Word是我们日常工作中常用的办公软件之一,有时出于某种需求我们需要将Word文档转换为PDF以及Text.那么如何以C#,VB.NET编程的方式来实现这一功能呢? 下面我将分开介绍如何运用 ...

  5. UiPath之Word转换为PDF

    前几天在手机上看到其他的文章,里面提到如何将Word转换为PDf,在UiPath的ManagePackage中,下载一个WordToPDF的包, 我按照上面的方法试着做了一下,但是在转换的时候很不稳定 ...

  6. Java使用Openoffice将word、ppt转换为PDF

    最近项目中要实现WORD的文件预览功能,我们可以通过将WORD转换成PDF或者HTML,然后通过浏览器预览. OpenOffice OpenOffice.org 是一套跨平台的办公室软件套件,能在 W ...

  7. 使用aspose.word两句代码将word转换为pdf

    //Load Document Document document = new Document(@"C:\Users\Administrator\Desktop\人事---新员工转正总结( ...

  8. 【转】Java通过IText导出word和pdf

    原帖地址:http://blog.csdn.net/zwx19921215/article/details/34439851 最近做的项目中需要用到把Highcharts图表导出word和pdf的功能 ...

  9. openoffice excel word 转换pdf 支持本地调用和远程调用

    OpenOffice.org 是一套跨平台的办公室软件套件,能在Windows.Linux.MacOS X (X11)和 Solaris 等操作系统上执行.它与各个主要的办公室软件套件兼容.OpenO ...

随机推荐

  1. 记录android学习、开发过程温故知新

    记录android学习.开发过程温故知新

  2. jQuery UI dialog 的使用

    今天用到了客户端的对话框,把 jQuery UI 中的对话框学习了一下. 准备 jQuery 环境 首先,我们创建一个按钮,点击这个按钮的时候,将会弹出一个对话框. 1 <input type= ...

  3. [转载]MongoDB学习 (五):查询操作符(Query Operators).1st

    本文地址:http://www.cnblogs.com/egger/archive/2013/05/04/3059374.html   欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 查询操作符(Quer ...

  4. Android App性能优化笔记之一:性能优化是什么及为什么?

    By Long Luo   周星驰的电影<功夫>里面借火云邪神之口说出了一句至理名言:“天下武功,唯快不破”. 在移动互联网时代,同样如此,留给一个公司的窗口往往只有很短的时间,如何把握住 ...

  5. 如何避免远程循环执行SSH时,到第一条之后就退出

    RT 今天遇到的小问题,记录下来. 据说关键是加  < /dev/null 我也是看网上别人说的,测试成功. #!/bin/bash while read line do echo $line ...

  6. 徐汉彬:Web系统大规模并发——电商秒杀与抢购

    [导读]徐汉彬曾在阿里巴巴和腾讯从事4年多的技术研发工作,负责过日请求量过亿的Web系统升级与重构,目前在小满科技创业,从事SaaS服务技术建设. 电商的秒杀和抢购,对我们来说,都不是一个陌生的东西. ...

  7. UDP模块(黑胶体)

    UDP模块是采用PIP封装技术的U盘半成品模块,直接加上外壳,就是成品U盘. 它有以下特点: 防水.防尘.防震. 一体WAFER封装技术. 薄.轻.时尚. 产品装配方便.简单. 产品标准化,适合客户在 ...

  8. 令人头疼的clientTop、scrollTop、offsetTop

    1.网络上流传的图片 2.稍微容易理解点的示意图 参考链接:http://blog.csdn.net/lidiansheng/article/details/7950751 3.言简意赅的示意图 4. ...

  9. KeyDown,KeyPress 和KeyUp

    研究了一下KeyDown,KeyPress 和KeyUp ,发现之间还是有点学问的.让我们带着如下问题来说明,如果你看到这些问题你都知道,那么这篇文章你就当复习吧:) 1.这三个事件的顺序是怎么样的? ...

  10. jquery图片轮播插件slideBox

    效果预览: 源代码下载: jQuery图片轮播(焦点图)插件jquery.slideBox 特点:兼容IE6+,Chrome,Firefox,Opera,safari,可左右,可上下,可快可慢,可指定 ...