文档的转换成pdf格式的方法有很多,目前主要有三种解决方案:利用Jacob或者JCom调用MS Office或者WPS Office API,利用JODConverter调用OpenOffice.org服务,调用虚拟打印机转换文档为PDF。由于本人对于Jacob和JCom调用MS Office 或者wps Office API不是很了解,在这里就不说了,本文用到的方法主要是JODConverter调用OpenOffice.org
服务,调用虚拟打印机转换文档为PDF。 在这里首先了解一下JODConverter软件。
JODConverter,是一个Java的OpenDocument文件转换器,可以进行许多文件格式的转换。它依赖于OpenOffice.org或者LibreOffice提供的服务来进行转换,它能将MicrosoftOffice文档(Word,Excel,PowerPoint)转换为PDF格式。
当前的JODConverter的版本是是JODConverter3.0。本文用到的是JODConverter2.2.2版本的下载地址是:http://download.csdn.net/detail/yali1990515/4443791
JODConverter的使用你可以把嵌入在java程序中,也可以单独作为命令由脚本条用。更可以应用为网页程序或者WebService以供网络应用。
1主要接口的声明:
OfficeManager是一个接口,主要定义了三个方法:
·publicvoidstart()启动OpenOffice服务
·publicvoidstop()停止OpenOffice服务
·publicvoidexecute(OfficeTasktask)执行转换任务
DefaultOfficeManagerConfiguration是一个实现了OfficeManager接口的实体类,其提供了相关方法配置OpenOffice.org,比如:
publicDefaultOfficeManagerConfigurationsetOfficeHome(StringofficeHome)设置OpenOffice.org或者LibreOffice安装目录,windows下默认值为”C:\ProgramFiles\OpenOffice.org3”(LibreOffice进行相应更改),因此如果OpenOffice.org安装在别的目录,必须设置此项。
publicDefaultOfficeManagerConfigurationsetConnectionProtocol(OfficeConnectionProtocolconn)设置连接协议,确定使用管道通信,还是socekt通信。
pubcliDefaultOfficeManagerConfigurationsetTemplateProfileDir(FiletemplateProfileDir)设定临时目录。
除以上几个方法之外,DefaultOfficeManagerConfiguration还提供了别的配置OpenOffice.org的方法,具体方法可以查询JODConverterAPI手册。配置完之后,必须要执行方法buildOfficeManager(),实现真正的配置。
OfficeDocumentConverter中主要包含convert方法,该方法实际上调用的是实现OfficeManager接口的类中的execute方法。
2利用JODConverter转化文档为PDF格式实现
2.1算法的设计
第一步,启动OpenOffice服务。例如,首先设定DefaultOfficeManagerConfiguration相关参数来配置OpenOffice,并得到OfficeManager。调用OfficeManager实现类的start方法启动服务。
第二步,转换文档。例如,初始化OfficeDocumentConverter,调用其convert方法执行转换。
第三步,停止OpenOffice服务。例如,调用OfficeManager实现类的stop方法停止方法。
3 JODConverter的安装配置
JODConverter的安装配置在这里就不说了,如果不知道的可以去百度或者google搜索一下,网上都有很全面的说明。下载完JJODConverter之后解压压缩包,把JODConverter的lib目录下的jar包考到做到的项目中,本文还需要把jodconverter-core-3.0-beta-4.jar拷到lib目录下,由于文章中用到了org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;不然会报出错误。至于jodconverter-core-3.0-beta-4.jar可以从文中的案例中拷到。案例的下载地址为
:http://download.csdn.net/download/yali1990515/4443960
lib目录下的jar加载完成后如下:
4文档的转换
文档的转换分为两类:文本文档的转换和office文档转换。
文本文档的转换的主要方法是: 先把文件转换为后缀名为odt的文件,之后在调用OfficeDocumentConverter中的converter的方法把文件转换为pdf格式就好了,在这样的原因主要为了防止转换时出现乱码的问题。
第二类 :office文档的转换只要我们开启服务直接转换就可以了。关于文档的转换的代码如下 :
package cn.bzu.edu.SoCool.convert;
import java.io.File;
import java.io.FileNotFoundException;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
//转换文档为pdf
public class OpenOfficePdfConvert {
/**
* @param args
*/
private static OfficeManager officeManager;//需要导入一个
private static String OFFICE_HOME = "C:\\Program Files\\OpenOffice.org 3";//安装OPenOffice 的路径
private static int port[] = { 8100 };
public void convert2PDF(String inputFile, String outputFile) throws FileNotFoundException {
/* 1 进行转换 操作
* 2 start service
* 3 deal tranlate
* 3 stop service
*/
String fileName1 = inputFile.substring(0, inputFile.lastIndexOf("."));
if(inputFile.endsWith("txt")){
String odtFile = fileName1+".odt";
if(new File(odtFile).exists()){
System.out.println("odt文件已存在!");
inputFile = odtFile;
}else{
FileUtil.copyFile(inputFile, odtFile);
inputFile = odtFile;
}
}
//开启服务器
startService();
//进行转换
System.out.println("进行文档转换转换:" + inputFile + " --> " + outputFile);
OfficeDocumentConverter converter = new OfficeDocumentConverter(
officeManager);
converter.convert(new File(inputFile), new File(outputFile));
//关闭服务器
stopService();
System.out.println();
}
// 打开服务器
public static void startService() {
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
try {
System.out.println("准备启动服务....");
configuration.setOfficeHome(OFFICE_HOME);// 设置OpenOffice.org安装目录
configuration.setPortNumbers(port); // 设置转换端口,默认为8100
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 设置任务执行超时为5分钟
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 设置任务队列超时为24小时
officeManager = configuration.buildOfficeManager();
officeManager.start(); // 启动服务
System.out.println("office转换服务启动成功!");
} catch (Exception ce) {
System.out.println("office转换服务启动失败!详细信息:" + ce);
}
}
// 关闭服务器
public static void stopService() {
System.out.println("关闭office转换服务....");
if (officeManager != null) {
officeManager.stop();
}
System.out.println("关闭office转换成功!");
}
/*
* 进行测试转换是否成功
public static void main(String[] args) {
// TODO Auto-generated method stub
String inputFile = "d:\\resource\\1.doc";
String outputFile = "d:\\resource\\1.pdf";
OpenOfficePdfConvert opc = new OpenOfficePdfConvert();
try {
opc.convert2PDF(inputFile, outputFile);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
*/
}
参考资料 :
http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548331.html
http://www.cnblogs.com/star-studio/archive/2011/12/09/2282411.html
分享到:
相关推荐
仿百度文库解决方案(三)——利用JCom调用MS Office或者Acrobat API转换文档为PDF 仿百度文库解决方案(四)——利用JODConverter调用OpenOffice.org服务转换文档为PDF 仿百度文库解决方案(五)——利用SWFTools...
利用jodconverter-core-3.0-beta-4.jar包解决office转pdf,同时解决excel转pdf,excel列数太多的时候,分成很多pdf页的问题
利用jodconverter--doc2pdf
jodconverter-2.2.1不支持docx格式的word文档转换,2.2.2支持 linux和windows安装openOffice java通过jodconverter 将excel、doc文件转成pdf或html,比2.2.1版本相比 提供office 2007版本支持 maven是只有2.2.1版本...
这是通过java使用openoffice进行MS文档转PDF文档必备工具jodconverter 版本3.0 可以完美支持docx pptx xlsx 等后缀
支持将Word2003,word2007等以上版本,将office如Word,excel,ppt等资源转换为pdf
openOffice转pdf功能jodconverter-core-3.0-beta-4依赖包
JODConverter,是一个Java的OpenDocument文件转换器,依赖于OpenOffice.org或者LibreOffice提供的服务来进行转换,它能将Microsoft Office文档(Word,Excel,PowerPoint)转换为PDF格式。
jodconverter-core-3.0-beta-4.jar
jodconverter word文档转换pdf格式工具架包,亲测使用
jodconverter-3.0-beta-4.jar
包含: jodconverter-2.2.2.jar jodconverter-cli-2.2.2.jar 根据需要下载
在他人基础上实现java实现仿百度文库预览文档功能, Txt/Word/Excel/PPT => PDF(OpenOffice+JodConverter) => SWF(pdf2swf)=>FlexPaper浏览。 包含了源代码,文档,部分较小文件的安装文件,部分较大文件的下载...
开发过程中经常会使用java将office系列文档转换为PDF, 一般都使用openoffice+jodconverter 实现转换文档。
jodconverter-core-3.0-beta-4.jar 这个jar包用maven下载不下来, 可以从这里下载后,直接放到本地maven仓库的根目录下 亲测可用
用jodconverter将pdf格式传成swf格式用swftools显示,有打印复制下载功能
java仿百度文库、豆丁在线阅读,流程如下:Txt/Word/Excel/PPT=>PDF(OpenOffice+JodConverter)=>SWF(pdf2swf)=>FlexPaper浏览,本人用过,很好用
openoffice需要用的jar, office转pdf jodconverter-2.2.2.jar网上很少 ,亲测可用,jodconverter-core-3.0-beta-3.jar 亲测可用 项目要实现在线预览,将office转pdf 流形式输出到前端openoffice需要用的jar, ...
采用java实现仿百度文库、豆丁在线阅读,有详细的代码并列出了所用到的jar包,采用openoffice+jodconverter+swftools