CentOS7安装LibreOffice+unosever

Posted on 2024-07-02 16:06  YuAnDlb  阅读(205)  评论(0编辑  收藏  举报
  • 背景:
    公司产品有文档转pdf的需求,但是centos7下面默认的是python2.7,在网上找了很多教程,都不太理想,于是自己琢磨了一下,发现LibreOffice自带的python环境刚刚好,但是没有LibreOffice的侦听器模式unoserver,而且这个python环境没有自带pip工具,于是便有了这篇随笔

笔记:

我是在centos的docker里面操作的,直接在宿主机也一样
[root@e31ee41ba5f0 /]# yum -y install wget
[root@e31ee41ba5f0 /]# cd /opt
[root@e31ee41ba5f0 opt]# wget https://www.libreoffice.org/donate/dl/rpm-x86_64/7.6.7/zh-CN/LibreOffice_7.6.7_Linux_x86-64_rpm.tar.gz

下载LibreOffice的rpm安装包
image

[root@e31ee41ba5f0 opt]# tar -xf LibreOffice_7.6.7_Linux_x86-64_rpm.tar.gz

image

[root@e31ee41ba5f0 RPMS]# cd LibreOffice_7.6.7.2_Linux_x86-64_rpm/RPMS/
[root@e31ee41ba5f0 RPMS]# ls

image

[root@e31ee41ba5f0 RPMS]# yum -y install ./*.rpm

image

修改一下快捷命令的名称

[root@e31ee41ba5f0 RPMS]# mv /bin/libreoffice7.6 /bin/libreoffice
[root@e31ee41ba5f0 RPMS]# libreoffice

image

执行libreoffice命令有报错,需要使用yum安装libXinerama

[root@e31ee41ba5f0 RPMS]# yum -y install libXinerama

image

安装完以后,再次执行

[root@e31ee41ba5f0 RPMS]# libreoffice

image

缺少cairo库,继续使用yum安装

[root@e31ee41ba5f0 RPMS]# yum -y install cairo

image

安装完成以后,再次执行libreoffice命令

[root@e31ee41ba5f0 RPMS]# libreoffice

image

继续安装缺少的库:cups-libs,安装完成以后,再次执行libreoffice命令

[root@e31ee41ba5f0 RPMS]# yum -y install cups-libs

image

[root@e31ee41ba5f0 RPMS]# libreoffice

image

解决了libreoffice命令的执行报错以后,

进入program目录,安装pip命令

[root@e31ee41ba5f0 RPMS]# cd /opt/libreoffice7.6/program
[root@e31ee41ba5f0 program]# wget https://bootstrap.pypa.io/get-pip.py
[root@e31ee41ba5f0 program]# ./python get-pip.py

image

安装unoserver

[root@e31ee41ba5f0 program]# ./python -m pip install unoserver

image

安装好的python包都在program/python-core-3.8.19/bin目录下面

image

但是直接使用会报错:

image

因为没有配置相关的环境变量,所以在不破坏centos原有的python环境的情况下,使用LibreOffice自带的python通过os模块调用shell执行,就能完美解决这个问题

image


备注:

为了方便直接执行unoserver命令,写了一个py文件,命名为unoserver,并且直接放到了/usr/bin目录下

#!/opt/libreoffice7.6/program/python
import os

os.system("nohup /opt/libreoffice7.6/program/python-core-3.8.19/bin/unoserver >/log/uno.log &")

同理unoconvert也写了一个py文件,命名为unoconvert放到了/usr/bin目录下

#!/opt/libreoffice7.6/program/python
import os
import sys

args = " ".join(sys.argv[1:])  # 将参数列表转换为空格分隔的字符串

command = f"/opt/libreoffice7.6/program/python-core-3.8.19/bin/unoconvert {args}"
os.system(command)

清理一下垃圾文件

[root@e31ee41ba5f0 program]# rm -rf /opt/LibreOffice_7.6.7.2_Linux_x86-64_rpm /opt/LibreOffice_7.6.7_Linux_x86-64_rpm.tar.gz

Copyright © 2024 YuAnDlb
Powered by .NET 9.0 on Kubernetes