Vue+Element 表格打印

Vue+Element 局部表格打印

一开始使用了print.js、Jquery.print.min.js、printArea等插件,但是使用这些插件的过程中出现了表格显示不全,样式丢失等问题。网上的办法都没有根本的解决我的问题。之后我决定通过window.print 这种方式,将需要打印的表格写入到一个新的页面中来进行打印。

 //获取打印的页面内容
      var print= document.getElementById('print');
      var newContent = print.innerHTML;
      var oldContent = document.body.innerHTML;
      document.body.innerHTML = newContent;
      document.getElementsByTagName('body')[0].style.zoom=0.92;
      window.print();
      window.location.reload();
      //将原有页面还原到页面
      document.body.innerHTML = oldContent;
      return false;

在使用插件和window这种方式打印的时候,还会出现表头偏移的问题。
写入到新页面中,打印出来的效果如下:在这里插入图片描述
通过 @page 对打印的纸张进行设置,比如:

      @page{
			size: A4 landscape; /*portrait: 纵向打印,  landscape: 横向*/
		}

通过 @media print 对表格的样式进行修改:

      @media print {
        .el-table thead.is-group th {
            text-align: center
        }
        tbody {
            text-align: center;
            border: 1px solid #000;
        }
        th {
            border: 1px solid #000;
        }
        td {
            border: 1px solid #000;
        }
    }

出来的效果是这样:在这里插入图片描述
自己手写给表格加上了边框线,但是显示不全的问题还是没有解决。

      document.getElementsByTagName('body')[0].style.zoom=0.78;

加上这行代码可以实现缩放,但是发现在不同屏幕大小的电脑上,打印的表格会出现不同偏移,单纯的通过zoom来设置并不太好。

在@media print 中添加

        table,
        tbody,
        thead {
            width: 100% !important;
        }

        colgroup {
            position: absolute;
            width: 100% !important;
        }

表格显示不全是宽度的问题,给了表格一个百分比宽度,解决了表格显示不全的问题,而且也没有出现表头偏移的问题。在不同的分辨率的电脑上也可以适应,打印出来的效果也比较好。效果如下:
在这里插入图片描述本人小白一个,自己搞了好多天打印功能,网上的大部分插件,办法都试了个遍,都没有很好的解决。目前的办法也不知道是否完全适用,写的不好 多见谅!

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值