使用print-js打印时,页面设置字体不生效问题

前言

在使用打印功能时,打印内容对比页面展示的内容有缺失。原因是页面上显示的文字font-size是9pt,然而调用print-js时,字体变大了,导致同样的高度展示的文字内容少了,造成了内容缺失的现象。

查看nodemodules/print-js/dist/print.js文件发现,print-js接受一个font_size的入参,而这个参数的默认值是12pt。所以,当我们没有传font_size时,print-js就会将所有的字体大小都设置成12pt,就导致了上述问题。

解决方案

首先将nodemodules/print-js/dist/print.js放到本地,如src/common/util文件夹下,接着在引入print-js的地方有所修改。

// import printJS from 'print-js'
import printJS from '@/common/util/print.js'

接着修改源码,将对font-size的设置去掉,从而打印时所显示的内容就与页面展示一致了。

  // elementStyle += 'max-width: ' + params.maxWidth + 'px !important; font-size: ' + params.font_size + ' !important;';
  elementStyle += 'max-width: ' + params.maxWidth + 'px !important;';

参考文章

【vue】print-js打印,解决font-size不生效问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
使用vue-print-nb插件打印,可以通过在打印页面的布局中添加页码元素来设置页码。具体步骤如下: 1. 在需要打印的页面布局中,添加一个用于显示页码的元素,例如一个div或者span标签,并为其设置一个class或者id属性,用于在样式表中设置页码的样式。 2. 在打印样式表中,为页码元素设置合适的位置和样式,可以使用CSS的position属性和top、right等属性来调整页码的位置,使用font-size、color等属性来设置页码的样式。 3. 在打印的页面布局中,使用v-print指令,并将页码元素的选择器作为参数传递给v-print指令,以指定需要打印的内容和设置页码的位置。 以下是一个示例代码,演示了如何使用vue-print-nb插件打印,并设置页码: ```html <template> <div id="print-content"> <!-- 页面内容 --> <h1>这是打印页面的内容</h1> <!-- 页码 --> <div class="page-number">页码: {{ pageNumber }}</div> <!-- 打印按钮 --> <button v-print="'#print-content'">打印</button> </div> </template> <script> export default { data() { return { pageNumber: 1, // 初始化页码 }; }, mounted() { window.addEventListener('beforeprint', this.updatePageNumber); // 监听打印事件,更新页码 }, methods: { updatePageNumber() { this.pageNumber = 1; // 重置页码 }, }, }; </script> <style scoped> .page-number { position: absolute; bottom: 10px; right: 10px; font-size: 12px; color: #999; } </style> ``` 在上述代码中,我们在打印页面的布局中添加了一个div元素,并为其设置了class属性为"page-number",用于显示页码。在打印样式表中,我们设置了页码元素的位置和样式。在打印的页面布局中,使用v-print指令,并将页码元素的选择器"#print-content"作为参数传递给v-print指令,以指定需要打印的内容和设置页码的位置。在mounted钩子函数中,我们监听了beforeprint事件,并在事件回调函数中更新页码。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值