Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将用户签名从Web表单传输到pdf模板?_Php_Html5 Canvas_Base64_Pdftk_Fdf - Fatal编程技术网

Php 如何将用户签名从Web表单传输到pdf模板?

Php 如何将用户签名从Web表单传输到pdf模板?,php,html5-canvas,base64,pdftk,fdf,Php,Html5 Canvas,Base64,Pdftk,Fdf,我有一个web表单,它使用HTML5画布元素允许用户签名。提交表单时,所有字段值和base64字符串,例如数据:image/png;base64,处理并存储包含用户签名的blahblahetc 我想用提交的数据填充我的pdf模板,并在表单上签名,但我正在努力完成签名任务 我在研究过程中发现了一种技术,建议我可以使用以下方法将签名写成pdf按钮: << /T (button1)/APRef << /N << /F (http://www.yoursite.com

我有一个web表单,它使用HTML5画布元素允许用户签名。提交表单时,所有字段值和base64字符串,例如数据: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用dynamic.fdf文件填充template.pdf。我需要对签名按钮进行任何特殊准备吗?我想我读过一些关于将布局设置为“仅图标”的内容。

因为我找不到将签名作为按钮应用于pdf的方法,所以我不得不摆弄和破解,以便将所有表单数据和签名从服务器获取到新的pdf

首先fopen/f将表单值写入新的fdf,然后使用pdftk生成未签名的pdf:

echo exec("cd $submissions_path/; $pdftk \"$template\" fill_form \"$fdf\" output \"$unsigned_pdf\"; chmod 777 \"$unsigned_pdf\";");
然后fopen/f将我的base64签名写入签名图像:

$fp=fopen("$submissions_path/$simg","wb");
fwrite($fp,base64_decode($scode));
fclose($fp);
然后生成一个.html水印,并使用mPDF将其转换为水印.pdf。请原谅使用表格,mPDF不喜欢我的:

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

$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
echo exec("cd $submissions_path/; $pdftk \"$unsigned_pdf\" stamp \"$watermark_pdf\" output \"$pdf\"");