温馨提示×

Ubuntu下LibOffice文档转换技巧

小樊
42
2026-01-01 05:31:50
栏目: 智能运维

Ubuntu下 LibreOffice 文档转换技巧

一 安装与准备

  • Ubuntu 上安装 LibreOffice:sudo apt update && sudo apt install libreoffice。如需命令行工具,建议同时安装 libreoffice-common。安装完成后可直接使用命令行工具 sofficelibreoffice 进行转换。为获得更稳定的批量/服务化转换,可启动一个监听实例:soffice --accept=“socket,host=127.0.0.1,port=2002;urp;” --nofirststartwizard。若需更新 DOCX 的目录等字段,可安装 unoconv(基于 LibreOffice UNO 的命令行封装):sudo apt install unoconv

二 常用转换命令

  • 基本用法:使用 --headless 无界面模式,–convert-to 指定目标格式,–outdir 指定输出目录(目录需事先存在)。示例:
    • DOCX 转 PDF:libreoffice --headless --convert-to pdf --outdir /path/out your.docx
    • XLSX 转 PDF:libreoffice --headless --convert-to pdf --outdir /path/out your.xlsx
    • PPTX 转 PDF:libreoffice --headless --convert-to pdf --outdir /path/out your.pptx
  • 指定筛选器与导出参数:可按“格式:筛选器:JSON参数”的形式精确控制导出。示例(导出 PDF 的第 2–3 页):libreoffice --convert-to ‘pdf:writer_pdf_Export:{“PageRange”:{“type”:“string”,“value”:“2-3”}}’ examples1.pptx
  • 其他格式互转:LibreOffice 也支持将 EMF/WMF 等矢量图转换为 PNG/SVG/WEBP 等通用格式,例如:libreoffice --headless --convert-to png image3.emf。

三 批量转换与服务化

  • 批量转换脚本(保留原文件名与目录结构):
    • for f in /data/docs/*.docx; do libreoffice --headless --convert-to pdf --outdir “$(dirname “$f”)” “$f”; done
  • 服务化与并发控制:
    • 先启动一个长期监听的 LibreOffice 实例(端口 2002),再并发调用转换,可显著减少启动开销并提升吞吐。
    • 如需在转换链路中进一步处理(如 PDF→HTML 预览),可结合 pdf2htmlex:先由 LibreOffice 转为 PDF,再用 pdf2htmlex 生成可网页预览的 HTML(示例:pdf2htmlEX --zoom 1.3 input.pdf)。

四 常见问题与解决

  • 中文乱码与字体缺失:将 Windows 字体(如 simsun、msyh 等)复制到 /usr/share/fonts,执行 fc-cache -fv 刷新字体缓存,再重启 LibreOffice 转换服务。
  • 输出目录不存在:–outdir 指定的目录必须事先存在,否则转换会失败或无输出。
  • 页眉页脚/页码/目录未更新:用 unoconv 做一次“同格式再导出”即可触发字段更新,例如:unoconv -f docx -o updated.docx source.docx(避免直接覆盖源文件)。
  • 导出页数控制:通过筛选器参数精确导出页码范围,如 ‘pdf:writer_pdf_Export:{“PageRange”:{“type”:“string”,“value”:“2-3”}}’。
  • 转换质量与兼容性:不同 LibreOffice 版本/筛选器对复杂排版支持有差异,生产环境建议固定版本、统一模板并做回归验证。

0