• html2Canvas截图包含滚动条解决思路


    概况描述

    在项目中使用html2Canvas进行截图时发现无法截取滚动条部分,前端是使用vue2的版本,网上找了很多方式都没效果,冷静思考后,给出解决办法。

    解决思路

    当我们截取的div容器的宽和高与内部的子容器div的宽和高不一样时,内部div就会出现滚动条,因为我们截取的div与内部div的宽和高不一致,所以截取时只能截取我们定位的div,无法截取到滚动条部分。

    在截取时将定位的div宽和高改为和内部div容器的宽和高一致,截取时就能包含滚动条部分,截取结束后将定位的div的宽和高恢复原来的值,让界面正常

    图片展示 

    • 原来包含滚动条的界面

    •  html2Canvas截取的图片(未添加处理办法时)

    • 使用上面处理思路后的截图

    • 解决思路的代码

      

    1. <div class="about" id="capture" ref="capture">
    2. div>

    1. let targetDom = this.$refs.capture; //原本需要截图的div
    2. this.$nextTick(() => {
    3. const swidth = document.querySelector('.gantt_data_area'); // 定位到内层出现滚动条div宽度
    4. targetDom.style.width = `${swidth.offsetWidth+250}px`;
    5. setTimeout(() => {
    6. html2canvas(targetDom,{
    7. dpi: window.devicePixelRatio * 4,
    8. scale: 4,
    9. useCORS: true, //允许canvas画布内可以跨域请求外部链接图片, 允许跨域请求。
    10. allowTaint: false,
    11. height: targetDom.scrollHeight, //画布高度(包含未显示的滚动部分)
    12. width: targetDom.scrollWidth, //画布高度(包含未显示的滚动部分)
    13. windowWidth: targetDom.scrollWidth,
    14. windowHeight: targetDom.scrollHeight,
    15. }).then((canvas) => {
    16. var imgUri = canvas.toDataURL('image/png').replace('image/png', 'image/octet-stream') // 获取生成的图片的url
    17. var saveLink = document.createElement('a')
    18. saveLink.href = imgUri
    19. saveLink.download = 'downLoad.png'
    20. saveLink.click()
    21. targetDom.style.width = '100%'; // 截图结束后需要将修改的宽度高度恢复
    22. targetDom.style.height = '100%';
    23. });
    24. }, 1000);
    25. });

  • 相关阅读:
    java计算机毕业设计高校考务管理MyBatis+系统+LW文档+源码+调试部署
    初始Linux操作系统初始vim工具(三)——底层看程序的编译过程
    开发过程教学——交友小程序
    JWT认证漏洞攻击详解总结
    【java期末复习题】第6章 接口
    【es8-es11】新特性
    MySQL 行变列
    数据结构初阶:顺序表和链表
    Firewalld防火墙
    使用json-bigint库处理后端返回数值型数据精度丢失问题
  • 原文地址:https://blog.csdn.net/qq_31674229/article/details/138040626