表格组件实现打印功能

这是一个不是很常用的功能,但却是在不经意间提升用户体验。

使用场景

用户通过界面搜索出一组数据,仔细一看这组数据实在是太重要了,重要到需要向上汇报(拍马屁)。

此时的用户可以选择: 抱着电脑 || 截图发送 || 发送链接和查询条件。

但我们做为前端开发人员,是可以向用户提供另外一种选择: 将查询结果打印,以纸质的形式进行信息传递。有时候,实实在在拿在手里的东西更有感觉。

无纸办公的情况就不反驳了,我们只是多出一种选择,而非必选。

实现方式

比如我们现在有这么一组很有价值的数据(敲黑板,这都是我努力码出来的那种自已都不愿意看的博文),现在要实现将这些博文打印的功能需要以下几个步骤。

1、生成基础样式

在网页中展示的表格效果总是五花八门,想打印到纸张上是需要调整下展现样式。这些样式以字符串行式先行存储,会在后面的步骤中使用到。

const style = '<style>\n'
    + 'table{width: 100%;border-collapse: collapse;border-spacing: 0;}\n'
    + 'th,td{height: 18px;padding:11px;border: 1px solid #999;font-size: 12px;color: #666;}\n'
    + 'th{color: #333}\n'
    + 'a{color: #666; text-decoration:none;}\n'
    + 'tr[empty-template] td{text-align: center}\n'
+ '</style>';

为什么不用模板字符串?因为这种情况下通过模板字符串添加的style会多出不必要的换行与空格,完全没有必要先使用模板字符串再用正则replace

2、打开一个新的窗口

const printWindow = window.open(); 

是的,这一步就这么简单。(感觉可以和第三步合并?)

3、打印

如果原table没有需要移除的结构或样式,直接打印即可。

// 这里我们假设table是需要打印的那个表格, style就是第一步中拼接的样式
printWindow.document.write(style + table.outerHTML);
printWindow.document.close();
printWindow.print();
printWindow.close();

那如果原table存在复杂的结构或样式需要清除,那么就需要手动清理一份干净的element outerHTML了。

以下是打印预览时的效果:

相关实现

在表格组件GridManager中实现了该功能,方式有点差异。点击这里查看源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值