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

PDF 字体 服务器 convert Word
发布于 2026-06-11
134

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

扫码阅读
手机扫码阅读

文章主旨:本文介绍了在CentOS/PHP环境中,利用phpword、LibreOffice和ImageMagick将Word文档(.docx)转换为图片(PNG)的完整技术方案,重点解决了字体缺失导致的排版问题。

关键要点:

  • 转换链路为DOCX→PDF→PNG,其中PDF作为中间格式可保持排版稳定。
  • 使用LibreOffice的soffice命令进行DOCX转PDF,支持单文件或批量转换。
  • Linux服务器缺少Windows字体时,需从Windows复制常用字体(如宋体、黑体等)到/usr/share/fonts/chinese并刷新字体缓存。
  • 使用ImageMagick的convert命令将PDF渲染为PNG,可通过-density参数控制DPI,-append实现多页拼接为长图。
  • 提供完整示例命令:soffice --headless --convert-to pdf letter.docx 后接 convert -density 300 ... -append letter.png。

内容结构:

  1. 应用场景:在线预览、审批附件展示、OCR预处理、消息系统截图等,需要将Word文档转换为图片。

  2. 转换链路选择:DOCX→PDF→PNG,原因在于PDF排版稳定且渲染简单。

  3. 环境组成:CentOS/PHP + phpword(变量替换)+ LibreOffice(转PDF)+ ImageMagick(转PNG)。

  4. LibreOffice安装与使用:

    • 安装命令:sudo yum install libreoffice。
    • 测试版本:soffice --version。
    • 单文件转换:soffice --headless --convert-to pdf /tmp/upload_data/letter.docx --outdir /tmp/upload_data。
    • 批量转换:soffice --headless --convert-to pdf /tmp/upload_data/1/*.docx --outdir /tmp/upload_data/1。
  5. 字体问题解决:

    • 问题:服务器缺少Windows字体导致字体替换、排版错位、中文显示异常。
    • 方法:从Windows复制字体文件(simsun.ttc, simhei.ttf, msyh.ttc, simfang.ttf, simkai.ttf)打包为fonts.zip,上传后解压至/usr/share/fonts/chinese,执行fc-cache -fv刷新缓存,使用fc-list验证。
  6. ImageMagick安装与使用:

    • 安装:yum install -y ImageMagick ImageMagick-devel。
    • 检查版本:convert -version。
    • 基本转换:convert -density 300 letter.pdf letter.png。
    • 多页拼接:convert -density 300 letter.pdf -append letter.png(纵向拼接),-background white -alpha remove防透明背景。
  7. 完整流程示例:一条命令完成DOCX→PNG。

文章总结:本文为开发者提供了一个稳定、可操作的Word文档转图片方案,通过补齐字体和工具链解决了服务器端文档转换的常见问题。

鲁飞

鲁飞(沈唁)的个人公众号,不定时分享和PHP相关的技术资源、开源项目、技术总结等内容。

41 篇文章
浏览 68.6K

还在用多套工具管项目?

一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。

加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线