最近項目有要word轉PDF,發(fā)現(xiàn)POI只支持2003word版本,docx4j只支持2007word以上版本(而且還不是很穩(wěn)定,上線后發(fā)現(xiàn)過幾天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、執(zhí)行 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.執(zhí)行 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、執(zhí)行命令 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監(jiān)聽可以看到8100端口已經監(jiān)聽,測試轉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文件,去系統(tǒng)里面的/usr/lib64 或者 /usr/lib 查看有沒有這個文件,如果有就copy到/opt/openoffice4/program/目錄里面,
賦予chmod 777 libXext.so.6 。如果沒有那么要安裝該包。
由于我的系統(tǒng)是64位,那么輸入yum install libXext.x86_64 ,如果是32位系統(tǒng)輸入: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" ,一路安裝完之后重啟系統(tǒng),在啟動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環(huán)境java寫文件名發(fā)現(xiàn)亂碼,下面的解決方法(window里面沒有問題)
修改/etc/sysconfig/i18n 這個文件
將LANG="zh_CN.UTF-8"修改為:
LANG="zh_CN.GBK"
保存并關閉,運行下面的命令使配置生效:
source /etc/sysconfig/i18n
查詢當前是否生效:locale