dcloud中的网页生成为图片


大概思路

在h5页面中将节点转换为cavans,得到base64,然后调用api保存到本地
避免截图不全的问题,html2canvas是根据body进行截图,若内容高度高于body时,就会出现这样的问题(大概意思就是有滚动条时造成的)。解决方案:(在生成截图前,先把滚动条置顶)
安装依赖
bash npm install html2canvas
代码
import html2canvas from 'html2canvas';
saveCanvas() {
    // 滚动条置顶
    window.pageYOffset = 0;
    document.documentElement.scrollTop = 0
    document.body.scrollTop = 0
    // 获取节点对象
    let canvas = document.getElementById('canvasWrap');
    let that = this;
    // 生成base64对象
    html2canvas(canvas, {
      scale: 2,
      logging: false,
      useCORS: true,
    }).then((canvas) => {
      // document.body.appendChild(canvas)
      var base64Url = canvas.toDataURL();
      this.saveImage(base64Url, {
        onScuess: function (i) {
          uni.showToast({
            icon: 'none',
            title: '保存成功'
          });
        },
        onFail: function (e) {
          console.log("保存失败:", e)
        }
      });

    });
  },