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

老规矩先上效果图:

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

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

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

javascript 复制代码
npm isntall html2canvas 或者
cnpm isntall html2canvas

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

javascript 复制代码
import html2canvas from 'html2canvas'

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

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

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

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

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

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

javascript 复制代码
//截屏
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);
}
相关推荐
帆张芳显4 天前
智表ZCELL产品V3.6 版发布,新增系统预置右键菜单操作、页签栏操作等功能
前端·canva可画·excel插件
yikegis1 个月前
TOP 5 在线音频剪辑软件 免费(2026)
人工智能·ffmpeg·音视频·语音识别·学习方法·canva可画
帆张芳显3 个月前
智表zcell产品V3.5 版发布,新增行列选中操作等功能
前端·javascript·excel·插件·canva可画
山楂树の4 个月前
ImageBitmap 将图像数据转换为GPU可用的纹理
性能优化·图形渲染·canva可画
by__csdn5 个月前
Vue2纯前端图形验证码实现详解+源码
前端·javascript·typescript·vue·状态模式·css3·canva可画
专注前端30年5 个月前
如何使用 HTML5 的 Canvas + JavaScript 实现炫酷的游戏得分特效?
前端·javascript·游戏·html5·canvas·canva可画
海绵宝宝不喜欢侬7 个月前
uniapp微信小程序保存海报到手机相册canvas
智能手机·微信小程序·uni-app·canva可画
neon12048 个月前
解决Vue Canvas组件在高DPR屏幕上的绘制偏移和区域缩放问题
前端·javascript·vue.js·canva可画
Silver〄line9 个月前
前端图像视频实时检测
前端·目标检测·canva可画
wuhen_n1 年前
Canvas特效实例:黑客帝国-字母矩阵(字母雨)
前端·javascript·矩阵·html5·canvas·canva可画