文档的转换成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. linux rsync同步 --delete参数 删除目标目录比源目录多余文件
  2. 面试必会系列 - 5.1 网络BIO、NIO、epoll,同步/异步模型、阻塞/非阻塞模型,你能分清吗?
  3. wps的流程图怎么导出_还在当灵魂画手?WPS教育版“绘图工具”助你做大牛—思维导图篇...
  4. 微型计算机接口部件的结构,微机接口课后习题解析.doc
  5. Linux 编译pe,如何在PE中将PE(可移植可执行文件)格式转换为ELF
  6. 丰巢拒绝放弃超时收费:不想用,可以别用
  7. 搭建AD域环境时出现错误,未能为域创建GPO 出现扩展错误解决办法
  8. 金蝶KIS专业版如何做盘点
  9. 学习|Android使用TTS语音合成
  10. 朋友国企干了5年java,居然不知道Dubbo是做什么呢?我真信了!
  11. python中如何判断词性_Python3自然语言处理——词性标注
  12. BZOJ2101 [Usaco2010 Dec]Treasure Chest 藏宝箱
  13. Golang-web网站入门-服务器入门
  14. 情人节主题的公众号图文排版怎样设计最走心?
  15. python 解压文件 已存在_python解压zip和rar文件问题以及解决方法
  16. go安装and新建go项目
  17. 利用Vivado进行MicroBlaze处理器应用教程
  18. python求股票收益率_python – 有没有办法自动获取许多股票的一般信息,如市盈率,收益率等等?...
  19. bailianoj 4124海贼王之伟大航路
  20. echarts之渐变色设置

热门文章

  1. 计算机cpu天体图,cpu性能天梯排行图 最新的2021年电脑cpu天梯图5月高清图
  2. pdf怎么压缩的小一点?
  3. 皮克公式:点阵中多边形的面积公式
  4. 【java】PageHelper.startPage
  5. oss新增bucket权限问题
  6. 乐吾乐le5le-Topology为智慧水务可视化赋能(一)
  7. easyx——c语言实时动画时钟
  8. iPhoneiPad越狱后的操作
  9. 【每日01】岛上书店
  10. 网络蠕虫和僵尸网络等恶意代码防范技术原理