签名板和 dompdf

2024-02-03

我在用托马斯·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(使用前将#替换为@)

签名板和 dompdf 的相关文章

随机推荐

  • git克隆https/ssl错误[重复]

    这个问题在这里已经有答案了 我已经在我的 git 服务器中安装了 ssl 证书和密钥 但是当我尝试从 mysysgit 通过 https 克隆时出现错误 早些时候 它在 http 上工作得很好 无法确定问题出在哪里 git clone ht
  • Angular-cli 测试覆盖所有文件

    我正在运行以下命令来进行单元测试并生成代码代码覆盖率报告 ng test code coverage 它正在覆盖率文件夹中写入代码覆盖率报告 我需要查看整个项目的覆盖范围 而不仅仅是进行测试的文件 karma conf js module
  • 如何对 Python 字典执行集合运算?

    虽然能够在字典的键之间执行集合操作非常有用 但我经常希望可以对字典本身执行集合操作 我找到了一些服用食谱两个词典的区别 http code activestate com recipes 576644 diff two dictionari
  • 使用 Python 的 ElementTree 查找顶级 xml 注释

    我正在使用 Python 的 ElementTree 解析 xml 文件 如下所示 et ElementTree file file test xml test xml 以几行 xml 注释开头 有没有办法从 et 那里得到这些评论 对于
  • 如何获取 IOrderedQueryable 中项目的索引?

    背景 我正在设计一个类似列表的控件 WinForms 它由DbSet 一个主要要求是它doesn t将整个列表加载到本地内存中 我正在使用一个DataGridView在虚拟模式下作为底层 UI 我正计划实施CellValueNeeded充当
  • ASP.NET MVC - 部分视图可以有控制器吗?

    当我在视图中调用时 Html RenderPartial MyPartialView MyObject 我可以设置它以便该部分视图有一个在调用 RenderPartial 时调用的控制器吗 使用可能会更好渲染动作 http msdn mic
  • 使用 在从 XSL FO 生成的 PDF 中插入换行符

    我正在使用 XSL FO 生成一个包含信息表的 PDF 文件 其中一列是 描述 列 我填充这些描述字段之一的字符串示例如下 This is an example Description br List item 1 br List item
  • 如何访问手机照片库中的图像?

    顺便问一下 有人知道如何访问手机的照片库吗 我正在制作一个应用程序来拍摄植物叶子的照片 分析图像以确定其是否已确定 我们希望我们 可以为用户提供两种选择 拍摄叶子的照片或使用植物的图像 用户已经拿走的叶子 然而 我们拍了照片 但我们没有 知
  • 使用 Spring AOP 进行方法分析(基本执行时间)

    我正在寻找一种功能或软件 它可以让我轻松地分析我的方法执行时间并选择通过包过滤器分析的内容 我知道 它是探查器 101 我使用 TPTP 分析器 但我对此并不满意 坦率地说 我只是不明白它是如何工作的 当我分析我的应用程序 以分析模式启动服
  • xpath:查找不同行中具有相同位置的表格单元格

    我正在解析一个包含如下结构的网页 tr td Label 1 td td Label 2 td td Label 3 td td Something else td lt tr gt tr td Item 1 td td Item 2 td
  • 什么是 {block:Hidden} 以及何时使用它?

    block Hidden
  • htaccess 获取不带路径的文件名

    我正在尝试获取所请求的不带路径的文件名使用 htaccess 作为 RewriteCond REQUEST FILENAME返回完整的绝对路径 但我只需要文件名 例如test php 我一直在寻找这个很多 但找不到任何可以帮助我的东西 感谢
  • Webdeploy权限问题

    我有 3 个 Web 部署 Visual Studio 将项目发布到包 包 我使用 msdeploy 命令与服务器同步 其中一个包是新添加的 除了新添加的包之外 其他两个包都工作正常 我在日志中看到以下错误 我不确定在哪里设置此权限 因为
  • TCP - 接收顺序错误

    是否有可能以错误的顺序 由序列号指示 获取 TCP 数据包 那么接收方会发生什么 例如 是否有任何队列容纳 太早 到达的口袋 或许 接收 TCP 引擎对于要做什么有多种选择 它唯一不能做的就是将这些无序数据包中的数据无序地传递到接收进程 接
  • 表 MYSQL 的密钥文件不正确

    当我想按查询分组时 我收到此错误消息 Incorrect key file for table tmp sql 623d 0 MYI try to repair it 它是一个 InnoDB 表 有 3 000 000 条记录 大小为 4
  • PHP 的设计模式 - 访问者模式与仆人模式

    我发现这两种模式很相似 以及大多数其他行为模式 访客模式 interface Visitor public function visit Visitable Visitable interface Visitable public func
  • java.lang.ClassCastException:org.ksoap2.serialization.SoapPrimitive?

    我正在从我的 Android 客户端应用程序调用 Web 服务 当我尝试显示它时得到响应后 我收到 ClassCastException 以下是我的代码 public void onClick View v setContentView R
  • mysql_insert_id 使用安全吗?

    根据 PHP 文档 mysql insert id从 mysql 表中获取最后插入的 id 我的问题是 如果我有一个网站每秒向数据库插入超过 2 行 我可以使用mysql insert id并获取我在中提到的正确 IDINSERT查询之前的
  • Redis“客户端列表”用途和说明

    在执行 客户端列表 时 我得到以下结果 每个标志的含义是什么 奴隶 addr 100 0 0 0 0000 fd 5 空闲 3 标志 S db 0 sub 0 psub 0 qbuf 0 obl 0 oll 0 事件 r cmd sync
  • 签名板和 dompdf

    我在用托马斯 J 布拉德利的插件 http thomasjbradley ca lab signature pad 用于在 html 表单底部绘制两个签名 然后使用 dompdf 将其转换为 pdf 并使用 sendmail 作为附件通过电