1. 首先下载rpm包
下载rpm包(官网或者其他网站都可以)但是要注意版本,我建议是4.1.2版本以上,因为以前的版本不支持含有中文的文件名的文档转pdf;
我下载的是这个Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_zh-CN.tar.gz
下载到服务器的路径(自己决定)下;
2. 解压
将下载的openoffice解压
[root@tmp]# tar -zxvf Apache_OpenOffice_4.1.3_Linux_x86-64_install-rpm_zh-CN.tar.gz
3. 安装rpm
解压后生成文件夹zh-CN,进到RPMS目录下
[root@tmp]# cd zh-CN/RPMS
[root@RPMS]# yum localinstall *.rpm
# 或者
[root@RPMS]# yum -ivh *rpm
4. 安装桌面菜单
再装RPMS/desktop-integration目录下的openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm(根据系统版本类型自行匹配,最小化安装可以省略):
[root@RPMS]# cd desktop-integration
[root@desktop-integration]# yum localinstall openoffice4.1.3-redhat-menus-4.1.3-9782.noarch.rpm
5. 安装完成直接启动Openoffice服务:
默认安装位置为/opt下
临时启动
[root@desktop-integration]# /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
添加到系统开机启动
[root@desktop-integration]# vi /etc/rc.local
# 添加
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
# 提升权限(如果不能开机启动执行)
[root@desktop-integration]# chmod +x /etc/rc.d/rc.local
6. 查看服务是否启动(端口8100是否被soffice占用)
[root@desktop-integration]# netstat -nltp|grep 8100
# 显示结果:
tcp 0 0 127.0.0.1:8100 0.0.0.0:* LISTEN 19501/soffice.bin
7. 测试
- 下载jodconverter-2.2.2.zip,将其解压到文件加下,
- 将test.doc拷贝到lib文件夹下
- 执行命令 Java -jar jodconverter-cli-2.2.2.jar test.doc test.pdf
8.中途问题解决
- 若出现以下错误:(这个问题其实有点恶心)
/usr/lib64/libreoffice/program/soffice.bin X11 error: Can't open display:
Set DISPLAY environment variable, use -display option
or check permissions of your X-Server
(See "man X" resp. "man xhost" for details)
执行:export DISPLAY=:0.0 再执行上述启动命令即可(如果没用)
看报错信息意思:
libreoffice显然是试图请求X服务(你似乎表明你没有运行
所以报错)或者那不是正确的标志,或者它不像你期望的那样工作(并且仍然需要X服务来工作)
那可能就是缺少这个服务,那就来添加
[root@centos]# yum install openoffice.org-headless
安装完成后,再去启动;
备注说明(如果再此过程中,误删了openoffice4文件夹,不要着急,这时候你在很据以上步骤是没用的,这个时候只需要将之前安装的包 reinstall 覆盖安装一下就可以了,就会重新找到openoffice启动包)
- 在安装openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm 的时候有一个报错:
如:
翻译过来就是现有的安装包与系统中含有的包冲突(原因可能是服务器以前安装过openoffice),看报错应该能明白意思,出现冲突的时候,可以用 yum的命令将冲突的包(原有的包)删掉,yum erase 包名 意思就是 Remove a package or packages from your system;
(在如上报错中,那直接将冲突的包 libreoffice-core-a:4.2.8.2-11.el6.x86_64 删除,然后在
重新安装openoffice4.1.2-redhat-menus-4.1.2-9782.noarch.rpm即可)
- 转换乱码问题
此时可能是linux下的jre没有相应的中文字体的问题
-
步骤1:创建路径。
/usr/java/jdk1.8.0_91/jre/lib/fonts下新建路径:fallback (java jdk目录下 echo $JAVA_HOME 查看目录 或者 find)
-
步骤2:上传字体。
将字体:simhei.ttf 黑体、simsun.ttc 宋体(windows下通过everything找下)上传至/usr/java/jdk1.8.0_91/jre/lib/fonts/fallback路径下.
-
步骤3:查看系统字体文件路径。
查看方案:
[root@centos]# 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的全部内容,拷贝到步骤3查看的路径下,
我的字体路径为:/usr/share/fonts
-
步骤5:更新缓存
执行命令:
[root@centos]# fc-cache
-
步骤6:kill掉openoffice进程
[root@80ec6 fonts]# ps -ef | grep openoffice root 3045 3031 0 06:19 pts/1 00:00:03 /opt/openoffice4/program/soffice.bin -headless -accept=socket,host=127.0.0.1,port=8100;urp; -nofirststartwizard 执行kill: kill -9 3045 # 注:如果kill不生效 请 执行 ps -ef 找到pid 在kill 掉
-
步骤7:重启后台运行openoffice
[root@a3cf78780ec6 openoffice4]# soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
-
步骤8:完成格式转换
[root@centos]# java -jar /opt/jodconverter-2.2.2/lib/jodconverter-cli-2.2.2.jar /opt/test.ppt /opt/test.pdf