Vue使用插件vue-print-nb实现当前页面打印功能

1. 安装vue-print-nb

Vue2版本安装方法:

npm install vue-print-nb --save

Vue3版本安装方法:

npm install vue3-print-nb --save

2. 引入Vue项目

Vue2引入方式:

// 1. 全局挂载,在main.js添加
import Print from 'vue-print-nb'
Vue.use(Print)
// or
// 2. 自定义指令,在单业务页面添加
import print from 'vue-print-nb'
directives: {
  print
}

Vue3引入方式

// 1. 全局挂载
import { createApp } from 'vue'
import App from './App.vue'
import print from 'vue3-print-nb'
const app = createApp(App)
app.use(print)
app.mount('#app')
// or 
// 2. 自定义指令
import print from 'vue3-print-nb'
directives: {
    print   
}

3. 参数说明

参数作用类型可选项默认值
id局部打印有效,标识符String-‘printId’
standard局部打印有效,打印的文本类型StringHTML5/loose/strictHTML5
extraHead局部打印有效,添加在打印区域的最顶端String--
extraCss局部打印有效,为打印区域提供Stylesheet样式表String--
popTitle局部打印有效,编辑页眉的标题String-Document Title
clickMounted全局有效,调用v-print绑定的按钮点击事件callbackFunction-this.Object
openCallback全局有效,调用打印时的callbackFunction-this.Object
closeCallback全局有效,调用关闭打印的callback(无法区分确认or取消)Function-this.Object
beforeOpenCallback全局有效,调用开始打印之前的callbackFunction-this.Object
preview全局有效,控制打印预览Booleantrue/falsefalse
previewTitle编辑预览页面的预览标题String-‘打印预览’
previewPrintBtnLabel编辑预览页面的打印按钮文本String-‘打印’
previewBeforeOpenCallback调用打开预览页面之前的callbackFunction-this.Object
previewOpenCallback调用打开预览页面之后的callbackFunction-this.Object
url非局部打印有效,打印指定的URL,确保同源策略相同String--
asyncUrl非局部打印有效,异步加载打印指定的URL,确保同源策略相同Function--
zIndex预览有效,预览窗口的z-index,默认是20002,最好比默认值更高String,Number-20002

4. template示例:

<template>
  <div class="app-container">
    <!-- 按钮 -->
    <el-card>
      <el-button type="primary" @click="history">审批历史</el-button>
      <el-button v-print="'#printTest'">打印</el-button>
    </el-card>
    <!-- 审批节点信息 -->
    <el-card v-if="nodeList && auditList" style="margin-top: 10px">
      <audit-step :node-list="nodeList" :audit-list="auditList" />
    </el-card>
    <!-- 申请表单数据 -->
    <div id="printTest">
      <!-- 打印内容 -->
      <h3 style="text-align:center" v-text="templateName" />
      <check :instance-id="instanceId" />
      <audit-history-dialog :instance-id="instanceId" :visible.sync="auditHistoryVisible" />
    </div>
  </div>
</template>

<style media="printTest" scoped>
    @page {
      margin: 0mm; /* this affects the margin in the printer settings */
      display: block;
      width: 100%;
      overflow: hidden;
    }
  #printTest table {
    table-layout: auto !important;
  }

  #printTest .el-table__header-wrapper .el-table__header {
    width: 100% !important;
    border: solid 1px #f2f2f2;
  }
  #printTest .el-table__body-wrapper .el-table__body {
    width: 100% !important;
  }
  #printTest #pagetable table {
    table-layout: fixed !important;
  }
</style>

页面效果:

在这里插入图片描述

在这里插入图片描述
PS:

Callback函数中this指向当前print object对象,that返回Vue对象;
不需要页眉页脚可以在打印弹窗页面的更多设置里面取消选择; 不设置popTitle参数页眉标题为undifined;
popTitle参数为空时,页眉标题默认为Document Title

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神也畏惧小卢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值