javascript - 签名板和dompdf

标签 javascript php dompdf

我正在使用 Thomas J Bradley's plugin用于在 html 表单底部绘制两个签名,然后使用 dompdf 将其转换为 pdf 并使用 sendmail 作为附件通过电子邮件发送。

一切都很好,除了我似乎无法在不将签名保存到磁盘的情况下将签名重新绘制到 pdf 文件上,我想避免这一点。

先生。布拉德利提供several methods for regenerating the signature但我需要一些关于如何将签名数据连同表单值传递给 pdf 转换器的建议,最好是“即时”(不将数据保存到磁盘或数据库)。

如有任何答复,我将不胜感激。 如果您需要任何示例代码,请告诉我。

提前致谢!

最佳答案

您应该捕获签名图像,而不是重新生成签名。签名板可以return the signature as an image编码为 data URI . dompdf 理解数据 URI,因此您可以使用它来生成 PDF。如果您的目标平台不支持该方法,作者有很多选项 converting the signature server side .

简而言之,该过程是捕获表单提交时的图像输出,将其传递到服务器,并使用签名动态填充您的 HTML 以生成 PDF。无需保存图像。

我没用过签名板,所以我用的是作者的HTML template作为示例代码的基础。

客户端

<form method="post" action="" class="sigPad">
  <label for="name">Print your name</label>
  <input type="text" name="name" id="name" class="name">
  <p class="typeItDesc">Review your signature</p>
  <p class="drawItDesc">Draw your signature</p>
  <ul class="sigNav">
    <li class="typeIt"><a href="#type-it" class="current">Type It</a></li>
    <li class="drawIt"><a href="#draw-it">Draw It</a></li>
    <li class="clearButton"><a href="#clear">Clear</a></li>
  </ul>
  <div class="sig sigWrapper">
    <div class="typed"></div>
    <canvas class="pad" width="198" height="55"></canvas>
    <input type="hidden" name="output" class="output">
    <input type="hidden" name="imgOutput" class="imgOutput">
  </div>
  <button type="submit">I accept the terms of this agreement.</button>
</form>
<script>
  var sig;
  $( document ).ready( function ( ) {
    sig = $('.sigPad').signaturePad();
  } );
  $( '.sigPad' ).submit( function ( evt ) {
    $( '.imgOutput' ).val( sig.getSignatureImage( ) );
  } );
</script>

服务器端

<?php
$img_output = $_POST['imgOutput'];
if ( base64_encode( base64_decode( $img_output ) ) === $img_output ) {
  require_oncde 'dompdf_config.inc.php';
  $html = '<p>Your Signature:</p><p><img src="' . $img_output . '"></p>';
  $dompdf = new DOMPDF;
  $dompdf->load_html( $html );
  $dompdf->render( );
  $dompdf->stream( );
} else {
  // exception logic ... "your signature was not valid"
}
?>

对来自 How to check if a string is base64 valid 的签名图像作为有效 base64 的简单验证

关于javascript - 签名板和dompdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17404136/

相关文章:

javascript - React-Native Android 问题从 0.18.0 升级到 0.19.0

javascript - 如何使用 javascript 检测客户端的图像规范

php - dompdf HTML to PDF - 无法设置页边距

php - CSS 不适用于 DOMPDF

javascript - 在哪里/如何为我自己创建的表单(Vue)组件定义提交目的地?

javascript - 无法解析 Ajax 调用错误部分中的 json 对象值

php - PHP中(对象)数组(键=>值)的反转是什么?

php - Codeigniter 在名为 'State' 的对象属性上失败

php - 是否有可重复使用的 PHP 路由器/调度程序?

html - 使用 Laravel DomPDF 制作 PDF 文件