当前位置: 首页 > news >正文

使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)

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

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

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

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

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

 

实现代码:

// 生成图片快照 DOM nodes convert to PNGconst saveImage = async () => {const canvas = await html2canvas(document.getElementById('capture'),{scale:2})const link = document?.createElement('a')link.download = `标签${data?.wastesName != null ? '-' : ''}${data?.wastesName??''}.png`link.href = canvas.toDataURL('image/png')link?.click()}/*** 打印及关闭窗口* @param printWindow Windows对象*/const openPrint = async (printWindow: any) => {await printWindow?.print();printWindow?.close()}/*** 打印*/const handlePrint = async () => {const canvas = await html2canvas(document.getElementById('capture'),{scale:2})const printWindow = window?.open('', '_blank');printWindow?.document?.open();printWindow?.document?.write('<html lang="zh"><head><title>打印</title></head><body>');printWindow?.document?.write('<img src="' + canvas.toDataURL('image/png') + '" style="width:100%" alt="">');printWindow?.document?.write('</body></html>');printWindow?.document?.close();// 在整个HTML文档加载完成后执行的操作printWindow.onload = () => openPrint(printWindow)};

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

参考文献:

0、Features | html2canvas 

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

相关文章:

  • python+appium自动化测试如何控制App的启动和退出
  • Java排序算法之希尔排序
  • nginx服务器
  • golang学习笔记——基础02
  • 滚雪球学Java(09-3):Java中的逻辑运算符,你真的掌握了吗?
  • 20个Golang最佳实践
  • 模拟滴答声
  • 零代码编程:用ChatGPT自动合并多个Word文件
  • Tensorflow2.0:CNN、ResNet实现MNIST分类识别
  • 宝塔https403默认串站问题解决
  • 【数据结构】树与二叉树(十八):树的存储结构——Father链接结构、儿子链表链接结构
  • C++ 编写动态二维double型数据类Matrix
  • IDEA导入jar包
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • modbusRTU通信简单实现(使用NModbus4通信库)
  • 10个最佳ES6特性 ES7与ES8的特性
  • 2017-08-04 前端日报
  • CentOS 7 修改主机名
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • ES6之路之模块详解
  • JSONP原理
  • LeetCode18.四数之和 JavaScript
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • ubuntu 下nginx安装 并支持https协议
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 初探 Vue 生命周期和钩子函数
  • 分布式任务队列Celery
  • 你不可错过的前端面试题(一)
  • 区块链分支循环
  • 携程小程序初体验
  • 你对linux中grep命令知道多少?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • # Panda3d 碰撞检测系统介绍
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #define
  • #Lua:Lua调用C++生成的DLL库
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (C++17) std算法之执行策略 execution
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十八)SpringBoot之发送QQ邮件
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net开发引用程序集提示没有强名称的解决办法
  • .NET企业级应用架构设计系列之技术选型
  • .NET正则基础之——正则委托
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @TableId注解详细介绍 mybaits 实体类主键注解
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题