监听模式启动libreoffice/openoffice服务
使用JODConverter转换文档时,需要连接到正在运行的OpenOffice并执行API调用,这需要openoffice创建一个UNO监听器并运行于监听模式下。
下面记叙openoffice以TCP监听模式启动作为后台服务的配置方法。
安装
当前的debian testing官方源已经不再提供openoffice,因为这货被libreoffice替代了。去ooo官方下载Linux 64-bit(x86-64)(DEB)版本,下载的为tar.gz包,解压后进入en_US/DEBS目录,安装此目录下的所有deb包。
1 | # dpkg -i *.deb |
ooo被安装在了/opt/openoffice4目录,可执行程序soffice位于/opt/openoffice4/program目录下。
监听模式启动ooo
1 | $ unset DISPLAY |
这样ooo在本地所有网络接口地址的TCP 8100端口上启动监听服务。如果只在本地回环地址监听,可以设置host为127.0.0.1或localhost。
服务模式启动时不要设置DISPLAY变量。
libreoffice
ooo自从被收入o记囊中,是一天不如一天了,最近又传闻因为没有活跃的开发者要项目要关闭了。ooo当前最新的4.1.2还是2015年10月发布了,这货是没救了。
libreoffice则开发活跃,如日中天,开源社区真不是哪家公司可以一手遮天的,再大的公司也不行。
其实本篇所述的监听模式启动ooo是完全适用于libreoffice的,因此不必大费周章的安装openoffice,直接官方源安装libreoffice-common和libreoffice-writer即可。soffice bin存在于libreoffice-common包中,同时还需要安装jdk和libreoffice-java-common包。
使用libreoffice时,命令行参数使用双中线开头,不然会有deprecated提示:
1 | Warning: -nologo is deprecated. Use --nologo instead. |
注:ooo是openoffice.org曾经的简称,不知道现在为何官方不再使用了。
为libreoffice设置systemd服务
编辑libreoffice.service单元文件:
1 | \[Unit\] |
将编辑好的文件拷贝到/lib/systemd/system文件夹,然后启用该unit文件,最后启动libreoffice服务。
1 | $ sudo cp libreoffice.service /lib/systemd/system/ |
可以看到libreoffice已经启用了后台服务,并在8100端口进行监听。
update(17/10/2019):
debian buster系统:
只安装libreoffice-common和libreoffice-writer包即可,tomcat9的系统用户为tomcat,权限问题参考权限导致soffice(libreoffice/openoffice)无法运行的问题
References:
[1]systemd service script for libreoffice/openoffice
[2]Libreoffice LSB init script
[3]Starting Multiple OpenOffice Instances
===
[erq]