首页/新闻资讯/正文详情

使用PHP将Word文件转换为PDF文件的三种方式

发布时间:2026/9/25 22:34:28 来源:云帆数科 栏目:资讯中心
使用PHP将Word文件转换为PDF文件的三种方式
最近工作中遇到了需要把word文件转换为pdf文件功能尝试了几种方式在此记录一下供大家参考。环境准备服务器CentOS 7.8PHP7.2一、 使用 PHPWord Dompdf纯 PHP无需系统软件推荐轻量场景或使用mpdf或者tcpdf都可以原理就是获取word文件的内容并转换为html并将html转换成pdf。适合简单 Word 文档.docx无复杂格式、图片、表格。对于复杂word文件不推荐此种方式。1. 安装依赖12composerrequirephpoffice/phpwordcomposerrequiredompdf/dompdf2. 转换代码12345678910111213141516171819202122232425?phprequirevendor/autoload.php;usePhpOffice\PhpWord\IOFactory;useDompdf\Dompdf;// 输入 Word 路径$wordPathtest.docx;// 输出 PDF 路径$pdfPathoutput.pdf;try{// 1. 读取 Word$phpWord IOFactory::load($wordPath);// 2. 先渲染为 HTML$htmlWriter IOFactory::createWriter($phpWord,HTML);$html$htmlWriter-getContent();// 3. 使用 Dompdf 转 PDF$dompdfnewDompdf();$dompdf-loadHtml($html);$dompdf-setPaper(A4,portrait);$dompdf-render();// 4. 保存 PDFfile_put_contents($pdfPath,$dompdf-output());echo转换成功PDF 已保存到$pdfPath;}catch(Exception$e) {echo转换失败.$e-getMessage();}二、调用 LibreOffice 命令最稳定支持复杂 Word生产环境首选适合复杂 Word带图片、表格、样式、公式、.doc/.docx格式还原度最高。Windows/Linux 服务器都能用。1. 安装 LibreOffice1.1 使用EPEL库安装1sudoyuminstallepel-release安装 LibreOffice1sudoyuminstalllibreoffice1.2 使用 RPM Fusion 仓库导入 RPM Fusion 的 GPG 密钥并安装仓库配置1sudorpm --importhttps://rpmfusion.org/keys?actionAttachFiledogettargetRPM-GPG-KEY-rpmfusion-free-centos-81sudoyum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-$(rpm -E %centos).noarch.rpm安装LibreOffice1sudoyuminstalllibreoffice-core1.3 使用官方 LibreOffice 仓库下载并安装 LibreOffice 的 YUM 仓库配置文件1sudorpm -Uvh https://download.documentfoundation.org/libreoffice/stable/6.4.7/rpm/x86_64/libreoffice6.4.7-lp180103.x86_64.rpm安装LibreOffice1sudoyuminstalllibreoffice-core1.4 使用 Snap 包管理器如果你使用的是 CentOS 8 或更高版本CentOS 版本支持 Snap启用 EPEL 和 PowerTools 仓库123sudoyuminstallepel-releasesudoyuminstallhttps://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpmsudoyuminstallcentos-release-powertools安装 Snapd‌12sudoyuminstallsnapdsudosystemctlenable--now snapd.socket安装LibreOffice1sudosnapinstalllibreoffice --classic2. 转换代码确保 PHP 能执行 exec/shell_exec 函数123456789101112131415161718192021222324?php// Word 路径$wordFile __DIR__ ./test.docx;// 输出目录$outputDir __DIR__;// Windows 下 LibreOffice 安装路径改成你自己的$libreOfficeC:\Program Files\LibreOffice\program\soffice.exe;// Linux 路径// $libreOffice /usr/bin/libreoffice;// 转换命令$command sprintf(%s --headless --convert-to pdf --outdir %s %s,$libreOffice,$outputDir,$wordFile);// 执行转换exec($command,$output,$status);if($status 0) {echo转换成功PDF 保存在$outputDir;}else{echo转换失败;print_r($output);}格式还原度 99%支持 .doc/.docx/wps 文档三、使用 SphinxSearch 扩展UNIX 系统专用性能强适合Linux 服务器大量文档批量转换。需要安装unoconv LibreOffice。1. 安装unoconv在 CentOS 上安装unoconv和它的依赖项通常需要使用一些额外的软件包因为 CentOS 默认的仓库中不包含 unoconv可以通过以下步骤安装1.1 安装 EPEL 仓库参考 方法二 安装 LibreOffice1.2 安装unoconv一旦安装了 EPEL 仓库和 LibreOffice你就可以通过 pip 安装 unoconv 了。首先确保你的系统已经安装了 Python 和 pip。你可以通过以下命令安装 pip如果尚未安装1sudoyuminstallpython3-pip然后使用pip安装unoconv1pip3installunoconv1.3 确认安装1unoconv --version如果这个命令返回了版本信息那么 unoconv 就已经成功安装了。2. 转换代码安装成功后就可以开始转换文件了转换命令1unoconv -f pdf -o 转换后的pdf文件地址 word文件地址1234567?php$wordtest.docx;$pdfoutput.pdf;exec(unoconv -f pdf $pdf $word);if(file_exists($pdf)) {echo转换成功;}3. 中文乱码解决CentOS系统默认是不安装中文字体的如果系统中没有中文字体word转换成pdf文件后中文会显示为乱码需要安装中文字体来解决。‌3.1 下载中文字体‌从互联网上下载你需要的中文字体文件通常是 .ttf 或 .otf 文件。这里已经为大家准备好了一些字体里面有我自己用的也有网上分享的https://pan.quark.cn/s/051c9ef67a4f大家也可以自己到网上搜索一些免费字体使用。3‌.2 将字体文件复制到字体目录‌将下载的字体文件复制到系统的字体目录中通常是 /usr/share/fonts/ 或 /usr/share/fonts/chinese/。如下图所示‌3.3 更新字体缓存‌更新字体缓存使系统能够识别新安装的字体1sudofc-cache -fv字体库安装之后再次转换中文就会显示正常。本人使用的是unoconv进行转换大家还有哪些好方法欢迎留言讨论。

相关推荐

企业微信数据与智能专区 SDK 实战指南:会话记录获取与消息统计(Senparc.Weixin.Work DataIntelligenceApi)
企业微信数据与智能专区 SDK 实战指南:会话记录获取与消息统计(Senparc.Weixin.Work DataIntelligenceApi)

后端即时通讯金融科技 【免费下载链接】WeiXinMPSDK 微信全平台 .NET SDK, Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 10.0。已支持微信公众号、小程序、小游戏、微信支付、企业微信/企业号、开放平台、JSSDK、微信周边等全平台。 … · 2026/9/25 22:34:09

用户空间与内核空间数据共享:mmap 系统调用在设备驱动中的实现与避坑
用户空间与内核空间数据共享:mmap 系统调用在设备驱动中的实现与避坑

用户空间与内核空间数据共享:mmap 系统调用在设备驱动中的实现与避坑在视频图像采集(如 4K 60FPS 摄像头)、高速网络数据包收发、以及端侧 AI 加速器与 NPU 的权重传递场景中,数据吞吐量往往高达每秒数吉字节(GB/s&… · 2026/9/25 22:34:03

遗留系统中的单例模式技术债:并发安全隐患与面向依赖注入的解耦重构
遗留系统中的单例模式技术债:并发安全隐患与面向依赖注入的解耦重构

遗留系统中的单例模式技术债:并发安全隐患与面向依赖注入的解耦重构在初创团队开发 MVP(最小可行产品)的初期,“单例模式(Singleton Pattern)”往往是最容易被滥用的设计模式。 为了图省事,工程… · 2026/9/25 22:34:03

exit code 0是假胜利?一文搞懂进程退出码与排障方法
exit code 0是假胜利?一文搞懂进程退出码与排障方法

写代码这几年,几乎每天都会在开发工具下方看到一行绿色的小字:Process finished with exit code 0。第一次见到它的时候我还是个刚学编程的小白,心里想的是:这行字到底什么意思?是程序没问题了,还是它在跟我… · 2026/9/25 23:07:20

中文法律大模型实战:从基座选择到RAG增强的部署避坑指南
中文法律大模型实战:从基座选择到RAG增强的部署避坑指南

简介:LexiLaw是一款面向中文法律领域微调的大语言模型资源包,基于ChatGLM-6B架构,针对法律条款解读、案例分析、法规咨询等任务优化。适合法律科技开发者、NLP研究者和法律专业学生快速搭建智能问答原型,解决通用模型在法律场景下… · 2026/9/25 23:07:07

Teigha4 .NET读写DWG:不装AutoCAD也能解析图纸
Teigha4 .NET读写DWG:不装AutoCAD也能解析图纸

简介:Teigha(原名OpenDwg/DWGdirect)是脱离AutoCAD环境读写DWG文件的经典开发库,本资源面向.NET平台二次开发人员,以VB.net和C#双语言源码演示了不启动AutoCAD即可提取图形数据的实现思路。压缩包共165个文件、约61.5M… · 2026/9/25 23:06:34

统信UOS内网离线安装Flash插件全流程与避坑指南
统信UOS内网离线安装Flash插件全流程与避坑指南

简介:针对统信UOS内置浏览器无法加载Flash插件、且内网环境阻碍在线安装的问题,这份资源打包了一套离线安装与排错方案,主要面向政企运维人员、UOS普通用户及系统管理员,帮助恢复旧式Flash网页内容的正常显示。资源包共6个文件&am… · 2026/9/25 23:06:34

阳光板厂推荐 银川君瑞祥新材料科技质量参考评选
阳光板厂推荐 银川君瑞祥新材料科技质量参考评选

在工业厂房搭建、农业温室建设、体育场馆改造以及化工车间升级的各类工程项目中,采光板材的选择,从来都是影响项目整体质量、后期运维成本与使用安全的核心环节。面对西北区域强紫外线、大温差、多风沙的特殊气候,不少项目都曾踩过通用款采光… · 2026/9/25 23:06:27

基于PHP的H5转APP在线封装打包平台实现与避坑指南
基于PHP的H5转APP在线封装打包平台实现与避坑指南

简介:面向需要把H5手机网站快速封装成安卓和苹果安装包的开发者,这套PHP源码以在线打包方式提供免签绿色封装方案,支持Android与iOS平台。可自行上传安卓证书和启动图,并针对iOS 14全屏兼容问题做了专门修复;同时去除多… · 2026/9/25 23:06:21

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码