vue使用html2canvas截取div内容生成海报~ vue生成海报

编程入门 行业动态 更新时间:2024-10-28 08:22:20

vue使用html2canvas截取div内容生成<a href=https://www.elefans.com/category/jswz/34/1763897.html style=海报~ vue生成海报"/>

vue使用html2canvas截取div内容生成海报~ vue生成海报

最近项目有需求需要把生成海报。就在网上查了一些资源记录一下。
首先就是下载依赖了。老规矩:

npm i html2canvas

然后在需要的组件里面引用:

import html2canvas from 'html2canvas';

这个是我的html内容:有个下载按钮div里面的是海报图和二维码。自己摆放好位置~
记得给div加个ref。

<el-dialog class="hb-dz" width="500px" :visible.sync="showView"><el-button class="download" @click="toImage" type="primary">下载海报</el-button><div class="poster-box" ref="pbox" id="p-box"><img class="b-img" :src="diaInfo.backUrl" /><img class="c-img" :src="diaInfo.qrcode" /></div>
</el-dialog>

下面就是方法啦:

toImage() {// 手动创建一个 canvas 标签const canvas = document.createElement('canvas');// 获取父标签,意思是这个标签内的 DOM 元素生成图片// imageTofile是给截图范围内的父级元素自定义的ref名称let canvasBox = this.$refs.pbox;// 获取父级的宽高const width = parseInt(window.getComputedStyle(canvasBox).width);const height = parseInt(window.getComputedStyle(canvasBox).height);// 宽高 * 2 并放大 2 倍 是为了防止图片模糊canvas.width = width * 2;canvas.height = height * 2;canvas.style.width = width + 'px';canvas.style.height = height + 'px';const context = canvas.getContext('2d');context.scale(2, 2);const options = {canvas: canvas,useCORS: true, // 【这个要打开。解决图片跨域的】=》我的评价是‘吊用没有’!};html2canvas(canvasBox, options).then((canvas) => {// toDataURL 图片格式转成 base64let dataURL = canvas.toDataURL('image/png');// 下面是创建a标签下载操作let a = document.createElement('a');a.href = dataURL;a.download = '海报';a.click();});
},

好了到这就结束了。还有个坑你得看看~
你要是生成的海报里面没有图片那就是可以了。我的里面有‘图片跨域’给我整的不会了。在网上各种查各种试都不行。还是得在服务器上配置一下图片跨域的问题。服务器设置过后需要浏览器清一下缓存。我的就是不清缓存还是跨域。解决服务器图片跨域的自行百度把~

更多推荐

vue使用html2canvas截取div内容生成海报~ vue生成海报

本文发布于:2023-06-23 16:37:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/851784.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:海报   内容   vue   html2canvas   div

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!