vue打印功能实现
使用Vue实现打印功能
Vue中实现打印功能可以通过浏览器原生的window.print()方法或借助第三方库如vue-print-nb来实现。以下是两种常见方法:
方法一:使用原生JavaScript的window.print()
在Vue组件中直接调用浏览器原生打印功能:
<template>
<div>
<button @click="handlePrint">打印</button>
<div id="printContent">
<!-- 需要打印的内容 -->
<h1>打印测试</h1>
<p>这是需要打印的内容</p>
</div>
</div>
</template>
<script>
export default {
methods: {
handlePrint() {
const printContent = document.getElementById('printContent').innerHTML;
const originalContent = document.body.innerHTML;
document.body.innerHTML = printContent;
window.print();
document.body.innerHTML = originalContent;
}
}
}
</script>
注意事项:
- 临时替换
body内容,打印后恢复原内容 - 打印样式需通过
@media print在CSS中定义
方法二:使用vue-print-nb插件
安装插件:
npm install vue-print-nb --save
在Vue中使用:

<template>
<div>
<button v-print="printObj">打印</button>
<div id="printContent">
<!-- 需要打印的内容 -->
<h1>打印测试</h1>
<p>使用vue-print-nb打印的内容</p>
</div>
</div>
</template>
<script>
import print from 'vue-print-nb'
export default {
directives: {
print
},
data() {
return {
printObj: {
id: 'printContent',
popTitle: '打印标题', // 打印标题
extraCss: 'https://example.com/print.css' // 额外CSS
}
}
}
}
</script>
特性:
- 支持自定义打印区域ID
- 可添加打印标题
- 支持引入额外CSS样式
打印样式优化
在CSS中添加打印专用样式:
@media print {
body * {
visibility: hidden;
}
#printContent, #printContent * {
visibility: visible;
}
#printContent {
position: absolute;
left: 0;
top: 0;
}
}
优化建议:

- 隐藏不需要打印的元素
- 调整打印内容的布局和边距
- 可添加页眉页脚样式
特殊需求处理
分页打印:
@media print {
.page-break {
page-break-after: always;
}
}
打印图片处理: 确保图片URL是绝对路径,避免打印时空缺
表格打印优化:
为表格添加border-collapse: collapse样式确保边框完整
以上方法可根据具体需求选择使用,原生方法适合简单场景,插件方案提供更多定制选项。打印样式需特别注意在@media print中定义以确保效果符合预期。






