Vue component wrap for signature pad
Note: If you are still using Vue 2, please install 2.0.5 version, for Vue 3 you can install the latest publish version.
$ yarn add vue-signature-pad
import Vue from 'vue';
import VueSignaturePad from 'vue-signature-pad';
Vue.use(VueSignaturePad);
<template>
<div id="app">
<VueSignaturePad width="500px" height="500px" ref="signaturePad" />
<div>
<button @click="save">Save</button>
<button @click="undo">Undo</button>
</div>
</div>
</template>
<script>
export default {
name: 'MySignaturePad',
methods: {
undo() {
this.$refs.signaturePad.undoSignature();
},
save() {
const { isEmpty, data } = this.$refs.signaturePad.saveSignature();
console.log(isEmpty);
console.log(data);
}
}
};
</script>
import { createApp } from 'vue'
import App from './App.vue'
import { VueSignaturePad } from 'vue-signature-pad';
const app = createApp(App)
app.component("VueSignaturePad", VueSignaturePad);
app.mount('#app')
<template>
<div id="app">
<VueSignaturePad ref="signaturePad" />
<div>
<button @click="save">Save</button>
<button @click="undo">Undo</button>
</div>
</div>
</template>
<script>
import { defineComponent } from "vue";
export default defineComponent({
name: 'MySignaturePad',
methods: {
undo() {
this.$refs.signaturePad.undoSignature();
},
save() {
const { isEmpty, data } = this.$refs.signaturePad.saveSignature();
console.log(isEmpty);
console.log(data);
}
}
});
</script>
<template>
<div id="app">
<VueSignaturePad width="500px" height="500px" ref="signaturePad" />
<div>
<button @click="save">Save</button>
<button @click="undo">Undo</button>
</div>
</div>
</template>
<script>
import { defineComponent } from "vue";
import { VueSignaturePad } from 'vue-signature-pad';
export default defineComponent({
name: 'MySignaturePad',
components: { VueSignaturePad },
methods: {
undo() {
this.$refs.signaturePad.undoSignature();
},
save() {
const { isEmpty, data } = this.$refs.signaturePad.saveSignature();
console.log(isEmpty);
console.log(data);
}
}
});
</script>
vue-signature-pad use szimek/signature_pad default setting as options
, feel free custom you wanted options. In v1.1 add onBegin
and onEnd
event callback:
<template>
<div id="app">
<VueSignaturePad
width="500px"
height="500px"
ref="signaturePad"
:options="{ onBegin, onEnd }"
/>
</div>
</template>
<script>
export default {
methods: {
onBegin() {
console.log('=== Begin ===');
},
onEnd() {
console.log('=== End ===');
}
}
};
</script>
Name | Type | Default | Description | Example |
---|---|---|---|---|
width | String | 100% |
Set the div width. |
- |
height | String | 100% |
Set the div height. |
- |
options | Object | Reference | Set the signature pad options. | Reference |
images | Array | [] |
Merge signature with the provide images. | ['A.png', 'B.png', 'C.png'] or [{ src: 'A.png', x: 0, y: 0 }, { src: 'B.png', x: 0, y: 10 }, { src: 'C.png', x: 0, y: 20 }] |
customStyle | Object | {} |
Custom div style. |
{ border: black 3px solid } |
scaleToDevicePixelRatio | Boolean | true |
Scale the canvas up to match the device pixel ratio. | - |
Name | Argument Type | Description |
---|---|---|
saveSignature(type, encoderOptions) |
(String, Number) |
Will return target canvas status and data. |
undoSignature() |
- | Undo |
clearSignature() |
- | Clear |
mergeImageAndSignature(signature) |
Object or String |
Provide images as props and will merge with signature. |
addImages(images) |
Array |
Provide the images merge with signature. Reference above images property. |
lockSignaturePad() |
- | Lock target signature pad. |
openSignaturePad() |
- | Open target signature pad. |
getPropImagesAndCacheImages() |
- | Get all the images information. |
clearCacheImages() |
- | Clear cache images. |
fromDataURL(data, options, callback) |
(String, Object, Callback) |
Draw image from data URL. |
fromData(data) |
String |
Returns signature image as an array of point groups. |
toData() |
- | Draws signature image from an array of point groups. |
isEmpty() |
- | Return signature canvas have data. |
szimek/signature_pad - HTML5 canvas based smooth signature drawing
MIT © Peng Jie