Linux下Libreoffice离线安装与Python使用示例详解
文章目录
(一)libreoffice 安装
1. 下载 libreoffice 安装包
https://downloadarchive.documentfoundation.org/libreoffice/old/
ubuntu 系统选择 deb 系列
如果 ubuntu 版本不高的尽量选择低版本的 libreoffice,如 7.x
2. 将安装包放到服务器上
我是用 XFTP 直接上传
3. 解压并安装
解压
tar -xzvf LibreOffice_7.6.6.3_Linux_x86-64_deb.tar.gz
进入解压后的目录
cd /your_path/LibreOffice_7.6.6.3_Linux_x86-64_deb/DEBS
安装
sudo dpkg -i *.deb
4. 验证是否安装成功
(1)执行语句,如果看到类似 libreoffice7.6 或 libreoffice7.6-writer 等包,说明安装成功。
dpkg -l | grep libreoffice
(2)安装后的软件会在 /opt/libreoffice7.6 目录下,program下有可执行文件 soffice
(3)手动运行 soffice 文件,如果能输出版本信息,说明正确安装
/opt/libreoffice7.6/program/soffice --version
(4)无图形方式运行
/opt/libreoffice7.6/program/soffice --headless
5. 报错处理
(1)缺少包 libXinerama.so.1,如:
(base) root@xxx:/opt/libreoffice7.6/program# /opt/libreoffice7.6/program/soffice --version
/opt/libreoffice7.6/program/oosplash:
error while loading shared libraries: libXinerama.so.1:
cannot open shared object file: No such file or directory
解决办法:安装libXinerama.so.1
sudo apt-get update
sudo apt-get install libxinerama1
缺啥下啥,因此顺便安装其它可能的图形库
sudo apt-get install libx11-6 libxext6 libxrender1 libxcb1 libxau6 libxdmcp6 libgl1
(2)缺少包 libssl3.so
继续下
sudo apt-get update
sudo apt-get install libssl3
当然,这个时候可能会遇到下载失败的问题,换个其它版本
sudo apt install libssl1.1
或者下载以下依赖
sudo apt-get install libnspr4 libnss3
安装完成后看是否存在
ldconfig -p | grep libssl3
(3)缺少 java 环境
报错示例:
javaldx: Could not find a Java Runtime Environment!
Warning: failed to read path from javaldx
解决办法:缺啥下啥
sudo apt update
sudo apt install openjdk-11-jre
看是否下载成功
java -version
(4)剩下的缺啥问大模型
6. 加入系统路径
(1)方法一:修改 ~/.bashrc 文件
在文件末尾加入语句
vi ~/.bashrc
export PATH=$PATH:/opt/libreoffice7.6/program
重启一下
source ~/.bashrc
(2)方法二:在运行代码前执行语句(只在当前shell生效)
export PATH=$PATH:/opt/libreoffice7.6/program
(3)方法三:在python代码中修改运行时的command指令
command = [
'/opt/libreoffice7.6/program/soffice', '--headless', '--nologo', '--norestore', '--nofirststartwizard',
'--convert-to', 'pdf',
'--outdir', os.path.dirname(output_file), input_file
]
(二)python 使用示例
1. linux环境安装中文字体包
如果需要转换中文文档,需要安装中文字体包
(1)在线安装
sudo apt-get update
sudo apt-get install fonts-wqy-microhei fonts-wqy-zenhei
(2)离线安装
先在可联网的其它机器上安装 deb 文件包
wget http://archive.ubuntu.com/ubuntu/pool/universe/f/fonts-wqy-zenhei/fonts-wqy-zenhei_0.9.45-7ubuntu1_all.deb
wget http://archive.ubuntu.com/ubuntu/pool/universe/f/fonts-wqy-microhei/fonts-wqy-microhei_0.2.0-beta-3_all.deb
复制到离线机器,使用 dpkg 命令安装
sudo dpkg -i fonts-wqy-zenhei_0.9.45-7ubuntu1_all.deb
sudo dpkg -i fonts-wqy-microhei_0.2.0-beta-3_all.deb
如果缺少依赖使用以下语句修复
sudo apt-get install -f
(3)查看是否安装
检查是否安装了中文字体
fc-list :lang=zh
2. python 使用示例
import os
import subprocess
import sys
sys.path.append('/opt/libreoffice7.6/program')
def convert_word_to_pdf(input_file, output_file=None):
# 检查文件是否存在
if not os.path.isfile(input_file):
raise FileNotFoundError(f"The file {input_file} does not exist.")
# 设置默认输出文件名
if output_file is None:
output_file = os.path.splitext(input_file)[0] + '.pdf'
print(f"Output file: {output_file}")
# LibreOffice 命令
command = [
'libreoffice', '--headless', '--nologo', '--norestore', '--nofirststartwizard',
'--convert-to', 'pdf',
'--outdir', os.path.dirname(output_file), input_file
]
# command = [
# '指定你的执行文件路径', '--headless', '--convert-to', 'pdf',
# '--outdir', os.path.dirname(output_file), input_file
# ]
# 设置中文环境变量
env = os.environ.copy()
env['LANG'] = 'zh_CN.UTF-8'
env['LC_ALL'] = 'zh_CN.UTF-8'
try:
# 执行转换
subprocess.run(command, check=True)
print(f"File successfully converted to {output_file}")
except subprocess.CalledProcessError as e:
print(f"Error during conversion: {e}")
if __name__ == '__main__':
input_word_file = 'input.docx' # 输入的 Word 文件路径
output_pdf_file = 'output.pdf' # 输出的 PDF 文件路径
convert_word_to_pdf(input_word_file, output_pdf_file)
command tips
如果libreoffice是在线下载的,可以直接写 “libreoffice”
如果是离线下载的,需要修改为 “/opt/libreoffice7.6/program/soffice”
作者:this_JasMine