我有一个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上签名图像的大小和位置。