如何将用户的签名从web表单转移到pdf模板


How to transfer a user's signature from a webform to a pdf template?

我有一个web表单,使用HTML5画布元素允许用户签名他们的名字。当提交表单时,所有字段值和base64字符串(例如:包含用户签名的"data:image/png;base64,blahblahetc")被处理并存储。

我想用提交的数据填充我的pdf模板,并在表单上签名,但我在签名任务上遇到了困难。

在研究的过程中,我发现了一种方法,可以将签名写成pdf按钮:

<< /T (button1)/APRef << /N << /F (http://www.yoursite.com/pfds/icons.pdf)/Name (icon3)>> >> >> 

然而,我不能设法让这个工作。我不知道签名是否必须准备为。png、。pdf或其他格式。(我可以成功地在服务器上生成。png,但还没有尝试将其应用到。pdf,因为我不知道我是否需要它。)

我使用pdftk填充我的模板。pdf与动态。fdf文件。我需要在签名按钮上做什么特别的准备吗?我想我读过一些关于将布局设置为"仅限图标"的文章。

由于我找不到将签名作为按钮应用于pdf的方法,因此我不得不将所有表单数据和签名从服务器获取到新的pdf上。

首先fopen/fwrite form values到new fdf,然后使用pdftk生成无符号pdf:

echo exec("cd $submissions_path/; $pdftk '"$template'" fill_form '"$fdf'" output '"$unsigned_pdf'"; chmod 777 '"$unsigned_pdf'";");

然后fopen/fwrite my base64签名到签名图像:

$fp=fopen("$submissions_path/$simg","wb");
fwrite($fp,base64_decode($scode));
fclose($fp);

然后生成一个。html水印,使用mPDF转换为水印。pdf(请原谅使用表格,mPDF不喜欢我的<div>):

$watermark_pdf="InstallOrder_{$submissionID}_Watermark.pdf";
$watermark_html="<table style='"width:792px;height:1123px;'"><tr>";
$watermark_html.="<td colspan='"2'" style='"padding-top:900px;padding-left:70px;width:240px;height:20px;'">{$watermark[CustomerSignature]}</td>";
$watermark_html.="</tr><tr>";
$watermark_html.="<td style='"padding-top:16px;padding-left:69px;width:240px;height:20px;'">{$watermark[OwnerSignature]}</td>";
$watermark_html.="<td style='"padding-top:16px;padding-left:169px;width:240px;height:20px;'">{$watermark[ManagerSignature]}</td>";
$watermark_html.="</tr></table>";
include("../mpdf/mpdf.php"); //Include mPDF Class
$mpdf=new mPDF('','',0,'',0,0,0,0,0,0,'P'); // Create new mPDF Document
$mpdf->WriteHTML($watermark_html);
$mpdf->Output("$watermark_pdf","F");    //save file to server - may include a path

最后,再次使用pdftk将watermark.pdf戳到unsigned.pdf上:

echo exec("cd $submissions_path/; $pdftk '"$unsigned_pdf'" stamp '"$watermark_pdf'" output '"$pdf'"");

最繁琐的部分是正确设置水印html上签名图像的大小和位置。