2.针对问题2:转出的图片下方部分缺失,当需要转换的html高度较高时出现的概率较大。
1)仔细检查后,猜测可能是由于flex布局没有自动换行,溢出导致。
但修改flex布局每个div的宽度为 30%(
style="width: 30%; padding-bottom: 1em"
)后,发现换行并且显示了被剪裁的内容,如图2-3所示,所以不确定具体是什么原因导致的,但和 样式密切相关。
此时 需要转图片的最外层dom节点的宽度为 92%
图 2-3
源代码如下:
<div style="display: flex; flex-wrap: wrap">
style="width: 50%; padding-bottom: 1em"
v-for="(item, key) in autographContent"
:key="key"
<div style="display: flex">
<span>{{ item.label }}</span>
style="
border-bottom: 1px solid black;
width: 160px;
margin: 0 10px;
v-if="item.img"
:src="item.img"
style="height: 30px; margin-bottom: 2px"
<span v-else style="width: 160px">
{{ item.value }}
</span>
2)最终通过修改需要转图片的最外层dom节点的宽度:设置为99%,因宽度100%时会导致转图片时右侧部分内容部分丢失,解决了该问题。多次重复测试,没有发现末尾内容丢失的问题。
图 2-4
1.以上表格边框粗细不一致、部分内容丢失问题都是 与 转图片前的html样式相关联的。所以当使用html2Canvas转图片时遇到类似的问题,可以通过检查 html样式和图片的区别,尝试通过更改样式的方式解决问题。
2.问题2,暂时没有搞明白原因,为什么宽度设置小时会自动换行,而之前会直接不显示?本来以为是高度有关的问题(因需要转图片的高度较高时该问题发生的频率更高),结果和宽度有关系。如有大佬知道原因,欢迎评论区交流,非常感谢!
希望对你有帮助!
如有错误,欢迎指正,谢谢!
我有一个div,我设置了一个背景图像,并在该div中我有一个图像,我操纵(调整大小,旋转和拖动)另一个div。一切工作正常,我收到一个图像,调整大小和位置风格正确应用,只有旋转样式恢复到零度角,即水平。有什么解决方法吗?我的代码,HTML: DownloadCSS:#canvas {float: left;width: 69%;height: 400px;border: 1px so...
最近接到反馈,先前做的一个小工具会出现一些bug 主要原理是根据用户填写的内容生成一个隐藏起来的节点,并把这个节点截取生成图片下载下来;
首先把这个节点显示出来发现节点是正常的
那么问题就出现在获取节点上,这里使用到了html2canvas将节点转化为 base64 格式的图片,打印一下这个文件:
ok, 是空白的;
当页面缩小及生成图片滚动页面时,会出现类似问题,后来发现是页面有滚动条时会出现截图失败;
查阅文档还可以通过获取截图范围的精确位置截图;
我们需要的是截图区域左上角的 x, y 坐标,以及截图
解决方案: 需要截图的节点根样式添加font-variant: normal;
2. 文字向下偏移。
解决方案: 指定html2canvas的版本号为1.0.0-alpha.12
3. 不完整,缺失,留白。
出现情况: 当截图区域超过视图高度,且滚动条未处在顶部时,会出现。
解决方案: 截图之前控制滚动条至顶部。
4. 模糊,不清晰。
出现情况: 通常是图片设置为背景的情况下,截图会比较模糊。
解决方案: 将背景图通过img标签加定位的方式实现。
1.如果是文字信息丢失,需要再加一层div包裹。
2.如果以上不能解决,可以将消失的那一部分的父级,及父级的父级的背景色去掉或设置为透明即可解决元素丢失的问题。(有些元素会被父级的背景色覆盖掉,这个是插件的问题)
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>html2canvas exampl
一开始用print.js打印包含canvas的dom,后来,查了资料,对print.js修改后,可以很好的解决了问题,但是没有自适应打印纸张。没办法,那就自己改一下吧。
基本print.js的基础上将代码进行修改,将需要打印的dom转为图片后,调用print.js将图片进行打印。
import html2canvas from "html2canvas"
// 打印类属性、方法定义
/* eslint-disable */
const Print = function (dom, options)
一、直接杀主题:某日接需求,需将表格生成一张图片进行浏览(H5移动端)。1、想到两个插件html2canvas与dom-to-image,开始估计是版本问题用html2canvas生成png出现空白部分,且截图不完全。因为是表格有15个字段之多,带滚动条。也就是说在H5可视dom里,滚动条后面字段基本是截不到的。2、转dom-to-image也是同样问题。而且安卓toPng方法没问题,跑IOS那边...