vue3 自定义打印模板
时间: 2025-06-23 09:24:56 浏览: 8
### 创建和使用自定义打印模板
在 Vue3 中创建和使用自定义打印模板可以通过多种方式实现。一种常见的方法是通过条件渲染特定的打印视图,并利用 CSS 的 `@media` 查询来控制页面布局。
#### 使用条件渲染和CSS媒体查询
首先,在项目中的 `src/components` 目录下创建一个新的 `.vue` 文件作为打印专用组件,命名为 `PrintTemplate.vue`:
```html
<template>
<div class="print-template">
<h1>{{ title }}</h1>
<p>{{ content }}</p>
</div>
</template>
<script>
export default {
name: 'PrintTemplate',
props: ['title', 'content']
};
</script>
<style scoped>
@media print {
.print-template h1 {
color: blue;
}
.print-template p {
font-size: 12pt;
line-height: 1.6em;
}
}
</style>
```
此部分展示了如何设置一个基本的打印模板结构以及应用专门针对打印机优化过的样式[^1]。
接着,在主应用程序文件 `App.vue` 中引入这个新组建,并提供必要的属性值给它以便显示所需的信息:
```html
<template>
<div id="app">
<button @click="togglePrintView">切换到打印预览模式</button>
<!-- 条件渲染 -->
<div v-if="isPrinting" style="display:none;">
<PrintTemplate :title="'我的文档'" :content="'这里是想要打印的内容...'" />
</div>
</div>
</template>
<script>
import PrintTemplate from './components/PrintTemplate';
export default {
name: 'App',
data() {
return {
isPrinting: false,
};
},
methods: {
togglePrintView() {
this.isPrinting = !this.isPrinting;
if (this.isPrinting) {
setTimeout(() => window.print(), 0);
} else {
window.location.reload();
}
},
},
components: {
PrintTemplate,
},
};
</script>
<style>
/* 隐藏不需要打印的部分 */
@media screen and (not print) {
#print-only { display: none }
}
@media print {
.screen-only { display: none }
}
</style>
```
上述代码片段说明了怎样动态地展示或隐藏用于打印目的的内容区域,并触发浏览器内置的打印对话框功能[^2]。
最后,如果希望进一步增强用户体验,则可以考虑添加额外的功能,如调整字体大小、纸张方向等选项;也可以探索其他插件库提供的更高级别的解决方案。
阅读全文
相关推荐

















