Linux下Libreoffice离线安装与Python使用示例详解

文章目录

  • (一)libreoffice 安装
  • 1. 下载 libreoffice 安装包
  • 2. 将安装包放到服务器上
  • 3. 解压并安装
  • 4. 验证是否安装成功
  • 5. 报错处理
  • (1)缺少包 libXinerama.so.1,如:
  • (2)缺少包 libssl3.so
  • (3)缺少 java 环境
  • (4)剩下的缺啥问大模型
  • 6. 加入系统路径
  • (1)方法一:修改 ~/.bashrc 文件
  • (2)方法二:在运行代码前执行语句(只在当前shell生效)
  • (3)方法三:在python代码中修改运行时的command指令
  • (二)python 使用示例
  • 1. linux环境安装中文字体包
  • (1)在线安装
  • (2)离线安装
  • (3)查看是否安装
  • 2. 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

    物联沃分享整理
    物联沃-IOTWORD物联网 » Linux下Libreoffice离线安装与Python使用示例详解

    发表回复