html2canvas github地址
https://github.com/niklasvh/html2canvas
使用文档
https://html2canvas.hertzen.com/
1. 首先安装html2canvas

Install NPM

npm install --save html2canvas

Install Yarn

yarn add html2canvas

2. 要截图的布局(可以是整个html,body)这里我就随便写啦。

<div class="flexWrapper">
     <div class="wrapperLeft">
            <div class="leftHeader">leftHeader</div>
            <div class="leftContent">
                <template>
                  <div v-for="item in [1,2,3,4,5,6]" :key="item" style="height:200px;">{{item}}</div>
              </template>
            </div>   
     </div>
      <div class="wrapperRight" ref="resultCanvas">
          <div class="rightHeader">header</div>
          <div class="rightContent">
              <template>
                  <div v-for="item in [1,2,3,4,5,6]" :key="item" style="height:200px;">{{item}}</div>
              </template>
              <div>
                  
              </div>
          </div>
      </div>
</div>

3. 开始使用了

先import进来啦

 import html2canvas from 'html2canvas';

4. 自定义导出的方法

图片转格式

 dataURLToBlob(dataurl) {//ie 图片转格式
          var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
            bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
          while (n--) {
            u8arr[n] = bstr.charCodeAt(n);
          }
          return new Blob([u8arr], {type: mime})
        },

截图并导出
resultCanvas就是你要截图的部分
也可以是dom的id或者body
看自己的需求定义吧
一定要是dom元素,不然会报错!!!!

downloadResult() {
          let canvasID = this.$refs.resultCanvas;
          let that = this;
          let a = document.createElement('a');
          html2canvas(canvasID).then(canvas => {
            let dom = document.body.appendChild(canvas);
            dom.style.display = "none";
            a.style.display = "none";
            document.body.removeChild(dom);
            let blob = that.dataURLToBlob(dom.toDataURL("image/png"));
            a.setAttribute("href", URL.createObjectURL(blob));
            a.setAttribute("download", "xxxxxx.png")
            document.body.appendChild(a);
            a.click();
            URL.revokeObjectURL(blob);
            document.body.removeChild(a);
          });
        },

5. 这样就可以实现截图并下载啦。

要截图的部分dom元素多的话会造成页面卡顿~~~~~~~~~~~~就这样吧=。=

Logo

前往低代码交流专区

更多推荐