背景故事

这两天遇到一个大坑,客户要做office 文档在线预览功能,于是乎就要把office文档转换成pdf交给前端显示。

  在某度找了一圈都说openOffice+jodconverter 可以搞定这个事情。代码倒是很好找,不过版本很多,各类jar包也很多,但尝试下来发现,转化效果很一般,复杂的excel也无法成功。有同事建议放到服务器上效果可能好些,于是就开始折腾在服务器上安装OpenOffice这个事情。网上各种找大神的博文,发现安装起来不是很顺畅,就写了这篇随笔,记录一下,遇到的问题,方便自己以后查看。

​ openOffice转转word文档效果不错,转Excel的话就真的效果不行,简单的Excel能处理处理,复杂的就很慢很慢,而且效果极差。再说,实际上微软自己的office软件转pdf的效果也很差。

操作步骤

  1. http://www.openoffice.org/zh-cn/download/ 去官网链接下载linux版本的openOffice 以4.1.6 版本为例。

  2. 将压缩包上传至服务器上,并进行解压安装。

    1
    2
    3
    4
    5
    tar -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目录下。

  3. 启动服务

    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 服务的,有的则在代码里自己启动服务。

  4. .查看进程

    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"