java调用Apache OpenOffice实现TXT、HTML、OFFICE转PDF

来源:互联网 发布:生产工艺过程演示软件 编辑:程序博客网 时间:2024/06/05 19:12

做了一个对office、txt、html等文档转换PDF的小功能,使用的是Apache OpenOffice和java实现,在开发过程中遇到一些问题,一下做了一个总结。

1、乱码问题

网上有很多攻略,大致讲的是向JDK的编码和linux系统中的编码添加可支持的字体即可。

2、OpenOfficeDocumentConverter和StreamOpenOfficeDocumentConverter的区别

(1)最终生成文件权限问题

当Apache OpenOffice服务和java程序部署在同一台服务上时,可以使用OpenOfficeDocumentConverter,但是同时需要注意,使用该类转换的PDF文件用户权限为Apache OpenOffice的启动用户权限。例如,java服务使用较低的权限用户worker启动,而Apache OpenOffice使用root用户启动,那么生成的PDF文件也为root,那么java程序如果对后续生成的PDF文件进行读写等操作时,由于java服务为worker权限,会造成读取不到文件流的问题。而使用StreamOpenOfficeDocumentConverter,是由OpenOffice生成完PDF后,把PDF的流传给java服务,由java服务生成的PDF文件,所以不会产生用户权限的问题

(2)性能问题

OpenOfficeDocumentConverter直接由OpenOffice生成PDF文件,而StreamOpenOfficeDocumentConverter是由OpenOffice把PDF流回传给java服务,有java服务生成。所以OpenOfficeDocumentConverter在性能上更快。但是OpenOfficeDocumentConverter的问题是,不能实现java服务和OpenOffice的高可用性(因为两个服务部署在同一台物理机上)

(3)实现java服务与OpenOffice服务的高可用部署

java服务与OpenOffice服务在同一台物理机时,可以使用OpenOfficeDocumentConverter,因为他转换的更快。如果两个服务不在同一台物理机上,可以使用StreamOpenOfficeDocumentConverter类。

3、对新版本office的支持,如.docx .xlsx .pptx等

目前maven公网仓库中,没有jodconverter-2.2.2.jar,只有jodconverter-2.2.1.jar.而支持新版office和html转换格式的支持,需要2.2.2版本,这个需要自己去下载,并维护到maven私服上。步骤如下:

(1)下载

https://sourceforge.net/projects/jodconverter/?source=typ_redirect 去这个地址下载即可。

(2)上传maven私服

通过步骤1下载下来的是一个.zip的包,解压后在jodconverter-2.2.2\lib目录下可以看到,如下图:

我们可以看到jodconverter-2.2.2.jar包,把这个jar包上传maven私服即可。而这个包里面含有对新版office(.docx .xlsx .pptx)的支持,HTML的支持等。对于juh-3.0.1.jar、ridl-3.0.1.jar、unoil-3.0.1.jar这三个包在maven公网仓库中是可以查到的,所以直接在pom.xml中添加即可。





阅读全文
0 0
原创粉丝点击