首页 > 编程语言 >Html+JavaScript实现手写签名

Html+JavaScript实现手写签名

时间:2023-08-17 09:35:49浏览次数:34  
标签:picture false JavaScript getElementById Html let 签名 手写

前言

Hello各位,本葡萄又来啦,今天遇到的场景是这样的:在日常业务流程中,经常需要某一流程环节中相关责任人员进行审批签字,早期许多公司为了省事就直接会把这位负责人的签名以键盘打字(楷体)的形式打印出来,但是这样的坏处就是会导致所有的负责人的签名都是一样的,没有美感,为了解决这个问题,一些公司就开始使用手写签名(用鼠标或者是电子笔写出来的签名)代替电子签名,今天本葡萄就为大家简单的介绍下手写签名到底是怎么实现的。话不多说,先上效果图:

看完效果图之后,下面为大家介绍实现的详细过程。

使用Html+JavsScript实现手写签名的添加

1.实现Html界面

<!doctype html>

<html>

<head>

<title>SpreadJS in TypeScript</title>

<!--引入在线Excel资源-->

<link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets/styles/gc.spread.sheets.excel2013white.css">

<link rel="stylesheet" type="text/css" href="node_modules/@grapecity/spread-sheets-designer/styles/gc.spread.sheets.designer.min.css">

<script src="node_modules/systemjs/dist/system.src.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.0/jquery.min.js" integrity="sha512-3gJwYpMe3QewGELv8k/BX9vcqhryRdzRMxVfq6ngyWXwo03GFEzjsUm8Q7RZcHPHksttq7/GFoxjCVUjkjvPdw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jSignature/2.1.3/jSignature.min.js" integrity="sha512-lZ7GJNAmaXw7L4bCR5ZgLFu12zSkuxHZGPJdIoAqP6lG+4eoSvwbmKvkyfauz8QyyzHGUGVHyoq/W+3gFHCLjA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

<script src="systemjs.config.js"></script>

<script>

System.import('./src/app');

</script>

</head>

<!--添加清空和确认功能-->

<body>

<div id="signArea" style="position: absolute;top:100px;left:200px;visibility:hidden;z-index:100">

<div id="sign" style="height:300px;width:600px;border:1px dashed \#ddd;margin-bottom:10px"></div>

<div>

<button id="clear">清空</button>

<button id="confirm">确认</button>

</div>

</div>

<div id="designer-container" style="width:100%;height:90vh;border:1px solid darkgray"></div>

</body>

</html>

首先引入需要的在线Excel资源包,然后添加增加清空和确认手写签名两个按钮。

2.手写签名的JavsScript实现方法

(1) 添加手写签名:

let config = JSON.parse(JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig))

let customeAddSign = {

"text":"添加手写签名",

commandName:"customeAddSign",

execute:() =\> {

if(document.getElementById("signArea")){

document.getElementById("signArea").style.visibility = 'visible'

}

}

}

(2) 追加右键自定义菜单:

核心代码:

// 追加自定义右键菜单

config.contextMenu.push("customeAddSign")

config.commandMap = {

customeAddSign

}

let designer = new GC.Spread.Sheets.Designer.Designer("designer-container",config)

let spread = designer.getWorkbook()

$("#sign").jSignature({lineWidth:'16',width:'100%',height:'100%'})

document.getElementById("clear").onclick = function(){

$("#sign").jSignature("reset")

}

document.getElementById("confirm").onclick = function(){

let datapair = "data:" + $("#sign").jSignature("getData")

let sheet = spread.getActiveSheet()

let row = sheet.getActiveRowIndex()

let col = sheet.getActiveColumnIndex()

let picture = sheet.shapes.addPictureShape(`${sheet.name()}-${row}-${col}}`, datapair,0,0,100,100);

picture.startRow(row)

picture.endRow(row + 1)

picture.startColumn(col)

picture.endColumn(col + 1)

picture.startRowOffset(0);

picture.startColumnOffset(0);

picture.endRowOffset(0);

picture.endColumnOffset(0);

picture.allowResize(false)

picture.allowMove(false)

picture.allowRotate(false)

$("#sign").jSignature("reset")

document.getElementById("signArea").style.visibility = 'hidden'

}

这一步的作用是实现在Excel单元格中添加手写签名的功能,右键菜单选择手写签名后会调用对应的签名插件,在签名插件上可以用鼠标进行输入,输入完之后点击确认就会显示在单元格中。

完整代码和在线Demo地址:

相信看到这里,很多小伙伴已经想操作一下了吧,本葡萄也为大家准备了一个自由发挥的平台,点击下方链接便可以跳转到对应的Demo在线地址(安全可食):

https://jscodemine.grapecity.com/share/sXBAh7hZ00SAsemg_1jLbQ/?IsEmbed=false&Theme=Unset&PreviewDirection=0&IsEditorShow=true&IsExplorerShow=true&IsPreviewShow=true&IsConsoleShow=true&IsRunBTNShow=false&IsResetBTNShow=false&IsOpenInCodemineBTNShow=false&PanelWidth=20&PanelWidth=50&PanelWidth=30&defaultOpen={"OpenedFileName"%3A["%2Findex.html"]%2C"ActiveFile"%3A"%2Findex.html"}

扩展链接:

Spring Boot框架下实现Excel服务端导入导出

项目实战:在线报价采购系统(React +SpreadJS+Echarts)

Svelte 框架结合 SpreadJS 实现纯前端类 Excel 在线报表设计

标签:picture,false,JavaScript,getElementById,Html,let,签名,手写
From: https://www.cnblogs.com/powertoolsteam/p/17636676.html

相关文章

  • 基于LeNet网络的MNIST手写数字训练和识别matlab仿真
    1.算法理论概述      基于LeNet网络的MNIST手写数字训练和识别的实现步骤。首先,我们将介绍MNIST数据集的基本信息和LeNet网络的结构及其原理。然后,我们将详细说明数据预处理、LeNet网络的实现过程和训练过程。最后,我们将展示如何使用训练好的LeNet网络对手写数字进行识别,......
  • HTML5
    HTML51.网页基本元素<!DOCTYPEhtml><!--告诉浏览器使用什么规范--><htmllang="en"><!--总标签--><head><!--代表网页头部--><metacharset="UTF-8"><!--描述网页的一些信息--><title>我的第一个网页</title><!--网......
  • 手写raft(二) 实现日志复制
    1.Raft日志复制介绍在上一篇博客中MyRaft实现了leader选举,为接下来实现日志复制功能打下了基础:手写raft(一)实现leader选举日志复制是raft最核心也是最复杂的功能,大体上来说一次正常的raft日志复制大致可以简化为以下几步完成:客户端向raft集群发送一次操作请求(比如kv数......
  • HTML5总结
    一、认识HTML5      (1)H5即是HTML的一个最新的版本,也是web的一个标准。(2)结合CSS3中的内容如:圆角、动画、过渡等效果,提高用户的体验。    (3)新增了javascript的api,使得操作dom更加的方便。(4)还增加了与硬件结合的功能:定位、重力感应.硬件访问......
  • JavaScript面试题2
    JavaScript21.下面代码的输出是什么?functionsayHi0{ console.log(name);        console.log(age);        varname="Lydia";        letage=21;       }//打印出来:undefined和......
  • javascript学习笔记day2
    今天在b站跟学了黑马的前端js课程,因为是第一天学习都对于我们这种学过了的来说其实挺简单的,不过今天一边做公司的项目一边学习多少是有点时间不够的感觉,看样子明天要开二倍看了,下面是今天的笔记什么是js:javascript是人机交互的一种编程语言js由哪几部分组成:ECMAScript和webapis......
  • 小程序手写tab切换下边框跟随移动特效
    简单效果就是这样,主要是用到微信的动画和获取元素信息left处理。具体来说就是先给红色的边一个固定位置,等到点击切换下一个按钮的时候,获取到下一个按钮的left信息,然后对红色边框使用translateX动画效果,代码如下:wxml<viewclass="tab"><viewbindtap="changeType"id="a1......
  • JavaScript实现大文件上传
    ​ASP.NET上传文件用FileUpLoad就可以,但是对文件夹的操作却不能用FileUpLoad来实现。下面这个示例便是使用ASP.NET来实现上传文件夹并对文件夹进行压缩以及解压。ASP.NET页面设计:TextBox和Button按钮。 ​编辑TextBox中需要自己受到输入文件夹的路径(包含文件夹),通过Button......
  • 推荐一个面向对象的javascript框架mootools
    MooTools是一个简洁,模块化,面向对象的开源JavaScriptweb应用框架。浏览器支持:支持IE6以上,也支持firefox,safari等与jQuery、Prototype、YUI、Dojo几个更有名的相比,它的优点在:优点:1.灵活,模块化的框架,用户可以选择自己需要的组件。2.MooTools符合OO的思想,使代码更强壮,有力,有效。适合......
  • html5中的file控件支持多文件选择上传
    在前两天的博文中刚介绍了一款基于jquery的多文件上传控件uploadify,原理是基于flash达到上传效果的另外,还有一种基于隐藏iframe来实现多文件上传的方法(iframe中放一个form)。但是其实在Html5中,file控件已经支持多文件选择了。file控件元素支持多文件选择,其隐藏的玄机就是下面代码......