首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何开始在浏览器中添加可在PDF上填写的字段?(如电子签名)

如何开始在浏览器中添加可在PDF上填写的字段?(如电子签名)
EN

Stack Overflow用户
提问于 2019-05-02 22:26:55
回答 1查看 133关注 0票数 0

有一百万个网站提供电子签名,通常是让您在放置签名的PDF (或转换为PDF的文件)上绘制一个矩形。

我假设这是使用Canvas元素和AJAX将绘制矩形的位置发送回服务器。

我的非营利性组织已经使用了一个很棒的开源文档组装工具Docassemble。我想利用我们现有的表单库来允许与签名的直接集成。实际上,我已经构建了一个执行电子签名的Docassemble应用程序,但您需要在上传文件之前手动将字段放入文件中。将签名位置放在浏览器中会使它的性能成倍提高。不得不将其转给第三方可能超出了我们的支付能力,但也没有多大用处。

我不是一个新手程序员,但我从来没有使用过Canvas元素。我真的不知道从哪里开始这个项目。有什么建议吗?有没有什么库可以帮上忙?Docassemble是基于Python/Flask和Jquery构建的,但这看起来更像是一个通用的JavaScript问题。我见过这么多廉价的Docusign克隆版的这个功能,我想知道是不是有一个库是我的Google-fu找不到的。

EN

回答 1

Stack Overflow用户

发布于 2019-05-03 06:13:52

看看https://github.com/szimek/signature_pad (live demo),它没有外部deps。

PNG目录中的示例实现了一个Save PNG按钮,该按钮在用户的浏览器中下载一个PNG。我可以修改these lines from the example来调用我自己的上传函数:

代码语言:javascript
复制
var dataURL = signaturePad.toDataURL();
// download(dataURL, "signature.png");
upload(dataURL)

此函数发出AJAX POST请求:

代码语言:javascript
复制
function upload(data){
  xhr = new XMLHttpRequest();
  xhr.open('POST', '/submit');
  xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xhr.onload = function() {
      if (xhr.status === 200) {
          alert('Data submitted: ' + xhr.responseText);
      }
      else if (xhr.status !== 200) {
          alert('Request failed.  Returned status of ' + xhr.status);
      }
  };
  xhr.send(encodeURI('data=' + data));

现在,在我的/submit路由中,request.form['data']是一个inline image,它可以存储在数据库中,也可以直接呈现在<img>标记的src属性中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55954601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档