vue截图方式
html2Canvas
html-to-image
js
// 这里只做js部分(vue3使用)
import * as htmlToImage from 'html-to-image';
let imgcanvas = ref('') // 图片标签img的src指向
const captureScreen =() => {
// 截图的容器
var target = document.querySelector('.container')
setTimeout(async ()=>{
// 下面的await在安卓和H5上,只需要执行一次,拿到地址即可
// 在苹果设备上需要最低执行三次才能拿到地址渲染出完整图片(做项目遇到的坑,前两次均渲染不全)
const dataUrl = await htmlToImage.toPng(target)
const dataUrl2 = await htmlToImage.toPng(target)
const dataUrl3 = await htmlToImage.toPng(target)
const dataUrl4 = await htmlToImage.toPng(target)
imgcanvas.value = dataUrl4 //(base64格式的图片地址)
},100)
};
截图的区域如果有字体,尽量用本地字体,或者使用异步等待,否则可能导致截图出来的字没有字体
如果截图区域的字有不期望的样式例如截图前没换行,截图后换行了,直接在代码里面加固定死不换行即可(截图后还是原来的样式,只是样式会参考当前截图的容器了,如果空间不足就会导致换行,隐藏写死样式固定不换行即可)