【问题标题】:How to transfer a user's signature from a webform to a pdf template?如何将用户的签名从网络表单转移到 pdf 模板?
【发布时间】:2014-08-18 09:45:34
【问题描述】:

我有一个 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 用动态 .fdf 文件填充我的模板 .pdf。我需要对签名按钮进行任何特殊准备吗?我想我读过一些关于将布局设置为“仅图标”的内容。

【问题讨论】:

    标签: php html5-canvas base64 pdftk fdf


    【解决方案1】:

    由于我找不到将签名作为按钮应用到 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);
    

    然后使用mPDF生成.html水印转换为水印.pdf(请原谅使用表格,mPDF不喜欢我的&lt;div&gt;'s):

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

    【讨论】:

      猜你喜欢
      • 2019-11-10
      • 1970-01-01
      • 2019-04-25
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      相关资源
      最近更新 更多