- 背景:
公司產品有文檔轉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安裝包

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

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

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

修改一下快捷命令的名稱
[root@e31ee41ba5f0 RPMS]# mv /bin/libreoffice7.6 /bin/libreoffice
[root@e31ee41ba5f0 RPMS]# libreoffice

執行libreoffice命令有報錯,需要使用yum安裝libXinerama
[root@e31ee41ba5f0 RPMS]# yum -y install libXinerama

安裝完以后,再次執行
[root@e31ee41ba5f0 RPMS]# libreoffice

缺少cairo庫,繼續使用yum安裝
[root@e31ee41ba5f0 RPMS]# yum -y install cairo

安裝完成以后,再次執行libreoffice命令
[root@e31ee41ba5f0 RPMS]# libreoffice

繼續安裝缺少的庫:cups-libs,安裝完成以后,再次執行libreoffice命令
[root@e31ee41ba5f0 RPMS]# yum -y install cups-libs

[root@e31ee41ba5f0 RPMS]# libreoffice

解決了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

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

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

但是直接使用會報錯:

因為沒有配置相關的環境變量,所以在不破壞centos原有的python環境的情況下,使用LibreOffice自帶的python通過os模塊調用shell執行,就能完美解決這個問題

備注:
為了方便直接執行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
浙公網安備 33010602011771號