温馨提示×

centos liboffice怎么批量转

小樊
35
2026-10-18 00:49:45
栏目: 智能运维

在 CentOS 上用 LibreOffice 批量转换文件(如 docx→pdf、xls→csv 等),最常用、最可靠的方式是 命令行 + 脚本。下面按常见需求给你说明。


一、基本命令(单文件)

libreoffice --headless --convert-to pdf 文件名.docx

常用参数说明:

  • --headless:无界面运行
  • --convert-to:目标格式(pdf、csv、txt 等)
  • --outdir:输出目录

示例:

libreoffice --headless --convert-to pdf --outdir /data/pdf test.docx

二、批量转换(推荐方式)

1️⃣ 批量 Word → PDF

for f in *.docx; do
  libreoffice --headless --convert-to pdf "$f"
done

指定输出目录:

mkdir -p pdf
for f in *.docx; do
  libreoffice --headless --convert-to pdf --outdir pdf "$f"
done

2️⃣ 批量 Excel → CSV

for f in *.xlsx; do
  libreoffice --headless --convert-to csv "$f"
done

⚠️ 注意:

  • CSV 默认只导出第一个 sheet
  • 多 sheet 需借助宏或 Python

3️⃣ 递归子目录批量转换

find . -name "*.docx" -exec libreoffice --headless --convert-to pdf {} \;

或输出到统一目录:

find . -name "*.docx" -exec libreoffice --headless --convert-to pdf --outdir /data/pdf {} \;

三、常见问题 & 解决方案

❌ 1. 报错:no suitable windowing environment

确保使用:

libreoffice --headless

不要混用 soffice 和桌面环境


❌ 2. 转换卡死 / 不退出

加 --nofirststartwizard 和 --norestore:

libreoffice --headless --nofirststartwizard --norestore --convert-to pdf file.docx

❌ 3. 中文乱码

安装中文字体:

yum install -y wqy-zenhei-fonts

四、更高效的批量方案(进阶)

✅ 使用 Python + LibreOffice(适合大量文件)

import subprocess, glob

for f in glob.glob("*.docx"):
    subprocess.run([
        "libreoffice", "--headless",
        "--convert-to", "pdf", f
    ])

五、常见格式对照

源文件 目标格式 命令
docx pdf --convert-to pdf
xlsx csv --convert-to csv
pptx pdf --convert-to pdf
txt pdf --convert-to pdf

如果你能告诉我:

  • 源格式 & 目标格式
  • 是否递归目录
  • 是否要保留原文件名

我可以直接给你一条 可直接用的命令或脚本。

0 踩