码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)


    最近使用 html2canvas导出Table表单为图片,但是转换出的图片被合并的单元格没有显示边框

    查了原因是因为我为tr设置了背景色,然后td设置了rowspan,设置了rowspan的单元格就会出现边框不显示的问题。

    解决方法就是取消tr的背景色,然后在td里设置背景色,

    或者把tr的背景色设置为透明,在td里设置背景色(对于使用了第三方表单的Table组件)-如果用的组件table,tr的背景色也是组件设置的。所以tr样式用这个覆盖background-color: transparent;,再设置单元格的background-color

    最后就正常显示了,可以打印了

     

    实现代码:

    1. // 生成图片快照 DOM nodes convert to PNG
    2. const saveImage = async () => {
    3. const canvas = await html2canvas(document.getElementById('capture'),{scale:2})
    4. const link = document?.createElement('a')
    5. link.download = `标签${data?.wastesName != null ? '-' : ''}${data?.wastesName??''}.png`
    6. link.href = canvas.toDataURL('image/png')
    7. link?.click()
    8. }
    9. /**
    10. * 打印及关闭窗口
    11. * @param printWindow Windows对象
    12. */
    13. const openPrint = async (printWindow: any) => {
    14. await printWindow?.print();
    15. printWindow?.close()
    16. }
    17. /**
    18. * 打印
    19. */
    20. const handlePrint = async () => {
    21. const canvas = await html2canvas(document.getElementById('capture'),{scale:2})
    22. const printWindow = window?.open('', '_blank');
    23. printWindow?.document?.open();
    24. printWindow?.document?.write('打印');
    25. printWindow?.document?.write('toDataURL('image/png') + '" style="width:100%" alt="">');
    26. printWindow?.document?.write('');
    27. printWindow?.document?.close();
    28. // 在整个HTML文档加载完成后执行的操作
    29. printWindow.onload = () => openPrint(printWindow)
    30. };

    当然你也可以用另一个库实现,我之前写了另一个库的实现方式,这个库在复制dom元素时会用到浏览器Window对象,但我们这套前端框架是通过微前端构建的,子应用中的Window对象被沙箱隔离了,无法使用Window对象的部分原生方法,所以我才转用html2canvas库的,该库中没用到Window对象,所以可以使用,但方便的还是HTML-to-image,使用链接:JavaScript实现React实现网页转换成图片截屏下载_react截取页面保存为图片到手机相册-CSDN博客

    参考文献:

    0、Features | html2canvas 

    1、html2canvas 踩坑记录一_html2canvas导出table rowspan失效-CSDN博客 

  • 相关阅读:
    QT中QThread的各个方法,UI线程关系,事件关系详解(5)
    React Query:高效管理API请求与缓存
    【嵌入式】堆栈与单片机内存
    pytorch loss及其梯度
    怎么把旧电脑的用户配置文件迁移到新电脑
    Shiro会话管理&&Ehcache缓存管理
    HTB-Timelapse
    Allegro如何输出IDF文件操作指导
    [附源码]SSM计算机毕业设计汽车租赁管理系统-JAVA
    【排序算法】插入排序(希尔排序)
  • 原文地址:https://blog.csdn.net/qq_35624642/article/details/134455676
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号