需要实现的功能:
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.现在都已经全部完成了,如果还有什么不懂的直接给我留言,看到后我会回复的,如果确实帮到了您可以点赞支持一下哦