首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux 服务器实现 Word 转图片方案

Linux 服务器实现 Word 转图片方案

原创
作者头像
沈唁
发布2026-04-22 17:27:47
发布2026-04-22 17:27:47
660
举报
文章被收录于专栏:沈唁志沈唁志

在很多业务系统中,经常需要对 Word 文档进行在线预览或生成图片。常见场景包括:

  • 电子函件或通知预览
  • 审批系统附件展示
  • OCR 识别前的文档预处理
  • IM / 消息系统模板截图
  • 文档归档与审计

Word 文档 (.docx) 本身不适合直接渲染为图片,因此通常采用如下转换链路:

代码语言:bash
复制
DOCX → PDF → PNG

原因:

  • DOCX → PDF:排版最稳定
  • PDF → PNG:渲染简单,兼容性好

本文记录一次完整的服务器环境搭建过程,使用:

  • CentOS/PHP
  • phpword:负责处理 Word 模板中的变量替换
  • LibreOffice:负责 Word 转 PDF
  • ImageMagick:负责 PDF 转 PNG

完整转换流程如下:

代码语言:bash
复制
PHP (phpword)
  ↓
DOCX
  ↓
LibreOffice (soffice)
  ↓
PDF
  ↓
ImageMagick (convert)
  ↓
PNG

LibreOffice

首先在服务器安装 LibreOffice:

代码语言:bash
复制
sudo yum install libreoffice

安装完成后可以使用 soffice进行文档转换。

测试是否安装成功:

代码语言:bash
复制
soffice --version

接下来就可以开始 DOCX 转 PDF 了,使用命令:

代码语言:bash
复制
# 单文件转换
soffice --headless \
--convert-to pdf \
/tmp/upload_data/letter.docx \
--outdir /tmp/upload_data

执行后会在/tmp/upload_data目录下生成letter.pdf

如果目录中有大量 Word 文件,也可以批量转换:

代码语言:bash
复制
soffice --headless \
--convert-to pdf \
/tmp/upload_data/1/*.docx \
--outdir /tmp/upload_data/1

执行后会在/tmp/upload_data/1/目录下生成和 docx 文件同名的 pdf 文件。

但是这个时候查看生成好的 PDF 文件,会发现字体和 Word 有区别,在 Linux 服务器上转换 Word 时,经常会遇到:

  • 字体被替换
  • 排版错位
  • 中文显示异常

原因是服务器没有 Windows 上对应的字体。解决方法就是从 Windows 复制字体,放到服务器上。

字体目录:

代码语言:bash
复制
C:\Windows\Fonts

常用中文字体:

字体

文件

宋体

simsun.ttc

黑体

simhei.ttf

微软雅黑

msyh.ttc

仿宋

simfang.ttf

楷体

simkai.ttf

将这些字体打包为fonts.zip后上传服务器,上传到服务器后执行:

代码语言:bash
复制
unzip fonts.zip -d /usr/share/fonts/chinese

刷新字体缓存:

代码语言:bash
复制
fc-cache -fv

查看字体:

代码语言:bash
复制
fc-list | grep simsun

如果看到输出,说明字体安装成功。

ImageMagick

转为 PDF 以后,就可以使用 ImageMagick 将 PDF 渲染为图片。

安装:

代码语言:bash
复制
yum install -y ImageMagick ImageMagick-devel

检查版本:

代码语言:bash
复制
convert -version

基本转换命令:

代码语言:bash
复制
convert -density 300 letter.pdf letter.png

参数说明:

参数

说明

-density 300

设置 PDF 渲染 DPI

letter.pdf

输入文件

letter.png

输出文件

默认情况下,每页 PDF 都会生成一张图片,多页 PDF 时就会生成letter-0.pngletter-1.png...

如果需要拼接多页为一张图片,生成一张长图:

代码语言:bash
复制
convert -density 300 letter.pdf -append letter.png

-append表示纵向拼接,+append表示横向拼接。

同时可以加上-background white -alpha remove,防止透明背景。

完整示例命令:

代码语言:bash
复制
soffice --headless --convert-to pdf letter.docx
convert -density 300 letter.pdf -background white -alpha remove -append letter.png

通过 LibreOffice 与 ImageMagick,可以在 Linux 服务器上实现稳定的文档转换流程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • LibreOffice
  • ImageMagick
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档