新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/14 17:26:32来源:尧图网络
使用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

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/14 3:51:47

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/14 3:51:43

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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