html2canvas滚动截图
滚动截图
项目需求要进行动态的滚动截图搜索一下发现html2canvas可以实现截图,但是滚动截图网上搜罗了一遍发现不是很完善所以记录下
- 首先npm一下安装依赖: npm install html2canvas
- 再需要的页面引入: html2canvas from html2canvas
- 第三步使用: 直接贴代码
/**
* @description 截图函数
* @params {...Array} 1、DomObj: 需要进行截图的Dom节点; 2、fileName: 截图命名;3、ops: html2canvas配置项;4、计算的截图宽度;
*
**/
downloadImg = (DomObj, fileName, ops = {}, width) => {
return new Promise(resolve => {
setTimeout(() => {
// 复刻需要滚动截图的Dom, 要在改复制的Dom节点加滚动条, 否则会截图失败
let copyDom = null;
const copyOps = ops;
// 检查宽度是否大于项目全屏宽度
let copyWidth = null;
let flag = false;
if (width < 1803) {
copyWidth = 1803;
flag = false;
} else {
copyWidth = width;
flag = true;
copyDom = obj.cloneNode(true);
copyDom.style.width = `${copyWidth + 50}px`;
copyDom.style.height = `${obj.scrollHeight + 50}px`;
// 设置配置项 1、scale: 浏览器缩放值;2、width: 图片宽度;3、height: 图片高度; 4、x(scrollLeft) || y(scrollTop): 滚动轴的起始位置
copyOps.scale = window.devicePixelRatio;
copyOps.width = copyWidth + 50;
copyOps.height = obj.scrollHeight + 50;
copyDom.x = obj.scrollLeft;
// 设置ID为复刻Dom添加样式;
copyDom.id = 'copyDom';
// 将复刻元素插入HTML中
document.querySelector('body').appendChild(copyDom);
}
html2canvas(flag ? copyDom : obj, copyOps).then(canvas => {
const saveUrl = canvas.toDateURL('image/png');
const aLink = document.createElement('a');
aLink.href = saveUrl;
aLink.download = fileName || '图片';
aLink.click();
if (flag) {
//
copyDom.parentNode.removeChild(copyDom);
}
aLink.parentNode.removeChild(aLink);
})
resolve('success');
}, 1)
})
}
- 最后成功:如下图

Remark: 要注意的点有二
- 一是哪个Dom节点要滚动截图就在该Dom节点加滚动条
- 二是配置项设置滚动条初始位值
html2canvas滚动截图的更多相关文章
- IText&Html2canvas js截图 绘制 导出PDF
Html2canvas JS截图 HTML <div id="divPDF"> 需要截图的区域 </div> JS <script src=" ...
- html2canvas 网页截图 下载 上传
利用html2canvas插件 对网页截图 并下载和上传图片. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//E ...
- js实现html转pdf+html2canvas.js截图不全的问题
最近做项目中遇到要把整个页面保存为PDF文件,网上找了一下实现的方法都是 html2canvas.js+jsPdf.js 来实现.实现的过程是 先用html2canvas.js把html页面转成图片, ...
- Windows 10 滚动截图工具
Windows 10 滚动截图工具 Edge & Note & Clip https://www.runoob.com/docker/docker-architecture.html ...
- Android之WebView网页滚动截图
WebView 网页滚动截屏,可对整个网页进行截屏而不是仅当前屏幕哦! 注意若Web页面存在position:fixed; 的话得在调用前设置为 position:absolute; 哦,否则会出现很 ...
- html2canvas html截图插件
以下我总结了一些注意事项,在代码中注释了,仅供参考. html2canvas.js点击付:完整使用的demo ,如下: <!DOCTYPE html><html lang=" ...
- JS 使用html2canvas实现截图功能的问题记录和解决方案
在实现“截图”功能时,遇到几个bug,研究了一个上午,终于全部解决了: 下面给大家分享下: 1."图片资源跨域",导致无法截图. 浏览器会提示下面的错误 DOMException: ...
- 微信图片生成插件,页面截图插件 html2canvas,截图失真 问题的解决方案
html2canvas 是一个相当不错的 JavaScript 类库,它使用了 html5 和 css3 的一些新功能特性,实现了在客户端对网页进行截图的功能.html2canvas 通过获取页面的 ...
- Selenium全屏截图,使用PIL拼接滚动截图
Selenium默认的截图save_screenshot只支持对当前窗口内容进行截图,当如果你想要截取整个网页,那么,可以明确的告诉你. Selenium做不到. 你可以手工使用开发者工具Ctrl+S ...
随机推荐
- Windows点击更改适配器选项出现的网络连接为空
前言:windows出现点击更改适配器选项出现的网络连接为空,一直找了很久,没有找到方法 解决方案: 1:点击状态: 2:点击网络重置 最后:电脑进行重启,即可.
- JSP页面重定向与页面内容转发
重定向:属于两次请求+响应,客户端浏览器地址栏会改变. 转发:属于一次请求+一次响应,客户端浏览器地址栏不会改变. 重定向: response.setHeader("action" ...
- git rebase git merge
Git rebase 使用方法 1. git checkout feature 2. git rebase master feature 相当于git rebase master + git chec ...
- argc 和 argv
转载请注明来源:https://www.cnblogs.com/hookjc/ 如果用C寫一般的命令列工具,常透過main函式的argc,argv來取得使用者所輸入的命令參數.int main(int ...
- 他人学习Python感悟
作者:王一 链接:https://www.zhihu.com/question/26235428/answer/36568428 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- suging闲谈-netty 的异步非阻塞IO线程与业务线程分离
前言 surging 对外沉寂了一段时间了,但是作者并没有闲着,而是针对于客户的需要添加了不少功能,也给我带来了不少外快收益, 就比如协议转化,consul 的watcher 机制,JAVA版本,sk ...
- Java面向对象之各种变量详解
在Java中一定有很多变量让大家头疼,成员变量.类变量.局部变量等等,今天就来分别认识认识他们吧! Java面向对象之各种变量详解 前言 在 Java语言中, 根据定义变量位置的不同,可以将变量分成两 ...
- 文本处理命令(sort+uniq+cut+tr+wc)+三剑客之sed
目录 文本处理命令+三剑客之sed 一.文本处理命令 1.排序命令 sort 2.检查/删除命令 uniq 3. cut 显示特定部分命令 4. 替换或删除命令 tr 5.统计 计算数字命令 wc 二 ...
- 在这个插件帮助下,终于用上免费的Https协议外链的图床了
前天,强哥发了一篇推文,讲述了应该如何免费且快速的生成自己的博客网站: 期间也有提到一点就是我们在写博客的时候,因为使用的是Markdown格式的文件,而如果想要Markdown格式的文件在图片上传 ...
- pycharm软件安装
目前热门的编程软件: 1.VScode 小巧轻便但是对小白不是很优化 2.sublime 时下最流行的代码编辑器,功能十分强大可以运行在windows.macOS和linux系统中,小白先不要使用 3 ...