CentOS 下 LibreOffice 文档转换失败的排查与修复
一 快速自检与最小复现
sudo yum install -y libreoffice libreoffice-headless libreoffice-writersudo yum install -y libreoffice-calc libreoffice-impresslibreoffice --headless --convert-to pdf /path/file.docx --outdir /path/out/usr/bin/libreoffice7.3 --headless --convert-to pdf ...二 常见根因与对应修复
sudo yum remove --purge libreoffice && sudo yum install libreoffice libreoffice-headless libreoffice-writer libreoffice-calc libreoffice-impress。cd /usr/share/fonts/xpfonts && sudo chmod urwx * && sudo mkfontscale && sudo mkfontdir && sudo fc-cache -fvsudo yum install -y fontconfig ttmkfdir;可用 fc-list 检查已安装字体。~/.config/libreoffice/4/user/log/三 稳定转换的最佳实践
libreoffice --headless --convert-to pdf:writer_pdf_Export input.docx --outdir out/calc_pdf_Export / impress_pdf_Export。--env:UserInstallation=...)。四 一键排查脚本示例
#!/usr/bin/env bash
set -Eeuo pipefail
DOC="$1"
OUTDIR="${2:-./pdf_out}"
LO_BIN="${3:-/usr/bin/libreoffice7.3}"
if [[ ! -f "$DOC" ]]; then
echo "源文件不存在: $DOC" >&2
exit 1
fi
mkdir -p "$OUTDIR"
echo "[$(date)] 开始转换: $DOC -> $OUTDIR"
if "$LO_BIN" --headless --convert-to pdf:writer_pdf_Export "$DOC" --outdir "$OUTDIR"; then
echo "[$(date)] 转换成功: $OUTDIR/$(basename "$DOC" .*).pdf"
else
echo "[$(date)] 转换失败,退出码: $?" >&2
# 简单权限/空间快速自检
ls -ld "$(dirname "$DOC")" "$OUTDIR"
df -h "$OUTDIR"
exit 1
fi
bash convert.sh /path/file.docx /path/out /usr/bin/libreoffice7.3~/.config/libreoffice/4/user/log/ 并结合错误码含义进一步定位。