当前位置:   article > 正文

vue中使用电子签名_vue 实现给word文档添加电子签名

vue 实现给word文档添加电子签名

使用vue-cli4脚手架,js-signature 2.0.0(https://www.npmjs.com/package/jq-signaturejquery 3.4.1。

1.安装jq及js-signature(js-siganture依赖于jquery)

npm i jquery jq-signature -S

2.小插曲->若只使用jquery,只需要在使用的组件中导入或者在入口main.js中配置

2.1 方式一 :组件中直接使用

  1. <template>
  2. <div id="test">
  3. </div>
  4. <script>
  5. import $ from 'jquery';
  6. export default{
  7. mounted(){
  8. let dv = $("#test");
  9. console.log(dv)
  10. }
  11. }
  12. </script>

2.2方式二:

main.js中配置

  1. import Vue from 'vue'
  2. import App from './App.vue'
  3. import Router from './router'
  4. import Store from './store'
  5. import $ from 'jquery'
  6. Vue.prototype.$ = $;
  7. new Vue({
  8. Router,
  9. Store,
  10. render:h=>h(App)
  11. }).$mount('#app')

使用:

  1. <template>
  2. <div id="test">
  3. </div>
  4. <script>
  5. export default{
  6. mounted(){
  7. let dv = this.$("#test");
  8. console.log(dv)
  9. }
  10. }
  11. </script>

3。言归正传,开始电子签名,需要在vue.config.js中配置jquery插件,否则jq-signature会报错:jQuery is undefined

vue.config.js配置如下

  1. const webpack = require('webpack')
  2. module.exports = {
  3. chainWebpack:config=>{
  4. config.plugin('provide').use(webpack.ProvidePlugin,[
  5. {
  6. $:'jquery',
  7. jquery:'jquery',
  8. jQuery:'jquery',
  9. 'window.jQuery':'jquery'
  10. }
  11. ])
  12. }
  13. }

使用:

  1. <template>
  2. <div id="app">
  3. <div id="signature" style="width:100%;height:300px;"></div><!-- 画布容器 -->
  4. <button id="clearSignature" @click='clearSignature'>清除签名</button>
  5. <button id="saveSignature" @click='saveSignature'>保存签名</button>
  6. <div id="result"></div><!-- 预览容器 -->
  7. </div>
  8. </template>
  9. <script>
  10. import 'jq-signature'//也可以在入口js文件main.js中导入,则此处不用在导入
  11. export default {
  12. data(){
  13. return{
  14. }
  15. },
  16. mounted(){
  17. $('#signature').jqSignature({
  18. width:'300',//canvas 宽度,默认值300
  19. height:'200',//canvas 高度,默认值100
  20. border:'1px solid #ff6700',//canvas 边框,默认值'1px solid red'
  21. background:'#ddd',//canvas 背景,默认值'#ffffff'
  22. lineColor:"#0A4D82",//签名线条颜色,默认值'#222222'
  23. lineWidth:3,//签名线条宽度,默认值1
  24. autoFit:true//使canvas的宽度充满父元素,默认值 false
  25. })
  26. },
  27. methods:{
  28. clearSignature(){
  29. $('#result').html('')//清除预览img
  30. $('#signature').jqSignature('clearCanvas')//清除canvas
  31. },
  32. saveSignature(){
  33. let signatureBox = $('#signature');
  34. let canvas = signatureBox.children('canvas').eq(0)[0]
  35. let data = signatureBox.jqSignature('getDataURL');//base64数据
  36. //创建一个空的canvas,判断是否画布为空
  37. var blankCanvas = document.createElement('canvas');
  38. blankCanvas.width = canvas.width;
  39. blankCanvas.height = canvas.height;
  40. if(blankCanvas.toDataURL() == canvas.toDataURL()){
  41. alert('请签名')
  42. return;
  43. }
  44. //为了解决在ios设备上修改img标签src地址无效的问题,所以每次保存重新创建一个预览img标签,在清除签名时,在移除img标签
  45. let img = new Image();
  46. img.src = data;
  47. img.onload = (e)=>{
  48. $('#result').append(img)
  49. }
  50. img.onerror = (e)=>{
  51. console.log('预览失败')
  52. }
  53. }
  54. }
  55. }
  56. </script>

效果图:

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号