如何快速实现电子签名?vue-esign:一款超实用的Vue手写签字组件
vue-esign 是一款基于 Vue.js 的轻量级电子签名组件,通过 Canvas 技术实现手写签字功能,完美支持 PC 和移动端设备,帮助开发者快速集成专业级电子签名功能到 Web 应用中。无论是合同签署、表单确认还是在线审批场景,它都能提供流畅的签字体验和高质量的图片导出效果。
✨ 为什么选择 vue-esign?5大核心优势
1️⃣ 全设备兼容,无缝签字体验
告别设备适配烦恼!vue-esign 深度优化了 PC 端鼠标操作和移动端触屏手写的识别精度,确保在不同设备上都能获得自然流畅的签字感受。画布还能智能适应屏幕尺寸变化,窗口缩放或手机旋转时无需重置,自动校正坐标位置。
2️⃣ 高度自定义,打造专属签名面板
根据业务需求灵活配置:
- 调整画布尺寸(导出图片尺寸)
- 设置画笔粗细(1-20px)和颜色(支持十六进制、RGB、RGBA格式)
- 自定义画布背景色(透明/纯色)
- 开启裁剪功能,自动去除签名四周空白区域
图:vue-esign电子签名组件实际操作演示,展示手写签字、清空和生成图片的完整流程
3️⃣ 一键导出高清图片
支持将签名导出为 base64 格式图片,可直接用于:
- 表单提交保存
- PDF 文档嵌入
- 打印或展示在页面中 提供
image/png、image/jpeg、image/webp三种格式选择,并可调节图片质量(0-1 区间)。
4️⃣ Vue2/Vue3 双版本支持
无需担心项目版本兼容性:
- Vue2 项目直接通过
.sync修饰符绑定背景色 - Vue3 项目使用
v-model:bgColor语法 安装最新版即可自动适配,对旧项目无任何影响。
5️⃣ 超简单集成,5分钟上手
从安装到实现签字功能仅需3步,适合新手开发者快速接入。
🚀 快速开始:vue-esign安装与使用指南
环境准备
确保已安装 Node.js 和 npm,然后通过以下命令克隆项目:
git clone https://gitcode.com/gh_mirrors/vu/vue-esign.git
1️⃣ 安装组件
进入项目目录后执行:
npm install vue-esign --save
2️⃣ 引入组件
全局引入(推荐)
Vue2 项目(main.js):
import vueEsign from 'vue-esign'
Vue.use(vueEsign)
Vue3 项目(main.js):
import { createApp } from 'vue'
import App from './App.vue'
import vueEsign from 'vue-esign'
const app = createApp(App)
app.use(vueEsign)
局部引入(组件内)
import vueEsign from 'vue-esign'
export default {
components: { vueEsign }
}
3️⃣ 基础使用示例
Vue2 模板:
<vue-esign
ref="esign"
:width="800"
:height="300"
:lineWidth="6"
:lineColor="#000000"
:bgColor.sync="bgColor"
/>
<button @click="handleReset">清空画板</button>
<button @click="handleGenerate">生成图片</button>
Vue3 模板:
<vue-esign
ref="esign"
:width="800"
:height="300"
:lineWidth="6"
:lineColor="#000000"
v-model:bgColor="bgColor"
/>
核心方法调用:
methods: {
// 清空画布
handleReset() {
this.$refs.esign.reset()
},
// 生成签名图片
handleGenerate() {
this.$refs.esign.generate().then(res => {
console.log('签名图片base64:', res)
// 此处可将res上传到服务器或展示在页面
}).catch(err => {
alert('请先完成签名!')
})
}
}
⚙️ 高级配置:解锁更多实用功能
关键属性配置表
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| width | Number | 800 | 画布宽度(导出图片宽度) |
| height | Number | 300 | 画布高度(导出图片高度) |
| lineWidth | Number | 4 | 画笔粗细(1-20) |
| lineColor | String | #000000 | 画笔颜色 |
| bgColor | String | 空 | 画布背景色(支持透明) |
| isCrop | Boolean | false | 是否裁剪空白区域 |
| isClearBgColor | Boolean | true | 清空画布时是否保留背景色 |
| format | String | image/png | 导出图片格式 |
| quality | Number | 1 | 图片质量(0-1,仅jpeg/webp有效) |
实用场景示例
场景1:合同签署页
设置白色背景+黑色画笔,开启裁剪功能,确保签名紧密贴合内容区域:
<vue-esign
ref="esign"
:width="600"
:height="200"
:lineWidth="5"
:lineColor="#333333"
:bgColor="'#ffffff'"
:isCrop="true"
/>
场景2:透明水印签名
生成透明背景的签名图片,用于叠加到其他文档:
<vue-esign
ref="esign"
:width="400"
:height="150"
:lineWidth="3"
:lineColor="rgba(0,0,0,0.6)"
:bgColor="''" <!-- 空字符串表示透明 -->
/>
📝 常见问题与解决方案
Q1:移动端签字时笔画有延迟怎么办?
A:可适当降低画笔粗细(lineWidth ≤ 8),或调整画布尺寸为屏幕宽度的80%(通过JS动态计算width值)。
Q2:导出的JPG图片背景变黑?
A:JPG格式不支持透明背景,解决方法:
- 设置
bgColor="#ffffff"白色背景 - 改用
format="image/png"格式导出
Q3:Vue3中背景色绑定报错?
A:Vue3需使用 v-model:bgColor 替代 .sync 修饰符,示例:
<vue-esign v-model:bgColor="bgColor" />
🎯 总结:vue-esign的适用场景
vue-esign 凭借其轻量、易用、高度自定义的特性,广泛适用于:
- 在线合同签署系统
- 电子表单确认环节
- 教育平台作业批改
- 内部审批流程
- 会员协议签署
只需几行代码,即可为你的 Vue 项目集成专业的电子签名功能,提升用户体验和业务效率!现在就动手试试吧~
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



