vue截取页面一部分内容并导出图片

  1. 安装插件

npm install html2canvas --save
  1. 引入当前需要的vue文件

 import html2canvas from "html2canvas";
  1. 全部详解

 <div class="exportTab" @click="getclo">导出课表</div>
<div style="display:flex;align-items: center;margin: 0 20px;" ref="content">
      <div class="rain">
        <div class="tearch">
          教师名称
        </div>
        <div class="tearch_b">{{name}}</div>
      </div>
      <div class="rain">
        <div class="tearch" @click="teacTime">
          选择时间
        </div>
        <div class="tearch_bs">
          <div class="timeer" v-for="(itms,inds) in timeList" :key="inds">
            <div>第{{toChinese(inds)}}节</div>
            <div>{{itms.start_at}}-{{itms.end_at}}</div>
          </div>
        </div>
      </div>
      <div v-for="(item,index) in data_list.week_date" :key="index" class="rain">
        <div class="tearch_t ">
          <div>{{item.date_at}}</div>
          <div>{{item.week}}</div>
        </div>
        <div class="tearch_bs">
          <div class="timeer_r" v-for="(itm,ind) in item.content" :key="ind">
            <div class="timeer" v-if="itm.merge_num==0">
              <!-- 创建排课 -->
              <div class="create" @click="getCreat(itm,ind,item)">
                创建排课
              </div>
            </div>
            <div v-else :style="{height: itm.merge_num*50+'px'}" class="timeers_r">
              <div :style="{height: itm.merge_num*50-20+'px',backgroundColor:item.week_color}"
                @click="getCreats(itm,ind,item)" class="create_r">
                <div>{{itm.label_name}}</div>
              </div>
              <i class="el-icon-circle-close" @click="clearIcon(itm)"></i>
              <!-- 课程详情 -->
              <div class="class_details" :style="{top:-130+'px',}">
                <p v-if="itm.classs!=null">{{itm.classs.name}}</p>
                <P>{{itm.label_name}}</P>
                <p>{{itm.desc}}</p>
                <p> {{itm.course_time_start+'-'+itm.course_time_end}}</p>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
//js
    // 下载Base64文件
      downloadFileByBase64(url, fileName) {
          const a = document.createElement("a");
          a.setAttribute("href", url)
          a.setAttribute("download", fileName)
          a.setAttribute("target", "_blank")
          let clickEvent = document.createEvent("MouseEvents");
          clickEvent.initEvent("click", true, true);
          a.dispatchEvent(clickEvent);
      },
      //导出课表
      getclo() {
          // 第一个参数是需要生成截图的元素,第二个是自己需要配置的参数,宽高等
          html2canvas(this.$refs.content, {
              // width: 30, //截图宽度
              // height: 50, //截图高度
              backgroundColor: '#fff', //画出来的图片有白色的边框,不要可设置背景为透明色(null)
              useCORS: true, //支持图片跨域
              scale: 1, //设置放大的倍数
          }).then((canvas) => {
              // 把生成的base64位图片上传到服务器,生成在线图片地址
              let url = canvas.toDataURL("image/png") // toDataURL: 图片格式转成 base64
              // console.log('base64图片地址', url)
              this.imgUrl = url;
              this.downloadFileByBase64(url,this.today+'.png');
          })
      },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值