php中根据word合同模板替换变量及图片并签章生成新的word和pdf文档

php中根据word合同模板替换变量及图片并签章生成新的word和pdf文档

php中根据word合同模板替换变量及图片并签章生成新的word和pdf文档

疫情之下,很多企业都选择了电子签章和电子合同,那么如何根据word模板来批量生成电子合同并进行盖章签名呢?

今天我们来使用php中的一个库来实现word文档模板的变量替换及签章,下面我们来一步一步介绍:

一、安装phpword

1、安装phpword
composer require phpoffice/phpword
2、安装tcpdf,如果要生成pdf文档
composer require tecnickcom/tcpdf

二、准备word模板

php中根据word合同模板替换变量及图片并签章生成新的word和pdf文档

我们新建一个contact.docx文档,并插入6个变量,代理合同名称,甲乙双方签名及图片变量及时间。

然后我们来写php代码

<?php
require('../lib/php/vendor/autoload.php');

$templateProcessor = new \PhpOffice\PhpWord\TemplateProcessor('/data/wwwroot/default/asset/contact.docx');

//替换合同基本信息
$templateProcessor->setValue('name', 'bfw开发');
$templateProcessor->setValue('time', '2035-12-12');
//替换合同甲乙双方数据
$templateProcessor->setValue('jiafangname', '张伟');
$templateProcessor->setValue('yifangname', '王磊');

//替换签名图片
$templateProcessor->setImageValue("jiafangimg", ['path' => '/data/wwwroot/default/asset/signhand.png', 'width' => '100', 'height' => '70']);

$templateProcessor->setImageValue("yifangimg", ['path' => '/data/wwwroot/default/asset/signhand.png', 'width' => '100', 'height' => '70']);

$templateProcessor->saveAs('合同.docx');

echo ("<a href='/Data/合同.docx' target='_blank'>生成成功,点击下载查看</a>");

1这里面我们使用了phpword的TemplateProcessor类来打开模板,并替换了变量,分别使用了setValue和setImageValue来替换了文字和图片变量。

执行完后生成了合同.docx文档,文档如下:

php中根据word合同模板替换变量及图片并签章生成新的word和pdf文档

三、生成pdf文档

生成pdf需要用到TCPDF这个库,并且需要设置中文字体,否则就会乱码,代码如下:

<?php
require('../lib/php/vendor/autoload.php');


\PhpOffice\PhpWord\Settings::setPdfRendererPath('../lib/php/vendor/tecnickcom/tcpdf');
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');

//这里是你的word文件
$phpWord = \PhpOffice\PhpWord\IOFactory::load("/data/wwwroot/default/asset/contact.docx");

$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'PDF');
//解决table外的中文全是问号问题
$xmlWriter->SetFont('stsongstdlight', '', 18, '', true); //设置字体
$xmlWriter->save('contact.pdf');
echo("<a href='/Data/contact.pdf' target='_blank'>word转pdf成功,点击查看</a>");

总结

一个简单的word模板生成pdf合同的代码完成了,但是电子合同还涉及到区块链存证、实名认证及证书签章等操作,这个我们在以后的教程中会说到如何搭建一套自己的电子合同签约服务。


{{collectdata}}

网友评论0