vue项目中使用html2canvas插件

一、生成海报图

vue项目中使用html2canvas插件,实现将编写的html代码转成可以保存的图片,只需要以下四步。

1、在vue项目中安装插件

npm i html2canvas

2、在需要使用到的页面引入html2canvas插件

import html2canvas from “html2canvas”;

3、按照设计图编写html代码

<div
          v-loading="loading"
          id="haibao_box"
          :class="loading ? 'noscroll' : ''"
          class="haibao_box noScrollBar"
        >
          <div id="poster">
            <img
              id="bgc"
              src="https://imgbdb4.bendibao.com/xcxbdb/20239/21/2023921132708_70332.png"
            />
            <div class="main">
              <div class="job_name">{{ jobInfo.name }}</div>
              <div class="detail">{{ jobInfo.content }}</div>
              <div class="footer">
                <img
                  src="https://imgbdb4.bendibao.com/xcxbdb/20239/21/2023921140905_78679.png"
                  id="code"
                />
                <img
                  id="code_bg"
                  src="https://imgbdb4.bendibao.com/xcxbdb/20239/21/2023921132740_17597.png"
                />
              </div>
            </div>
          </div>
        </div>

4、生成海报图

async getHaibao() {
      let htmlDom = document.getElementById("poster");
      let that = this;
      html2canvas(htmlDom, {
        allowTaint: true, 
        useCORS: true,
        scrollY: 0,
        scrollX: 0,
      }).then(function (canvas) {
        let haibaoBox = document.getElementById("haibao_box"); 
        canvas.setAttribute("id", "canvas"); //给我们的海报画布一个id值,后面一键赋值用到
        haibaoBox.appendChild(canvas); //新增到页面相应的位置
        htmlDom.style.display = "none"; //将我们的html代码隐藏
        that.loading = false;
      });
}

二、一键复制到剪切板

1、需要安装b64-to-blob

npm i b64-to-blob

2、具体使用

//页面中引入b64toBlob
import b64toBlob from “b64-to-blob”;

给一个按钮绑定这个点击事件即可

copyCanvasImage() {
      // 获取canvas元素
  let canvas = document.getElementById("canvas");
  let imageData = canvas.toDataURL();
  let str = imageData.replace(/data:image\/png;base64,/, "");
  let file = b64toBlob(str, "image/png");
  let clipboardItemInput = new window.ClipboardItem({
     "image/png": file,
  });
  window.navigator.clipboard.write([clipboardItemInput]);
},

可能遇到的问题和对应的博客

图片不显示
https://blog.csdn.net/Andrexc/article/details/111085410?ops_request_misc=&request_id=&biz_id=102&utm_term=html2canvas%E5%9B%BE%E7%89%87%E4%B8%8D%E6%98%BE%E7%A4%BA&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-6-111085410.nonecase&spm=1018.2226.3001.4187

https://blog.csdn.net/qq_32898041/article/details/87907668?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%B0%86%E5%9B%BE%E7%89%87url%E8%BD%AC%E6%88%90base64&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-3-87907668.142v94chatsearchT3_1&spm=1018.2226.3001.4187

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

structrue

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

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

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

打赏作者

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

抵扣说明:

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

余额充值