vue使用html2canvas将dom转化为图片

本文介绍了如何利用html2canvas JavaScript库将HTML内容转换为图片,并展示了安装、引用和使用该库的步骤。在转换过程中,针对可能出现的图片跨域问题,提出了将图片地址转化为Base64以及检查CDN跨域设置的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简述

最近在做的项目中,需要将界面转换成图片保存下来并发给后台,于是在网上查看了有个html2canvas 的js库可以将HTML生成图片,保存及获取的时候直接使用图片

2、安装html2canvas

npm install html2canvas --save-dev

3.使用

3.1.在你需要使用的页面中引入html2canvas

import html2canvas from 'html2canvas';

3.2.将需要转换为图片的dom,用一个单独的div给他包裹上,

 <div id="nodeBox" ref="getImageDom">
	<!-- 需要转换为图片的dom -->
 </div> 

3.3.触发事件的方法获取图片
html :

 <div class="selected" @click="changeImageDom">点击触发转换事件</div>

javascript:

 changeImageDom() {
            let myBox = this.$refs.getImageDom;
            console.log(window.screen.availWidth, window.screen.availHeight
                , document.body.scrollWidth, document.body.scrollHeight, window.pageYOffset);
            html2canvas(myBox, {
                useCORS: true,
                width: window.screen.availWidth,
                height: document.body.scrollHeight,
                windowWidth: document.body.scrollWidth,
                windowHeight: document.body.scrollHeight,
                x: 0,
                y: window.pageYOffset
            }).then(function (canvas) {
                let imgUrl = canvas.toDataURL("image/jpeg", 1);
                var eleLink = document.createElement('a')
                eleLink.href = imgUrl // 转换后的图片地址
                eleLink.download = 'pictureName'
                // 触发点击
                document.body.appendChild(eleLink)
                eleLink.click()
                // 然后移除
                document.body.removeChild(eleLink)
                console.log(data)
            }); 
        },

4.常见问题

若是dom中有图片,图片可能会出现跨域的问题的解决

  1. 若是地址跨域可以试试将地址转化为base64形式在进行下载
  2. 若上面的方法不行,图片地址是cdn图片跨域,建议找运维查看一下cdn的域名是不是设置不允许跨域,若是设置了建议修改一下(一般情况是服务器自动就有限制跨域)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值