最近项目有要word转PDF,发现POI只支持2003word版本,docx4j只支持2007word以上版本(而且还不是很稳定,上线后发现过几天word转pdf有问题,重启tomcat服务后又正常了)。
打算换另外的技术试试:openoffice + jodconverter
一、openoffice 安装
先下载linux下的安装包
http://www.openoffice.org/
http://sourceforge.net/projects/jodconverter/files/
1、最新版本是Apache_OpenOffice_4.1.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
tar -xzvf Apache_OpenOffice_4.1.1_Linux_x86-64_install-rpm_zh-CN.tar.gz
解压后的目录是zh-CN,里面有RPMS 、 readmes、licenses。
2、进入RPMS目录
3、执行 rpm –ivh *rpm(安装所有rpm文件)
4、进入到desktop-integration目录,选择安装相关的套件,我选择的是redhat
rpm -ivh openoffice4.1.1-redhat-menus-4.1.1-9775.noarch.rpm
这时openOffice己经安装完成,默认会安装在/opt下
二、启动openOffice服务
1.进入opt下的openofiice4目录:cd /opt/openoffice4
2.进入program目录
3.执行 soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
4.完成启动
如果启动正常会有 tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN
6.windows 查看端口是否启动命令netstat -ap tcp
windows启动命令:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard
windows启动命令里面短连接号后面不带空格“ -nofirststartwizard ”
linux启动命令:soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
三、安装启动完成后测试
1、 下载jodconverter-2.2.2.zip,将其解压到文件加下,
2、将test.doc拷贝到lib文件夹下
3、执行命令 java -jar jodconverter-cli-2.2.2.jar test.doc test.pdf
如果生成pdf ,则openoffice安装启动成功
四、把启动命令设置linux服务器启动的时候默认加载
[root@okidea lib]# cat/etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
#route add default gw 192.168.50.1
soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
touch /var/lock/subsys/local
重启服务器,netstat -tln监听可以看到8100端口已经监听,测试转pdf也正常。另外设置可参考http://www.cnblogs.com/nerxious/archive/2013/01/18/2866548.html
。个人感觉这样设置很简单。
--------安装遇到的问题和解决------原则是缺什么补什么包-----------------------
包的下载网站:http://pkgs.org/#centos-6
1、/opt/openoffice4/program/soffice.bin: error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory
找不到libXext.so.6文件,去系统里面的/usr/lib64 或者 /usr/lib 查看有没有这个文件,如果有就copy到/opt/openoffice4/program/目录里面,
赋予chmod 777 libXext.so.6 。如果没有那么要安装该包。
由于我的系统是64位,那么输入yum install libXext.x86_64 ,如果是32位系统输入:yum install libXext.i686 。安装完成后去那两个目录找libXext.so.6复制到
/opt/openoffice4/program/目录里面,赋予chmod 777 libXext.so.6 。
2、 /opt/openoffice4/program/soffice.bin: error while loading shared libraries: libfreetype.so.6: cannot open shared object file: No such file or directory
找不到libfreetype.so.6文件,同上输入:yum install libfreetype.i686,安装完之后去那两个目录找libXext.so.6复制到/opt/openoffice4/program/目录里面,赋予权限。
3、报问题:no suitable windowing system found, exiting.
输入安装:yum groupinstall "X Window System" ,一路安装完之后重启系统,在启动openoffice服务看看。
使用yum groupinstall
先用yum grouplist 看需要装那些包,一般x window gnome kde三个
Centos5和6改变比较大,需要注意命令是不一样的
Centos5.x 系列
yum groupinstall "GNOME Desktop Environment" "X Window System"
Centos 6.x 系列
yum groupinstall "X Window System" "Desktop Platform"
五、swftools安装
下载http://www.swftools.org/download.html
1、主要参考http://blog.csdn.net/luka2008/article/details/38664731
和 http://blog.csdn.net/zhizaibide1987/article/details/28901511
先安装依赖包
# yum -y install giflib-devel libjpeg-develfreetype-devel t1lib-devel zlib
# tar xfswftools-2013-04-09-1007.tar.gz
# cdswftools-2013-04-09-1007
# ./configure
# make
# make install
2、查询安装成功后的which pdf2swf目录。
六、代码可以参考
http://my.oschina.net/UpBoy/blog/220661
七、linux环境java写文件名发现乱码,下面的解决方法(window里面没有问题)
修改/etc/sysconfig/i18n 这个文件
将LANG="zh_CN.UTF-8"修改为:
LANG="zh_CN.GBK"
保存并关闭,运行下面的命令使配置生效:
source /etc/sysconfig/i18n
查询当前是否生效:locale