新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/9/25 22:34:31来源:尧图网络
使用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进行转换大家还有哪些好方法欢迎留言讨论。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

揭秘MindSpeed-LLM多潜在注意力(MLA)与Mamba上下文并行实现原理 2026/9/25 23:12:09

揭秘MindSpeed-LLM多潜在注意力(MLA)与Mamba上下文并行实现原理

揭秘MindSpeed-LLM多潜在注意力(MLA)与Mamba上下文并行实现原理 【免费下载链接】MindSpeed-LLM 昇腾LLM分布式训练框架 项目地址: https://gitcode.com/Ascend/MindSpeed-LLM MindSpeed-LLM 是面向昇腾算力的 LLM 分布式训练框架,长序…

阅读更多 →
微信小程序支付后台Java实现:统一下单、回调验签与幂等处理全解析 2026/9/25 23:12:02

微信小程序支付后台Java实现:统一下单、回调验签与幂等处理全解析

简介:一份面向微信小程序开发者的支付后台 Java 实现示例,完整覆盖从登录授权获取 OpenId、生成订单号,到调用微信统一下单接口、处理 XML 返回数据、二次签名并调起前端支付的闭环流程。示例基于 LeanCloud 云引擎编写,代码中涉及…

阅读更多 →
Trae 上下文 doc 功能配 TaoToken:陌生组件快速上手配置与验证 2026/9/25 23:11:56

Trae 上下文 doc 功能配 TaoToken:陌生组件快速上手配置与验证

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

阅读更多 →
微信小程序支付后台Java实现:统一下单与回调验签全流程解析 2026/9/25 23:11:55

微信小程序支付后台Java实现:统一下单与回调验签全流程解析

简介:面向微信小程序开发者的Java后台支付实现实例,围绕微信支付完整闭环展开,涵盖OpenId获取、订单号生成与管理、统一下单接口签名调用、XML响应解析、二次签名、前端调起支付及notify_url回调处理等关键环节。资源以PDF文档形式提供&#…

阅读更多 →
Spring AI MCP接入实战:用TaoToken统一Key打通工具调用链路 2026/9/25 23:11:35

Spring AI MCP接入实战:用TaoToken统一Key打通工具调用链路

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

阅读更多 →
C# 部署 YOLO 到 150FPS:OpenVINO 异步推理实战指南 2026/9/25 23:11:35

C# 部署 YOLO 到 150FPS:OpenVINO 异步推理实战指南

简介:面向使用C#与OpenVINO部署YOLO模型的开发者,资源包以完整工程形式演示如何将训练好的YOLO模型转换为OpenVINO支持的IR格式,并通过异步推理在CPU等硬件上达到150FPS以上的实时检测效果。压缩包共221个文件,约109.7MB&#xff…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉