vue 实现打印
Vue 实现打印功能的方法
在Vue项目中实现打印功能可以通过多种方式完成,以下是几种常见的方法:
使用window.print()方法
window.print()是浏览器原生支持的打印方法,可以直接调用打印当前页面。
methods: {
printPage() {
window.print()
}
}
打印特定区域
如果只需要打印页面中的特定区域,可以创建一个包含该区域内容的iframe来实现。

printSection(id) {
const element = document.getElementById(id)
const iframe = document.createElement('iframe')
iframe.setAttribute('style', 'position:absolute;width:0px;height:0px;left:-500px;top:-500px;')
document.body.appendChild(iframe)
const frameWindow = iframe.contentWindow
frameWindow.document.write('<html><head><title>打印</title></head><body>')
frameWindow.document.write(element.innerHTML)
frameWindow.document.write('</body></html>')
frameWindow.document.close()
setTimeout(() => {
frameWindow.focus()
frameWindow.print()
document.body.removeChild(iframe)
}, 200)
}
使用第三方库
vue-print-nb是一个专门为Vue设计的打印插件,使用简单方便。
安装:

npm install vue-print-nb --save
使用:
import Print from 'vue-print-nb'
Vue.use(Print)
// 在模板中使用
<button v-print="'#printArea'">打印</button>
<div id="printArea">
<!-- 需要打印的内容 -->
</div>
打印样式处理
为打印内容添加专门的CSS样式,确保打印效果符合要求。
@media print {
body * {
visibility: hidden;
}
#printArea, #printArea * {
visibility: visible;
}
#printArea {
position: absolute;
left: 0;
top: 0;
}
}
打印预览控制
通过CSS控制打印时的分页和布局。
@media print {
.page-break {
page-break-after: always;
}
@page {
size: A4;
margin: 10mm;
}
}
以上方法可以根据具体需求选择使用,window.print()适合简单场景,打印特定区域适合局部打印需求,第三方库提供了更便捷的集成方式,而CSS样式控制则可以优化打印输出效果。






