温馨提示×

centos liboffice文件转换方法

小樊
40
2025-11-22 03:50:21
栏目: 智能运维

CentOS 下使用 LibreOffice 进行文件转换

一 安装 LibreOffice

  • 从官网下载 Linux x86-64 RPM 包(如:LibreOffice_7.5.1_Linux_x86-64_rpm.tar.gz),上传至服务器后解压并安装:
    • 解压:tar -xvf LibreOffice_7.5.1_Linux_x86-64_rpm.tar.gz
    • 安装:cd LibreOffice_7.5.1_Linux_x86-64_rpm/RPMS && yum localinstall *.rpm
  • 安装完成后,二进制通常位于:/opt/libreoffice7.5/program/soffice。如需全局使用,可将 /opt/libreoffice7.5/program 加入 PATH

二 命令行转换

  • 常用命令模板:
    • 单文件:/opt/libreoffice7.5/program/soffice --headless --convert-to <目标格式>:<过滤器> <源文件> --outdir <输出目录>
    • 批量:/opt/libreoffice7.5/program/soffice --headless --convert-to pdf *.docx --outdir /data/out
  • 示例
    • Word 转 PDF:/opt/libreoffice7.5/program/soffice --headless --convert-to pdf:writer_pdf_Export /data/in.docx --outdir /data/out
    • Excel 转 CSV:/opt/libreoffice7.5/program/soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)" /data/in.xlsx --outdir /data/out
    • PPT 转 JPG:/opt/libreoffice7.5/program/soffice --headless --convert-to jpg /data/in.pptx --outdir /data/out
  • 常用开关
    • --headless:无界面运行(服务器必备)
    • --nologo--nofirststartwizard--norestore:静默、跳过向导、禁止恢复会话
    • 过滤器用于精确控制导出行为,如 writer_pdf_Export / calc_pdf_Export / impress_pdf_Export

三 以服务方式运行与并发转换

  • 启动监听服务(建议常驻后台,提升并发与稳定性):
    • nohup /opt/libreoffice7.5/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
    • 如需远程调用,可将 host 改为 0.0.0.0 并开放防火墙端口 8100
  • 查看与关闭
    • 查看进程:ps -ef | grep soffice
    • 结束进程:kill -9 <PID>
  • 适用场景:多任务/多实例调用、与 JodConverter 等组件集成。

四 Java 集成 JodConverter 示例

  • Maven 依赖(示例版本:4.2.2
    • groupId:org.jodconverter;artifacts:jodconverter-core / jodconverter-local / jodconverter-spring-boot-starter
  • 代码示例(Local 模式)
    • DocumentConverter converter = LocalConverter.builder().officeHome("/opt/libreoffice7.5").build();
    • converter.convert(new File("in.docx")).to(new File("out.pdf")).execute();
  • 服务方式(连接端口 8100 的 LibreOffice 监听)
    • 配置 office-home 与端口后使用 LocalConverterRemoteConverter 进行转换。

五 常见问题与优化

  • 中文乱码
    • 安装中文字体(如 wqy-zenhei、wqy-microhei 等)到 /usr/share/fonts/,执行 fc-cache -fv 刷新字体缓存,再重启 LibreOffice 服务/转换。
  • X11 报错
    • 无头环境务必使用 --headless,不要依赖图形界面;如出现 “X11 error: Can’t open display”,说明以 GUI 方式误启动,请改用无头参数。
  • 并发与稳定性
    • 尽量复用 LibreOffice 服务进程(监听 8100),避免频繁启动/退出导致句柄泄漏或端口占用;必要时按业务拆分多个监听端口与实例。
  • 批量与过滤器
    • 批量转换可用通配符(如 *.docx);导出到 CSV 等格式时显式指定过滤器以避免格式错配(如 "Text - txt - csv (StarCalc)")。

0