文档的转换成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提供的服务来进行转换,它能将Microsoft Office文档(Word,Excel,PowerPoint)转换为PDF格式。

当前的JODConverter的版本是是JODConverter3.0。本文用到的是 JODConverter2.2.2版本的下载地址是 :http://download.csdn.net/detail/yali1990515/4443791

JODConverter的使用你可以把嵌入在java程序中,也可以单独作为命令由脚本条用。 更可以应用为网页程序或者Web Service以供网络应用。

1 主要接口的声明 :

OfficeManager是一个接口,主要定义了三个方法:

· public void start( )启动OpenOffice服务

· public void stop( )停止OpenOffice服务

· public void execute(OfficeTask task)执行转换任务

  DefaultOfficeManagerConfiguration是一个实现了OfficeManager接口的实体类,其提供了相关方法配置OpenOffice.org,比如:

  public DefaultOfficeManagerConfiguration setOfficeHome(String officeHome)设置OpenOffice.org或者LibreOffice安装目录,windows下默认值为” C:\Program Files\OpenOffice.org 3”(LibreOffice进行相应更改),因此如果OpenOffice.org安装在别的目录,必须设置此项。

  public DefaultOfficeManagerConfiguration setConnectionProtocol(OfficeConnectionProtocol conn)设置连接协议,确定使用管道通信,还是socekt通信。

  pubcli DefaultOfficeManagerConfiguration setTemplateProfileDir(File templateProfileDir)设定临时目录。

  除以上几个方法之外,DefaultOfficeManagerConfiguration还提供了别的配置OpenOffice.org的方法,具体方法可以查询JODConverter API手册。配置完之后,必须要执行方法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); // 设置转换端口,默认为8100configuration.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 stubString 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 blocke.printStackTrace();}}*/
}

参考资料 :

http://www.cnblogs.com/luckyxiaoxuan/archive/2012/06/13/2548331.html

http://www.cnblogs.com/star-studio/archive/2011/12/09/2282411.html

转载于:https://my.oschina.net/aliBlog/blog/651525

仿百度文库解决方案(三)- 利用JODConverter把文档转换成pdf格式相关推荐

  1. word转图片 java_Java 利用LibreOffice将Office文档转换成 PDF,进而转图片,实现在线预览功能...

    项目中需要将 Office 文档上传并实现在线预览,用到了 LibreOffice 将 Office 文档转换为 PDF 文档,然后再用 pdfbox 将 PDF 转为图片. 本文介绍借助 Libre ...

  2. ​Word怎么转换成PDF格式?这三种方法教你如何转换

    怎么把Word文档转换成PDF文件格式呢?相信小伙伴们在办公过程中会习惯使用Word文档来编辑文件,编辑好后如果需要发送文件的话会将文档转换成PDF格式来发送,原因就是PDF格式独有的兼容性和稳定性能 ...

  3. 仿百度文库解决方案(一)——总体思路

    仿百度文库解决方案(一)--总体思路 参考文章: (1)仿百度文库解决方案(一)--总体思路 (2)https://www.cnblogs.com/luckyxiaoxuan/archive/2012 ...

  4. 怎么把Excel转换成PDF格式?这三种方法轻松完成转换

    如何将excel表格转换成PDF格式呢?大家在日常的办公过程中也会经常使用这两种文件格式,对文件的格式转换需求我们也是屡见不鲜,其中就有把excel表格转换成PDF格式的需求,遇到这种情况该怎么转换呢 ...

  5. cad怎么转换成pdf格式?分享三种途径

    我们怎么将cad转换成pdf格式呢?CAD作为我们熟悉的一种制图软件被广泛地应用于工程.设计等领域,但其实随着产业发展,早就有越来越多的行业开始运用CAD来创造更多产能.随之而来的问题就是,我们怎么将 ...

  6. caj文件怎么转换成pdf格式?三步搞定

    当我们需要查阅一些文献资料时,往往会遇到CAJ文件格式的问题.这种格式需要使用专业的阅读工具才能打开,让我们的阅读体验变得十分不便.为了解决这个问题,我们可以将CAJ文件转换成PDF文件格式.这样,无 ...

  7. cad怎么转换成pdf格式?分享三步将cad转pdf的方法

    cad怎么转换成pdf格式?相信大部分小伙伴对cad图纸都不会陌生,因为其涉及的领域涵盖了我们生活的方方面面,不管是生活娱乐还是日常办公都会或多或少的接触到cad图纸.然而查阅cad图纸通常要使用到较 ...

  8. 下载资料,站点汇总,别只知道去百度文库,既能找到好文档,还能获取收益

    当前主要付费文档整理,一方面可以获取自己需要的资料,另一方面也可以贡献自己的文档,获取收益 IT类文档 1.CSND资源下载 这是IT类文档比较多,也是东西鱼龙混杂,大部分文档盗版重复,又预读功能,可 ...

  9. python爬虫破解百度文库_用Python爬取百度文库0下载券的免费文档详细步骤,附可执行软件...

    [Python] 纯文本查看 复制代码from urllib import parse import requests import webbrowser from pyquery import Py ...

  10. 2023 最新一键下载百度网盘/阿里云盘/百度文库/道客巴巴/原创力文档

    苏生不惑第415 篇原创文章,将本公众号设为星标,第一时间看最新文章. 之前分享过录制了个视频:2022年11月一键下载百度网盘/百度文库/豆丁/道客巴巴/原创力文档 ,2023年再更新下 . 爱奇艺 ...

最新文章

  1. 7 个 jQuery 最佳实践
  2. SQL游标原理和使用方法
  3. node / npm 配置问题
  4. r语言上机文本分析与词云绘制_倚天屠龙记的文本分析
  5. map 与 unordered_map
  6. hibernate简单应用
  7. 需要在AndroidManifest中添加的条件
  8. .NET Mail : 注意Win 7 不再包含SMTP服务
  9. UVALive 6181
  10. H.264学习过程中遇到的英文缩写整理
  11. 考研高数——牛顿-莱布尼茨公式(N-L公式)的证明
  12. Python临时文件创建:tempfile模块简介
  13. 电脑锁屏界面怎样修改服务器,win10锁屏界面无法更改怎么解决?_网站服务器运行维护...
  14. win8虚拟机_VMware 11.1.0 Mac虚拟机软件系统安装教程
  15. 谷歌今年在中国新招200人 应届毕业生占50%
  16. 计算机教室英语手抄报,我的教室英语手抄报
  17. 剧情/惊悚基因危机:天才科学家的五日
  18. AndroidStudio连接真机测试运行
  19. Android Studio 开发–微信APP门户界面设计
  20. 机器学习笔记之受限玻尔兹曼机(二)模型表示

热门文章

  1. 【PS】制作水彩画效果
  2. NLP6:stanford Parser中文分词
  3. PCI-PCIE中断机制之三
  4. 无线专题 PCI接口与PCIe接口
  5. 哈佛幸福课之改变的感想
  6. 专业计算机怎么关机,Win10如何使用快捷键来关机?_win10专业版技巧
  7. 笔记——衡量回归算法的标准最好的评价指标R Square
  8. 无线路由器无线桥接(一)
  9. cafebabe.cc/nazo解答笔记
  10. java类定义格式_java定义类的格式是什么