一、基础安装
-
安装LibreOffice
sudo yum update && sudo yum install libreoffice(若需特定版本,可手动下载RPM包安装)
-
安装中文支持(避免乱码)
- 下载中文字体包(如思源黑体),解压后复制到
/usr/share/fonts/。 - 执行
fc-cache -fv刷新字体缓存。
- 下载中文字体包(如思源黑体),解压后复制到
二、命令行转换技巧
-
单文件转换
soffice --headless --convert-to pdf:writer_pdf_Export input.docx --outdir /output/path--headless:后台运行,无界面弹出。:writer_pdf_Export:指定导出过滤器(不同格式需调整,如calc_pdf_Export用于Excel转PDF)。
-
批量转换
find /input/dir -name "*.docx" | while read file; do soffice --headless --convert-to pdf "$file" --outdir /output/dir done或使用
unoconv(需先安装):unoconv -f pdf /input/dir/*.docx -
自定义输出路径与权限
- 通过
--outdir指定输出目录,确保目录存在且当前用户有写入权限。 - 转换后文件权限可通过
chmod调整。
- 通过
三、常见问题解决
-
服务未启动
若使用unoconv或远程转换,需启动LibreOffice服务:sudo systemctl start libreoffice.service sudo systemctl enable libreoffice.service -
中文乱码
- 确认已安装中文字体并刷新缓存(
fc-cache -fv)。 - 检查输出文件编码是否为UTF-8(可通过
file命令查看)。
- 确认已安装中文字体并刷新缓存(
-
大文件转换失败
- 分批次转换或增加系统内存。
- 使用
--norestore参数避免加载上次会话(节省资源)。
四、高级用法
- API集成:通过LibreOffice的UNO API(如Python的
uno库)实现程序化转换。 - 远程转换:搭配
soffice的--accept参数开启远程服务,配合unoconv或自定义脚本实现跨服务器转换。
参考来源: