背景故事
这两天遇到一个大坑,客户要做office 文档在线预览功能,于是乎就要把office文档转换成pdf交给前端显示。
在某度找了一圈都说openOffice+jodconverter 可以搞定这个事情。代码倒是很好找,不过版本很多,各类jar包也很多,但尝试下来发现,转化效果很一般,复杂的excel也无法成功。有同事建议放到服务器上效果可能好些,于是就开始折腾在服务器上安装OpenOffice这个事情。网上各种找大神的博文,发现安装起来不是很顺畅,就写了这篇随笔,记录一下,遇到的问题,方便自己以后查看。
openOffice转转word文档效果不错,转Excel的话就真的效果不行,简单的Excel能处理处理,复杂的就很慢很慢,而且效果极差。再说,实际上微软自己的office软件转pdf的效果也很差。
操作步骤
http://www.openoffice.org/zh-cn/download/ 去官网链接下载linux版本的openOffice 以4.1.6 版本为例。
将压缩包上传至服务器上,并进行解压安装。
1
2
3
4
5tar -zxvf 对应的压缩包名字
cd 进入解压后的 /zh-cn/RPMS
yum localinstall *.rpm
cd desktop-integration
rpm -ivh openoffice4.1.6-redhat-menus-4.1.6-9789.noarch.rpm默认会安装在/opt目录下。
启动服务
1
2
3/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 临时启动
nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard & 后台启动端口号根据自己项目实际来确定。
后台启动会一直占用内存,据各路大神说 大概100M,我自己没测过具体值不清楚。
有的程序是需要预先启动openOffice 服务的,有的则在代码里自己启动服务。
.查看进程
1
netstat -lnp |grep 端口号
大概显示成这样就算启动完了。
1
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 14362/soffice.bin
问题
装完openoffice后启动服务可能会报错:no suitable windowing system found, exiting
从字面上的意思就是缺少一个窗口化的系统。所以就安装一个。
1 | yum groupinstall "X Window System" |