使用vueprintnb打印,当数据

问题:

使用vue-print-nb打印,当数据很多时,打印预览显示不全。

原因:

首先,为了使打印按钮始终固定显示在页面上部,对id=”print”所在的div的高度进行了计算,使其正好布满剩余屏幕高度。

v-html引用的datas是从后端请求来的,由于数据很多,超出了一屏,且其父容器id=”print”设置了:overflow-y:auto;,使id=”print”容器出现了滚动条。

结果,点击打印按钮进行预览时,显示不全,后面的内容没有显示出来。

原理:

通过阅读vue-print-nb的源码,了解到vue-print-nb获取Id=”print”的内容,然后将这些内容放在了vue-print-nb新建的iframe的body标签中,同时将Id=”print”中的样式放在新建的iframe的style标签中。然后经过各种转换、兼容,最终调用原生window.print()执行打印。

解决方法:

1、将vue项目node-modules中的vue-print-nb/print文件夹下的所有内容拷贝出来,放到项目中。我这里是放到了src/assets/vue-print-nb目录下。

2、修改拷贝的源码printarea.js中getBody()返回的body。添加样式:style="height:auto"。

3、修改main.js中的引用。

解决。

遗留问题:

打印预览的最底部出现空白页,一般是由于margin引起的。

因此,保证打印内容的margin-top和margin-bottom为0即可。

我设置了v-html所在的margin。




转载请注明:http://www.aierlanlan.com/rzdk/8668.html