我在用托马斯·J·布拉德利的插件 http://thomasjbradley.ca/lab/signature-pad/用于在 html 表单底部绘制两个签名,然后使用 dompdf 将其转换为 pdf,并使用 sendmail 作为附件通过电子邮件发送。
一切都运行良好,除了我似乎无法在不将签名保存到磁盘的情况下将签名重新绘制到 pdf 文件上,这是我想避免的。
布拉德利先生提供重新生成签名的几种方法 http://thomasjbradley.ca/lab/signature-pad/#regenerate但我需要一些关于如何将签名数据连同表单值一起传递到pdf转换器的建议,最好是“即时”(不将数据保存到磁盘或数据库)。
我将不胜感激任何答案。
如果您需要任何示例代码,请告诉我。
先感谢您!
您应该捕获签名图像,而不是重新生成签名。签名板可以以图像形式返回签名 http://thomasjbradley.ca/lab/signature-pad/#images编码为data URI https://en.wikipedia.org/wiki/Data_URI_scheme。 dompdf 理解数据 URI,因此您可以使用它来生成 PDF。如果您的目标平台不支持该方法,作者有很多选择转换签名服务器端 http://thomasjbradley.ca/lab/signature-pad/#images-serverside.
简而言之,该过程是捕获表单提交时输出的图像,将其传递到服务器,并使用签名动态填充 HTML 以生成 PDF。无需保存图像。
我没有使用过签名板,所以我使用的是作者的HTML模板 http://thomasjbradley.ca/lab/signature-pad/#accept-html作为示例代码的基础。
客户端
<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"
}
?>
对签名图像进行简单验证,验证其是否为有效的 base64如何检查字符串是否为 base64 有效 https://stackoverflow.com/a/10797086/264628
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)