vue项目中使用html2canvas 下载当前页面(动态页面宽度、高度)

老规矩先上效果图: 

需求1、 只要上图红色区域的内容下载,就需要计算红色区域的内容的动态宽度高度。 

需求2、当前页面可视区域的内容下载,上传按钮下面的所有内容。

一、 安装依赖 :安装html2canvas插件

npm isntall html2canvas 或者
cnpm isntall html2canvas

 二、在vue项目使用的页面 里面 引入插件

import html2canvas from 'html2canvas'

三、设置截图区域的dom 的div标签的ref

3-1、 当前页面可视区域的内容截屏下载

      <el-row style="margin-bottom:10px">
        <el-button type="primary" icon="el-icon-upload" @click="screenShot()">截屏</el-button>
      </el-row>
      <div ref="screen">
        <canvas id="myCanvas" :width="canvasWidth" :height="canvasHeight">
          你的浏览器还不支持canvas
        </canvas>
      </div>

3-2、 只要上图红色区域的内容下载,就需要计算红色区域的内容的动态宽度高度

      <div ref="screen" :style="{width: canvasWidth, height: canvasHeight}">
        <canvas id="myCanvas" :width="canvasWidth" :height="canvasHeight">
          你的浏览器还不支持canvas
        </canvas>
      </div>

四、截图并下载图片到本地

//截屏
screenShot () {
 html2canvas(this.$refs.screen, {
   backgroundColor: '#FFFFFF',
     useCORS: true
 }).then((canvas) => {
    if (navigator.msSaveBlob) { // IE10+ 
      let blob = canvas.msToBlob(); 
      return navigator.msSaveBlob(blob, name); 
    } else {
      let imageurl = canvas.toDataURL('image/png')
      //这里需要自己选择命名规则
      let imagename = ""
      this.fileDownload(imageurl, imagename)
    }
 })
},
//下载截屏图片
fileDownload(downloadUrl, downloadName) {
  let aLink = document.createElement("a");
  aLink.style.display = "none";
  aLink.href = downloadUrl;
  aLink.download = `${downloadName}.jpg`;
  // 触发点击-然后移除
  document.body.appendChild(aLink);
  aLink.click();
  document.body.removeChild(aLink);
}

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue 3使用html2canvas可以通过以下步骤进行: 1. 首先,安装html2canvas库。你可以使用npm或yarn在你的项目安装它: ```bash npm install html2canvas ``` 2. 在你的Vue组件,导入html2canvas库: ```javascript import html2canvas from 'html2canvas'; ``` 3. 在需要截取的元素上添加一个ref属性,以便在后面引用该元素。例如,在模板添加ref属性: ```html <template> <div ref="captureElement"> <!-- 这里是你要截取的内容 --> </div> <button @click="capture">截图</button> </template> ``` 4. 在Vue组件的methods,编写一个函数来触发截图操作。在该函数使用html2canvas库的`toBlob`方法来生成截图的blob对象。你可以将该blob对象转换为图片并进行下载或者进一步处理。 ```javascript methods: { capture() { const element = this.$refs.captureElement; html2canvas(element).then(canvas => { canvas.toBlob(blob => { const imageURL = URL.createObjectURL(blob); // 这里可以进行下载或者进一步处理 }); }); } } ``` 在上述代码,`this.$refs.captureElement`引用了之前添加ref属性的元素。`html2canvas(element)`将传入的元素转换为canvas对象,然后通过`toBlob`方法生成blob对象,最后可以使用`URL.createObjectURL`方法将blob对象转换为图片URL。你可以根据需要进一步处理该URL,例如下载或者展示给用户。 以上是在Vue 3使用html2canvas的基本步骤,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT博客技术分享

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值