vue3问题:如何实现打印功能?

 

编辑排版 | 宋大狮

平台运营 | 小唐狮

ONE 问题描述

2023年4月22号记,久违了大家。

今天要和大家分享的是关于如何实现表单、表格等自定义内容的打印功能。

最近在后台项目中,有遇到打印详情页的需求,因为开发中此功能用的次数不多,所以放在此处仅做一下记录,以供大家查阅。

具体的需求:在表格的操作栏中,点击打印按钮,会弹出一个对话弹框,弹框里会预览要打印的详情内容,然后在弹框中可以点击确认打印,可以点击取消关闭。

具体的问题:1、点击打印按钮,弹出的对话弹框中的内容总是显示第一次打开时的内容,不会重新变化;2、如何实现打印功能;3、如何实现只打印对话弹框中的指定内容。

今天,我们就在这篇文章,用最简洁的语言,来好好地理理上述问题。

TWO 问题解决 

一、代码总览

1、打印功能实现代码

1、安装依赖vue3-print-nb
npm install vue3-print-nb --save

2、main.ts中添加
  import print from "vue3-print-nb";
  .use(print)

3、布局中添加
要打印的内容,最外层盒子加上id
<div class="mod-sys_country__syscountry" id="printMe"> 
打印按钮
<button v-print="printObj">Print local range</button>

4、逻辑中添加相关配置
 data(){
    return {
      printObj: {
      id: "printMe",
      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"/>',
    }
    }
  },

5、样式中添加
<style media="print">
@page{
  size: auto;
  margin-bottom: 0;
}
</style>

2、弹出的对话框实现代码

1、弹出的对话弹框
<el-dialog v-model="dialogFormVisible" title="Shipping address" destroy-on-close>
     2、要打印的内容,此处封装成了组件
     <printCustomerDetail :printId="printId" :AuditMethod="AuditMethod" :printLevel="printLevel" ref="printRef"> </printCustomerDetail>

     <template #footer>
       <span class="dialog-footer">
         <el-button @click="dialogFormVisible = false">Cancel</el-button>

         3、确认打印按钮,点击开始打印
         <el-button type="primary" @click="dialogFormVisible = false" v-print="printObj"> Confirm </el-button>
       </span>
     </template>
</el-dialog>

二、问题解析

1、问:点击打印按钮,弹出的对话弹框中的内容总是显示第一次打开时的内容,不会重新变化。

答:这是element的Dialog 组件本身存在的问题, dialog作为父组件调用子组件时,仅仅只渲染一次,就不再进行渲染。解决的方法有两种,一种是在Dialog 组件中添加属性destroy-on-close,默认为false,功能是当关闭 Dialog 时,销毁其中的元素;一种是在Dialog 组件外边加上一个div标签,加上v-if ,条件和Dialog 出现的条件一致,这样每次渲染完都会进行摧毁,再重新调用组件,每次都会重新进行渲染。

2、问:如何实现打印功能。

答:使用vue3-print-nb库的v-print指令。


3、问:如何实现只打印对话弹框中的指定内容。

答:对要打印的内容,最外层盒子加上id,并在配置中指定对应的id。

- END -

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
实现Vue3 + Vite + Electron的打印功能,你可以按照以下步骤进行。 1. 安装Electron 在项目中安装Electron,你可以使用npm命令进行安装: ``` npm install electron --save-dev ``` 2. 创建Electron应用程序 在应用程序的主目录中创建一个名为main.js的文件,并在其中创建一个Electron应用程序: ```javascript const { app, BrowserWindow } = require('electron') function createWindow () { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true } }) win.loadURL('http://localhost:3000') win.webContents.on('did-finish-load', () => { win.webContents.print() }) } app.on('ready', createWindow) ``` 在这个示例中,我们创建了一个Electron窗口,并在窗口加载完成时执行打印操作。 3. 打印Vue3组件 在Vue3组件中,你可以使用window.print()方法来实现打印功能。例如,在一个名为PrintButton.vue的组件中: ```html <template> <button @click="print">打印</button> </template> <script> export default { methods: { print() { window.print() } } } </script> ``` 在这个示例中,我们在组件中创建了一个打印按钮,并在按钮点击时执行打印操作。 4. 运行应用程序 现在,你可以在终端运行Electron应用程序,并访问http://localhost:3000来测试打印功能: ``` electron . ``` 如果一切正常,你应该能够在Electron窗口中看到你的Vue3应用程序,并且能够通过按钮打印内容。 这就是使用Vue3 + Vite + Electron实现打印功能的基本步骤。当然,你还可以根据自己的需求进行更多的定制和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员大澈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值