一、      软件安装以及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. 0xc0000428 winload.exe无法验证其数字签名的解决方法

    只要把windows/system32/boot中的winload.exe复制到windows/system32中替换即可!! 只有启动画面会有变化,可以使用魔方等软件进行修复,恢复到之前的样子

  2. Ajax.BeginForm返回方法OnSuccess

    在MVC3里面——程序集 System.Web.Mvc.dll, v4.0.30319有这么一个Ajax.BeginForm异步登录验证的类型,我们在下面给出一个例子:在登录页面Logion.csht ...

  3. 剖析 Linux hypervisor--KVM 和 Lguest 简介

    慢慢弄清楚..   M. Tim Jones, 顾问工程师, Emulex Corp. M. Tim Jones 是一名嵌入式软件工程师,他是 Artificial Intelligence: A S ...

  4. HDU3400+三分

    三分出两个中间的位置即可. /* 两次三分 */ #include<stdio.h> #include<string.h> #include<stdlib.h> # ...

  5. [Gauss]POJ3185 The Water Bowls

    题意:反正就是要给的一串01的变成全0 能影响自己和左右 最少需要几步 01方程组 异或解 ][]; // 增广矩阵 ]; // 解 ]; // 标记是否为自由未知量 int n; void debu ...

  6. 快速扫描文本文件,统计行数,并返回每一行的索引位置(Delphi、C#)

    由项目需要,需要扫描1200万行的文本文件.经网友的指点与测试,发现C#与Delphi之间的差距并不大.不多说,列代码测试: 下面是Delphi的代码: //遍历文件查找回车出现的次数 functio ...

  7. Android开发UI之补间动画-Tween Animation

    Tween Animation-补间动画 官网链接-http://developer.android.com/reference/android/view/animation/Animation.ht ...

  8. BZOJ_1014_[JSOI2008]_火星人prefix_(Splay+LCP_Hash+二分)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1014 给出一个字符串,有修改,插入,以及询问LCP(i,j)的操作. 分析 LCP在白书上面有 ...

  9. BZOJ_1611_[Usaco2008_Feb]_Meteor_Shower流星雨_(bfs)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1611 网格图起始位置(0,0),不同时间会有流星落下,导致之后的时间里,该点以及周围四个点都不 ...

  10. UIScrollView,UIView转换UIImage代码(整个view截图, 不只是可视区域)

    -(UIImage*)captureView:(UIView *)theView{     CGRect rect = theView.frame;     if ([theView isKindOf ...