使用PHP将Word文档转化为pdf文件(用户提交数据到Word模板并修改部分内容,再将Word转为PDF)

需要实现的功能:
1.用户提交信息,例如:名称,年龄,电话等等
2.将这些信息填充到固定好的word模板中。
3.将生成的word转化为PDF。
4.使用的语言PHP


开始demo.docx文件中的内容
在这里插入图片描述

步骤:
1.composer 安装PHPword

composer require phpoffice/phpword

2.composer 安装dompdf

composer require dompdf/dompdf

3.正文代码

require_once 'vendor/autoload.php';//引入
$demoDoc = 'demo.docx';//模板docx文件

$doc = new \PhpOffice\PhpWord\TemplateProcessor($demoDoc);
$username = '名字';
$phone = '130123456789';
$age = '32岁';

$doc->setValue('username',$username);
$doc->setValue('phone',$phone);
$doc->setValue('age',$age);

$newDoc = $phone.'.docx';//生成的word文件
$doc->saveAs($newDoc);//保存

$newPdf = $phone.'.pdf';//生成pdf文件
\PhpOffice\PhpWord\Settings::setPdfRendererName(\PhpOffice\PhpWord\Settings::PDF_RENDERER_DOMPDF);
\PhpOffice\PhpWord\Settings::setPdfRendererPath('.');
$pdf = \PhpOffice\PhpWord\IOFactory::load($newDoc);
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($pdf, 'PDF');
$html = $xmlWriter->getContent();//获取word内容到HTML
//echo $html;
$xmlWriter->save($newPdf, 'PDF');//保存PDF文件
header('location:'.$newPdf);//网页显示PDF
//到这个时候可以生成PDF了,但是中文的会乱码

执行以后生成的文件是这个样子的
在这里插入图片描述

4.因为没有引入中文字体所以出现乱码
5.下载字体直接放到D盘,我下载的是微软雅黑,直接从网上搜索下载就可以
在这里插入图片描述

6.安装字体
第一步:这里需要特别注意,load_font.php文件是需要去下载的,下载地址就是下边的地址。
下载Dompdf的工具包
该工具包的Git地址为:https://github.com/dompdf/utils。
第二步:下载完成将,load_font.php文件放入项目
下载完成后,解压,复制其中的load_font.php文件到项目下的verdor/dompdf/dompdf目录下,与lib和src目录同级。
在这里插入图片描述
第三步:看自己放这个文件的位置,修改此文件中的autoload.php的路径
修改load_font.php文件
因为之前把该文件直接放在了dompdf目录下,因此需要其默认的加载autoloader的路径如下:

<?php
// 1. [Required] Point to the composer or dompdf autoloader
require_once "../../autoload.php";

win+r cmd 然后切换到目标文件夹 然后执行PHP文件
在这里插入图片描述
回车以后出现的
在这里插入图片描述
查看是否安装成功(2024-8-10 14:39:14后我发现这个文件不存在了,而是换成了installed-fonts.json 这里都是自定义安装的字体)
在这里插入图片描述
修改后的需要修改的文件和数据

7.修改msyh为 微软雅黑

在这里插入图片描述
8.模板文件也要修改字体为 微软雅黑
在这里插入图片描述
9.执行程序查看生成的pdf文档
在这里插入图片描述

10.现在都已经全部完成了,如果还有什么不懂的直接给我留言,看到后我会回复的,如果确实帮到了您可以点赞支持一下哦

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值