最近在项目中遇到一个需求,须要提供网页截图的功能。百度下发现html2canvas很好用。那就试试吧。html
插件下载地址:html2canvas下载地址react
项目使用的react组件开发方式。参照官方的说明文档getting-started.md,按照如下步骤进行:
一、使用如下命令安装
npm install html2canvas --save
二、在文件中引入html2canvas
import html2canvas from 'html2canvas';
三、文件中的使用
html2canvas(document.body).then(function(canvas) {
document.body.appendChild(canvas);
});git
按照这个方式使用,页面没有滚动条还行,有滚动条时出现大片空白。
错误截图以下:
github
仔细看了一下configuration.md和网友的分析,最终解决。代码片断以下
上一张正确的截图以下:
npm
一、截图产生空白是由于容器高度设置的问题,设置windowHeight的高度等于页面包含滚动条的高度便可获取滚动条中的内容。这一条就能够解决空白的问题。
二、设置width、height属性的缘由是,咱们在页面中截图显示的区域宽度和高度是固定的,就是当前屏幕的可见区域。
三、设置x、y坐标的缘由是因为页面在有滚动条的时候,须要指定截图的起始位置。本项目中x轴方向不存在滚动条,因此设置为零;y方向有滚动条,因此须要获取一下当前方向的滚动坐标。
四、通常网页中会有图片,图片中有连接地址时,设置useCORS属性可保证图片的加载。canvas