linux下openoffice的安装部署

一、背景故事

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

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

二、操作步骤

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

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

 

1  tar -zxvf  对应的压缩包名字

2  cd 进入解压后的 /zh-cn/RPMS

3  yum localinstall *.rpm

4  cd desktop-integration

5  rpm -ivh openoffice4.1.5-redhat-menus-4.1.5-9789.noarch.rpm

 

 默认会安装在/opt目录下。

3.启动服务 

1 /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard  临时启动

2 nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &  后台启动

 

  端口号根据自己项目实际来确定。

  后台启动会一直占用内存,据各路大神说 大概100M,我自己没测过具体值不清楚。

  有的程序是需要预先启动openOffice 服务的,有的则在代码里自己启动服务。

  4.查看进程

netstat -lnp |grep 端口号

  大概显示成这样就算启动完了。

tcp  0  0 127.0.0.1:8100  0.0.0.0:*   LISTEN      14362/soffice.bin

三、启动报错问题

1.装完临时启动看下,可能会报错:

error while loading shared libraries: libXext.so.6: cannot open shared object file: No such file or directory

执行命令:yum -y install libXext

  2.装完openoffice后启动服务可能会报错:

no suitable windowing system found, exiting

  从字面上的意思就是缺少一个窗口化的系统

执行命令:yum groupinstall "X Window System"

四、执行文件转换后的pdf出现中文未能正常显示问题

  1.  /usr/java/jdk1.8.0_91/jre/lib/fonts下新建路径:fallback

$  cd $JAVA_HOME/jre/lib/fonts/

$  mkdir fallback

 2.  上传字体到fallback文件夹

将字体:simhei.ttf 黑体、simsun.ttc 宋体(windows下找下)

上传至$JAVA_HOME/jre/lib/fonts/fallback路径下。

  1.  查看系统字体文件路径

$  cat /etc/fonts/fonts.conf

<!-- Font directory list -->

<dir>/usr/share/fonts</dir>

<dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/TTF</dir> <dir>/usr/local/share/fonts</dir>

<dir>~/.fonts</dir>

  4.   拷贝字体

将 /usr/java/jdk1.8.0_91/jre/lib/fonts的全部内容

拷贝到上一步查看的路径下, 如上一步我的字体路径为:/usr/share/fonts

  5.    更新缓存

执行  fc-cache

  6.   杀掉openoffice进程

$  ps -ef | grep openoffice

root     14385 14366  0 15:27 pts/0    00:00:00 /opt/openoffice4/program/soffice.bin -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard

root     22031  2327  0 16:34 pts/0    00:00:00 grep openoffice

$  kill -9 14385

 7.  重启后台运行openoffice

$  soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章