在Vue项目中实现打印功能,可以借助vue-html-to-paper
插件来完成。
步骤
- 创建Vue项目:如果还没有Vue项目,可以使用Vue CLI来创建一个新的项目。
bash
npm install -g @vue/cli
vue create vue-print-template
cd vue-print-template
- 安装
vue-html-to-paper
插件:该插件可以将HTML内容转换为打印页面。
bash
npm install vue-html-to-paper --save
- 在Vue项目中配置和使用插件 :在
main.js
中引入并使用该插件,然后在组件中使用它来实现打印功能。
完整代码
main.js
javascript
import Vue from 'vue';
import App from './App.vue';
// 引入vue-html-to-paper插件
import VueHtmlToPaper from 'vue-html-to-paper';
// 配置插件选项
const options = {
name: '_blank', // 打印窗口的名称
specs: [
'fullscreen=yes', // 全屏模式
'titlebar=yes', // 显示标题栏
'scrollbars=yes' // 显示滚动条
],
styles: [
'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css', // 引入外部样式
'/css/print.css' // 引入自定义打印样式
]
};
// 使用插件
Vue.use(VueHtmlToPaper, options);
Vue.config.productionTip = false;
new Vue({
render: h => h(App),
}).$mount('#app');
App.vue
vue
<template>
<div id="app">
<!-- 打印按钮 -->
<button @click="printTemplate">打印模板</button>
<!-- 打印模板内容 -->
<div id="print-template" ref="printTemplate">
<h1>这是一个打印模板</h1>
<p>这里可以放置你需要打印的内容。</p>
</div>
</div>
</template>
<script>
export default {
name: 'App',
methods: {
printTemplate() {
// 使用vue-html-to-paper提供的$htmlToPaper方法进行打印
this.$htmlToPaper(this.$refs.printTemplate, {
// 可以在这里覆盖全局配置选项
styles: [
'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css',
'/css/print.css'
]
});
}
}
};
</script>
<style>
/* 全局样式 */
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
详细代码注释
-
main.js
:- 引入
vue-html-to-paper
插件,并配置打印窗口的选项,如名称、规格和样式。 - 使用
Vue.use()
方法将插件安装到Vue实例中。
- 引入
-
App.vue
:- 在模板中定义一个按钮,点击该按钮会触发
printTemplate
方法。 - 创建一个
div
元素作为打印模板的容器,并使用ref
属性引用该元素。 - 在
methods
中定义printTemplate
方法,使用this.$htmlToPaper
方法将指定的DOM元素转换为打印页面。
- 在模板中定义一个按钮,点击该按钮会触发
使用说明
- 运行项目:在项目根目录下运行以下命令启动开发服务器。
bash
npm run serve
- 打开浏览器 :访问
http://localhost:8080
,会看到一个"打印模板"按钮和一个包含打印内容的div
元素。 - 点击打印按钮:点击"打印模板"按钮,会弹出一个新的打印窗口,显示打印模板的内容。可以在这个窗口中进行打印设置并打印。
- 自定义样式 :如果需要自定义打印样式,可以在
/public/css/print.css
文件中编写样式代码,并在main.js
或组件中引入该文件。