vue实现页面打印
Vue 实现页面打印的方法
在 Vue 项目中实现页面打印功能可以通过多种方式完成,以下是几种常见的方法:
使用 window.print() 方法
直接调用浏览器的打印 API window.print() 是最简单的方式。适用于打印整个页面或当前可见内容。
methods: {
printPage() {
window.print();
}
}
在模板中添加一个按钮触发打印:
<button @click="printPage">打印页面</button>
打印特定区域
如果需要打印页面中的特定区域而非整个页面,可以通过 CSS 控制打印内容。隐藏不需要打印的元素,仅显示目标区域。
@media print {
.no-print {
display: none;
}
.print-area {
display: block !important;
}
}
在 Vue 模板中标记需要打印的区域:

<div class="print-area">
这里是需要打印的内容
</div>
<button @click="printPage" class="no-print">打印</button>
使用 vue-print-nb 插件
vue-print-nb 是一个专门为 Vue 设计的打印插件,使用简单且功能强大。
安装插件:
npm install vue-print-nb --save
在 Vue 项目中引入并使用:

import Print from 'vue-print-nb'
Vue.use(Print);
在模板中使用:
<div id="printArea">
需要打印的内容
</div>
<button v-print="'#printArea'">打印</button>
动态生成打印内容
对于需要动态生成打印内容的场景,可以通过创建一个隐藏的 iframe 或新窗口来加载打印内容。
methods: {
printDynamicContent(content) {
const printWindow = window.open('', '_blank');
printWindow.document.write(`
<!DOCTYPE html>
<html>
<head>
<title>打印内容</title>
</head>
<body>
${content}
</body>
</html>
`);
printWindow.document.close();
printWindow.focus();
printWindow.print();
}
}
打印样式优化
通过 CSS 的 @media print 规则优化打印效果,例如调整页边距、隐藏背景色等。
@media print {
body {
margin: 0;
padding: 0;
background-color: white;
}
a {
text-decoration: none;
color: black;
}
}
注意事项
- 打印时浏览器默认会去掉背景色,如需保留需在打印设置中勾选“背景图形”。
- 某些 CSS 属性在打印时可能不生效,建议使用打印专用的样式表。
- 对于复杂的打印需求,可以考虑使用专门的打印库如
Print.js。






