vue项目集成打印功能(开箱即用)

废话不多说,直接上代码

<template>
  <div>
    <!--//通过按钮来调用-->
    <el-button type="primary" round v-print="printContent">打印 </el-button>
    <!--//需要打印的页面-->
    <div id="printDiv" class="print-box">
      <div >打印内容</div>
    </div>
  </div>
</template>
<script>
export default {
    
    
  data() {
    
    
    return {
    
    
      printContent: {
    
    
        id: 'printDiv',
        // preview: true, // 预览工具是否启用
        // previewTitle: '储能服务费结算单', // 预览页面的标题
        // popTitle: '储能服务费结算单', // 打印页面的页眉
        extraCss: "https://cdn.bootcdn.net/ajax/libs/animate.css/4.1.1/animate.compat.css, https://cdn.bootcdn.net/ajax/libs/hover.css/2.3.1/css/hover-min.css",
        extraHead: '<meta http-equiv="Content-Language"content="zh-cn"/>',
        previewBeforeOpenCallback() {
    
    
          console.log('正在加载预览窗口')
        },
        previewOpenCallback() {
    
    
          console.log('已经加载完预览窗口')
        },
        beforeOpenCallback(vue) {
    
    
          vue.printLoading = true
          console.log('打开之前')
        },
        openCallback(vue) {
    
    
          vue.printLoading = false
          console.log('执行了打印')
        },
        closeCallback(a) {
    
    
          console.log('关闭了打印工具', a)
        },
        clickMounted(vue) {
    
    
          console.log('点击了打印按钮', vue)
          // vue.printSet.popTitle = vue.tableHead // 动态设置页眉
        }
      }
    }
  }
}
</script>

<style lang="scss" scoped>
@page {
    
    
  size: auto;
  margin: 0mm;
}
.procedure {
    
    
  word-wrap: break-word;
}
@media print {
    
    
  //样式写在这里面
}
.title {
    
    
  word-wrap: break-word; //内容不自动换行问题
}
</style>

你可能会发现报错执行不了,那是你没安装vue-print-nb依赖
复制下面命令,终端执行

npm install vue-print-nb --save

等待安装完成后,在main.js中粘贴下面代码

//全局挂载
import Print from 'vue-print-nb'
Vue.use(Print)

恭喜你,成功了

猜你喜欢

转载自blog.csdn.net/m0_71585401/article/details/134897904