Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)

Ubuntu 18.04 安装 LibreOffice(用于 Word 在线预览转换)

适用场景: 服务器端需要将 .doc / .docx 转换为 HTML 或 PDF

操作用户: root 或具有 sudo 权限的用户


一、安装命令(稳定版)

⚠️ 避免踩坑: 不要安装 libreoffice-writer-nogui,容易与系统源冲突导致依赖问题。

执行以下命令:

bash 复制代码
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
  libreoffice-writer \
  libreoffice-common \
  libreoffice-java-common \
  fonts-noto-cjk

参数说明:

包名 作用
libreoffice-writer Writer 文字处理组件(核心)
libreoffice-common 公共基础文件
libreoffice-java-common Java 运行时支持(部分转换依赖)
fonts-noto-cjk 中日韩字体,避免中文乱码

二、验证安装是否成功

2.1 查看 soffice 路径

bash 复制代码
which soffice

预期输出:/usr/bin/soffice

2.2 查看版本号

bash 复制代码
soffice --version

预期输出类似:

text 复制代码
LibreOffice 6.0.7.3 00m0(Build:3)

三、(可选)指定自定义路径

如果 soffice 不在默认路径,可在 .env 中配置(以 Laravel 为例):

bash 复制代码
CONTRACT_LIBREOFFICE_PATH=/usr/bin/soffice

四、测试转换功能(推荐执行)

用一个测试文件验证是否能正常转换:

bash 复制代码
# 准备测试文件
echo "test content" > /tmp/test.doc

# 执行转换
soffice --headless --nologo --nofirststartwizard --norestore \
  --convert-to html --outdir /tmp /tmp/test.doc

# 查看输出
ls -la /tmp/test.html

如果生成了 /tmp/test.html 文件,说明安装成功且可用。


五、常见问题速查

问题 解决方法
soffice: command not found 检查是否安装成功,或使用 find /usr -name soffice 查找路径
中文转 HTML 出现方块/乱码 确保已安装 fonts-noto-cjk,或补充安装 fonts-wqy-zenhei
转换无报错但无输出文件 检查 --outdir 目录是否可写
例子:PHP 调用 soffice 失败(程序已装好,但接口仍报错) 检查 PHP 配置文件 php.ini 中的 disable_functions 是否禁用了 exec 或 shell_exec。查看命令: `php -i

六、安装完成

执行完以上步骤,LibreOffice 即可供 PHP/Python/Java 等后端程序通过 exec / shell_exec 调用,用于 Word 文档的无界面转换。


原创整理,转载注明出处。

相关推荐
zaizai10075 小时前
STL深度剖析2
java·c++·算法
染指11105 小时前
157.Agent-LangGraph-工具(实现ReAct Agent模式)
开发语言·人工智能·python·langchain·agents
段一凡-华北理工大学5 小时前
高炉能源系统智能化:热风炉、煤气与极致能效~系列文章03:热风炉烧炉与风温的决定因素
大数据·linux·人工智能·能源·热风炉·高炉能源优化
_小许_5 小时前
Linux 常用命令速查:CentOS 与 Ubuntu 双线对照
linux·ubuntu·centos
程序猿乐锅6 小时前
【从0-1学习Python | 第九篇】继承
开发语言·后端·python·学习·fastapi
青少儿编程课堂6 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:位运算实战——二进制权限与最大异或解析
c++·python·算法·bfs·信息学竞赛
在世修行6 小时前
智学文枢:理科分析引擎
python·ai·pyside·理科教学
青少儿编程课堂6 小时前
2026蓝桥杯青少组图形化真题:校园飞机大战解析(全国青少年信息素养·电子学会图形化考级)
c++·python·算法·bfs·信息学竞赛
周厉6 小时前
WebSocket 使用场景与实现方法:Java + Vue3 全栈实战
java·websocket·vue3·websocket双向通讯
wdfk_prog6 小时前
lwip教程 38:从 `lwipopts.h` 到 Port Contract——lwIP 裁剪、构建选择、OS Port 与 Network Port
java·开发语言