昨天在技术群里看到有人在问电子签名的需求,通过uniapp开发的app,需要实现的签名、签名图片的缩放、拖动、并且和合同一起生成图片。于是利用空闲时间来写了写这个功能。
先看下具体效果

签名,生成合同

1、电子签名

电子签名目前已经有很多现成的插件,所以我这里直接选择了一个,有需要的可以看下https://ext.dcloud.net.cn/plugin?id=4354

代码如下:

HTML:

<view class="content"><view style="width: 750rpx ;height: 400px;"><l-signature disableScroll backgroundColor="#fff" ref="signatureRef" :penColor="penColor" :penSize="penSize":openSmooth="openSmooth"></l-signature></view><view style="display: flex;"><button @click="onClick('clear')">清空</button><button @click="onClick('undo')">撤消</button><button @click="onClick('save')">保存</button><button @click="onClick('openSmooth')">压感{{openSmooth?'开':'关'}}</button></view></view>

JS:

onClick(type) {if (type == 'openSmooth') {this.openSmooth = !this.openSmoothreturn}if (type == 'save') {this.$refs.signatureRef.canvasToTempFilePath({success: (res) => {// 是否为空画板 无签名console.log(res.isEmpty)// 生成图片的临时路径// app | H5 | 微信小程序 生成的是base64this.url = res.tempFilePath// console.log(res.tempFilePath)uni.setStorageSync('url',res.tempFilePath)uni.navigateTo({url:'/pages/result/result'})}})return}if (this.$refs.signatureRef)this.$refs.signatureRef[type]()}

效果如下:

2、电子签名图片的拖动缩放

在第一步完成之后,我们可以拿到一个base64格式的图片,在有些需求中签名显示的位置可能是不固定的,需要手动拖动调整,当然一般不会这么做。

拖动缩放我这里直接使用了uniapp自带的movable-area 和 movable-view组件,具体使用方式参见官方文档。


拖动代码如下:

         <movable-area class="max"><movable-view class="quyu" direction="all"><image :src="url" mode=""></image></movable-view></movable-area>

3、合同图片的生成

这一步主要使用了html2canvas和uniapp中的renderjs
html2canvas非常牛逼的一款插件,具体使用方式参见官方文档 http://html2canvas.hertzen.com/。

renderjs是一个运行在视图层的js。它比WXS更加强大。它只支持app-vue和web。

renderjs的主要作用有2个:
1、大幅降低逻辑层和视图层的通讯损耗,提供高性能视图交互能力
2、在视图层操作dom,运行 for web 的 js库

我们在这里主要用到的是它的第二个作用,操作DOM。因为html2canvas是需要根据dom来生成图片的。

主要代码如下:

<script lang="renderjs" module="canvasImage">import html2canvas from 'html2canvas'export default {methods: {// 生成图片需要调用的方法generateImage(e, ownerFun) {ownerFun.callMethod('_showLoading', '正在生成图片')setTimeout(() => {const dom = document.getElementById('pagePoster') html2canvas(dom, {width: dom.clientWidth, height: dom.clientHeight,scrollY: 0, // html2canvas默认绘制视图内的页面,需要把scrollY,scrollX设置为0scrollX: 0,useCORS: true, //支持跨域// scale: 2,}).then((canvas) => {console.log('啊啊啊',canvas)// html2canvas 生成成功的图片链接需要转成 base64位的urlownerFun.callMethod('receiveRenderData', canvas.toDataURL('image/png'))}).catch(err => {ownerFun.callMethod('_errAlert', `【生成图片失败,请重试】${err}`)})}, 300)}}}
</script>

最终效果如下图所示:

到此结束!

移动端电子签名,签名内容移动缩放,生成合同图片(uniapp)相关推荐

  1. 电子签名生成的图片为空白,以及生成透明底签名图片转为白色底

    电子签名如何解决生成的图片为空白的问题,以及生成透明底签名图片转为白色底 一.生成的图片为空白 项目有个新需求需要加电子签名,在实现的过程中遇到了许多问题,现用的插件笔画延迟非常严重,好不容易做完之后 ...

  2. pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件。

    pdfh5.js 基于pdf.js和jQuery,web/h5/移动端PDF预览手势缩放插件. 注意:本地绝对路径地址不能加载,跨域问题用代理或者服务端解决. svg模式渲染存在缺陷,只能渲染普通pd ...

  3. 短视频内容理解与生成技术在美团的创新实践

    点击上方"LiveVideoStack"关注我们 美团围绕丰富的本地生活服务电商场景,积累了海量视频数据.如何通过计算机视觉技术用相关数据,为用户和商家提供更好的服务,是一项重要的 ...

  4. html5 占位图片,placeholder.js-可在浏览器端生成占位图片的js插件

    placeholder.js是一款轻量级的可在浏览器端生成占位图片的javascript库插件.该图片占位插件大小小于1kb,不依赖于任何js框架,并提供完善的配置参数和简单的方法.它的特点还有: 不 ...

  5. Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件

    为什么80%的码农都做不了架构师?>>>    Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件 http://www.swiper.com ...

  6. [html] 移动端如何禁止用户手动缩放页面?

    [html] 移动端如何禁止用户手动缩放页面? <meta name="viewport" content="width=device-width,initial- ...

  7. 也谈WEB打印(四):让我们的模板支持打印,并根据内容动态的生成页面

    在上一篇文章<也谈WEB打印(三):抛开IE,实现我们自己的打印模板>中,我们写了一个自己的打印模板,然而,该模板并不支持打印,也只能显示2个页面.在本文,我们继续完善该模板,以让他支持打 ...

  8. PC端与虚拟机内容拷贝

    PC端与虚拟机内容拷贝 在安装Ubuntu系统后发现与Windows系统的文件不能相互复制,网上查了很多教程,发现都是不能用的,能实现的方法如下所示: 第一步: sudo apt-get autore ...

  9. 如何编辑二维码内容并批量生成

    随着社会的发展,更加智能的二维码使用也变得越来越普遍,那么我们所看到的五颜六色或者各种样式的二维码都是如何添加内容和制作的呢?下面我们就中琅二维码软件来看一下如何编辑二维码内容并且实现批量生成的方法: ...

最新文章

  1. 路由及路由器工作原理深入解析3:路由与port
  2. 分布式常见问题解决方案
  3. MFC窗口位置和大小的获取
  4. 对话机器学习大神Yoshua Bengio(上)
  5. eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean
  6. access在sql中横向求和_access在sql中横向求和_求和还用Sum函数就out了,快捷键Alt+=一秒搞定,操作简单更高效......
  7. Android中的Broadcast Action大全
  8. perl大骆驼和小骆驼_从代码内部:骆驼路由引擎第一部分
  9. android wear 2 手表,Android Wear 2.0 和新款智能手表有望在2月8号发布
  10. centos运行python程序_CentOS 7定时执行python脚本
  11. 微服务架构最强讲解,通俗易懂,写得太好了!
  12. U2Net基于ModelArts Notbook的仿真实验
  13. 二级公共基础知识_计算机系统习题,二级公共基础知识新增章节
  14. python解决一些错误换行问题
  15. 中控考勤机官方开发包java,zkteco iface702 中控考勤机java开发步骤一---连接考勤机...
  16. 通达OA破解版下载|通达OA2015破解版 可用|通达oa2015破解补丁
  17. 2022PMP考试敏捷知识点(3)
  18. 外卖点餐系统(App及后台)
  19. teraterm 执行sql命令_Tera Term怎么安装?Tera Term安装使用详细图文教程
  20. Qt自定义对话框及调用方法

热门文章

  1. 设置图表标题、坐标轴标题及窗口标题
  2. 电脑使用DP线连接显示器,插在显示器音频口的音响没有声音解决办法
  3. return 的含义
  4. 基于京东micro-app微前端框架的项目实践
  5. android 按键用户点击事件,Android按键事件处理过程详解
  6. 佳能R3、佳能R5和佳能R6的区别
  7. 【终极之战】基于Vue3+Vant3造一个网页版的类掘金app项目 - 个人主页
  8. 一名合格的拼多多运营需要具备哪些技能?
  9. design短语的用法总结_design的用法
  10. 均值、方差、标准差的理解