内容简介:优缺点分析:(1)、利用DOM改写为canvas的方式:相当于完全重写了整个页面的布局样式,增加了工作量。 由于canvas中没有的对象概念,对于元素丰富、布局复杂的页面,不易重构。 所有DOM元素改写进canvas会带来一些困难。例如:难以支持响应式。(2)、利用HtmlCanvas的方式:只需简单调用html2canvas方法并设定配置项即可。脚本使用的所有图像需要驻留在同一个源下,如果页面上有其他画布元素,这些元素已经被跨源内容污染,不再能被html2canvas读取。
- 将DOM改写为canvas,然后利用canvas的toDataURL方法实现将DOM输出为包含图片展示的data url。
- 使用HtmlCanvas2实现。
- 使用rasterizeHTML.js实现。
优缺点分析:
(1)、利用DOM改写为canvas的方式:相当于完全重写了整个页面的布局样式,增加了工作量。 由于canvas中没有的对象概念,对于元素丰富、布局复杂的页面,不易重构。 所有DOM元素改写进canvas会带来一些困难。例如:难以支持响应式。
(2)、利用HtmlCanvas的方式:只需简单调用html2canvas方法并设定配置项即可。脚本使用的所有图像需要驻留在同一个源下,如果页面上有其他画布元素,这些元素已经被跨源内容污染,不再能被html2canvas读取。
(3)、使用rasterizeHTML.js实现:限制较多,目前仅支持3类可转为canvas的目标格式: 页面url,html字符串和document对象。
html2canvas脚本截图原理
脚本允许你直接在用户浏览器上获取网页的截图或部分内容。屏幕截图是基于DOM的,因此对于真实的表示来说,它可能不是100%准确的,因为它不做实际的屏幕截图,而是基于页面上可用的信息构建屏幕截图。它实际上并不获取页面的屏幕截图,而是基于从DOM读取的属性构建页面的表示。因此,它只能正确地描述它所理解的属性,这意味着有许多CSS属性不起作用。
怎样安装使用html2canvas?
安装 npm install html2canvas
引入 import html2canvas from ‘html2canvas’;
(1)html2canvas参数
名称 | 默认 | 描述 |
---|---|---|
async | true | 是否异步解析和呈现元素 |
allowTaint | false | 是否允许跨原始图像污染画布 |
backgroundColor | #ffffff | 画布背景颜色,如果在DOM中未指定,设置 null 为透明 |
canvas | null | 现有画布元素用作绘图的基础 |
foreignObjectRendering | false | 是否在浏览器支持的情况下使用ForeignObject渲染持 |
imageTimeout | 15000 | 加载图像的超时(以毫秒为单位,设置 0 为禁用超时 |
ignoreElements | (element)=>false | 谓词函数,用于从渲染中删除匹配元素 |
logging | true | 启用日志记录以进行调试 |
onclone | 在克隆文档进行渲染时调用的回调函数可用于修改将在不影响原始源文档的情况下呈现的内容。 | |
proxy | null | Url到 代理 ,用于加载跨源图像。如果留空,则不会加载跨原始图像。 |
removeContainer | true | 是否要清理克隆的DOM元素html2canvas会暂时创建 |
scale | window.devicePixelRatio | 用于渲染的比例,默认为浏览器设备像素比率 |
useCORS | false | 用来设置是否允许使用跨域的图片进行访问 |
width | element width | canvas的宽度 |
height | element height | canvas高度设定 |
x | element x-offset | 裁剪画布x坐标 |
y | element y-offset | 裁剪画布y坐标 |
scrollX | element scrollX | 渲染元素时使用的x滚动位置(例如,如果Element使用 position: fixed ) |
scrollY | element scrollY | 渲染元素时使用的y滚动位置(例如,如果Element使用 position: fixed ) |
windowWidth | Window.innerWidth | 渲染元素时使用的窗口宽度,这可能会影响媒体查询之类的东西 |
windowHeight | Window.innerHeght | 染时使用的窗口高度 Element ,这可能会影响媒体查询等内容 |
taintTest | true | 在渲染前测试图片 |
(2)html2canvas的使用方法
-
第一步:实现保存为图片的第一步:html转为canvas
基于html2canvas.js可将一个元素渲染为canvas,然后Promise对象会将截取的图片传递给参数canvas。
html2canvas(document.body).then(function(canvas) { document.body.appendChild(canvas); });
-
第二步:canvas转image
上一步生成的canvas即为包含目标元素的canvas元素对象。实现保存图片的目标只需要将canvas转image即可。
基于原生canvas的toDataURL方法将canvas输出为data: URI类型的图片地址,再将该图片地址赋值给元素的src属性即可。
以上所述就是小编给大家介绍的《html2canvas-实现页面截图》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。