如何在 Vue 3 中使用 vue3-print-nb 实现灵活的前端打印

你好,我是小白Coding日志,一个热爱技术的程序员。在这里,我分享自己在编程和技术世界中的学习心得和体会。希望我的文章能够给你带来一些灵感和帮助。欢迎来到我的博客,一起在技术的世界里探索前行吧!

前言

在前端开发中,经常需要打印页面的特定部分,比如客户列表或商品详情页。要快速实现这些功能,可以使用 vue3-print-nb 插件。它通过对 DOM 元素的操作和 CSS 样式的处理,轻松实现页面内容的打印功能。

安装

当前示例以Vue3+ElementPlus为例,如果要使用vue2版本的就安装npm install vue-print-nb --save

npm install vue3-print-nb --save
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import print from 'vue3-print-nb'
import './style.css'
import App from './App.vue'
const app = createApp(App)app.use(ElementPlus)
app.use(print)
app.mount('#app')
使用
<script setup>
import { ref } from 'vue'defineProps({msg: String,
})const count = ref(0)const tableData = [{date: '2016-05-03',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-02',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-04',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},{date: '2016-05-01',name: 'Tom',address: 'No. 189, Grove St, Los Angeles',},
]</script><template><h1>{{ msg }}</h1><div class="btn"><el-button type="primary" v-print="'#printTable'">打印</el-button></div><el-table id="printTable" :data="tableData" border style="width: 100%"><el-table-column prop="date" label="Date" width="180" /><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" /></el-table>
</template>

image.png
只需要在要打印的元素上通过v-print属性即可实现打印的效果,可以选择打印全部或者打印指定页面,比如我只想要打印el-table表格部分,只需要在el-button按钮上面绑定v-print="'#printTable'",我已经提前在el-table上定义好了id="printTable"v-print的属性值对应的就是el-table
打印效果预览👇
image.png
以上实现了一个最基本的打印效果,v-print还支持更多的属性呢!它的属性值可以是一个对象以此来实现更加定制化的打印效果,一起来看看吧💖
HTML

  <div class="btn"><el-button type="primary" v-print="printObj">打印</el-button></div><el-table id="printTable" :data="tableData" border style="width: 100%"><el-table-column prop="date" label="Date" width="180" /><el-table-column prop="name" label="Name" width="180" /><el-table-column prop="address" label="Address" /></el-table>

JavaScript

const printObj = {id: 'printTable',popTitle: 'print nb',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"/>',beforeOpenCallback (vue) {console.log('打开之前')},openCallback (vue) {console.log('执行了打印')},closeCallback (vue) {console.log('关闭了打印工具')}
}

我们可以给要打印的页面指定额外的样式、额外的样式、额外头,甚至是添加回调函数!

打印网址

printObj对象添加一个url属性即可实现打印当前网址对应的整个页面。但是如何设置了url数据就不能再同时设置id属性了。还有一点需要的注意的是设置url属性需要确保同源策略相同!

const printObj = {url: 'http://localhost:5173/',popTitle: 'good print',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"/>',beforeOpenCallback (vue) {console.log('打开之前')},openCallback (vue) {console.log('执行了打印')},closeCallback (vue) {console.log('关闭了打印工具')}
}
2.2. 打印预览

设置了preview属性将在打印时候显示打印预览。

const printObj = {id: 'printTable',preview:true, // 打印预览previewTitle: '打印预览',popTitle: 'good print',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"/>',beforeOpenCallback (vue) {console.log('打开之前')},openCallback (vue) {console.log('执行了打印')},closeCallback (vue) {console.log('关闭了打印工具')}
}

打印预览效果
image.png

v-print API

参数说明类型可选项默认值
id范围打印ID,必填值String
standard文档类型(仅打印本地范围)Stringhtml5/loose/stricthtml5
extraHead在节点中添加 DOM 节点,多个节点用 分隔,(仅打印局部范围)String
extraCss新的 CSS 样式表,并使用 分隔多个节点,(仅打印局部范围)String-
popTitle标签内容(仅打印本地范围)String-
openCallback调用打印工具成功回调函数FunctionReturns the instance of Vue called at that time-
closeCallback关闭打印工具成功回调函数FunctionReturns the instance of Vue called at that time-
beforeOpenCallback调用打印工具前的回调函数FunctionReturns the instance of Vue called at that time-
url打印指定URL。(不可同时设置ID)string--
asyncUrl通过 ‘resolve()’ 返回 URLFunction--
preview预览工具Boolean-false
previewTitle预览工具标题String-‘打印预览’
previewPrintBtnLabel预览工具按钮的名称String-‘打印’
zIndex预览工具的 CSS:z-indexString,Number-20002
previewBeforeOpenCallback启动预览工具前的回调函数FunctionReturns the instance of Vue-
previewOpenCallback预览工具完全打开后的回调函数FunctionReturns the instance of Vue-

官方文档:https://github.com/Power-kxLee/vue3-print-nb?tab=readme-ov-file#v-print-api

最后还是那句话:即使代码逻辑很简单,也值得记录下来。我的编程目标是避免重复造轮子!😊
如果觉得有用,就给我点个赞吧😁
探索更多有趣知识,欢迎关注我的微信公众号!每天分享精彩内容,与你一同探寻知识的边界。扫码即可订阅,一起开启知识新旅程!🚀📚
关注我的技术博客,探索前沿科技与实用开发技巧。一起携手走向代码的精彩世界!🚀💻 不错过每一篇精彩!

https://www.xiaobaicoding.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/349719.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java语言+前端Angular+后台Java+Spring开发的云his系统源码 一站式解决诊所经营管理需求 云HIS住院业务流程

Java语言前端Angular后台JavaSpring开发的云his系统源码 一站式解决诊所经营管理需求 云HIS住院业务流程 HIS系统住院业务流程是什么&#xff1f; HS系统为医院提供了一套完整的住院业务流程解决方案&#xff0c;旨在提高住院管理的效率和精确度。通过HS系统&#xff0c;医院工…

大数据------JavaWeb------前端知识点汇总

额外知识点 W3C标准&#xff1a;W3C是万维网联盟&#xff0c;这个组成是用来定义标准的。他们规定了一个网页是由三部分组成 结构&#xff1a;对应的是 HTML 语言表现&#xff1a;对应的是 CSS 语言行为&#xff1a;对应的是 JavaScript 语言 HTML定义页面的整体结构&#xff1…

c#中上传超过30mb的文件,接口一直报404,小于30mb的却可以上传成功

在一次前端实现上传视频文件时,超过30mb的文件上传,访问接口一直报404,但是在Swagger中直接访问接口确是正常的,且在后端控制器中添加了限制特性,如下 但是却仍然报404,在apifox中请求接口也是报404, 网上说: 在ASP.NET Core中,配置请求过来的文件上传的大小限制通常…

火爆全网《pvz植物大战僵尸杂交版》最新安装包,支持Android、Windows、iOS!

我是阿星&#xff0c;今天跟大家聊聊最近在B站火得一塌糊涂的老游戏——《植物大战僵尸》。你没听错&#xff0c;就是那个曾经让我们熬夜奋战&#xff0c;一关又一关的游戏。 话说回来&#xff0c;这游戏怎么就突然又火起来了呢&#xff1f; 原来&#xff0c;是因为它的最新整…

如何舒适的使用VScode

安装好VScode后通常会很不好用&#xff0c;以下配置可以让你的VScode变得好用许多。 VScode的配置流程 1、设置VScode中文2、下载C/C拓展&#xff0c;使代码可以跳转3、更改编码格式4、设置滚轮缩放5、设置字体6、设置保存自动改变格式7、vscode设置快捷代码8、下载插件并学会…

智慧检务大数据平台解决方案

1.1. 政务目标分析 1.1.1. 业务功能分析 为履行检察职能&#xff0c;人民检察院需开展职务犯罪查办和预防、刑事诉讼监督、民事行政监督、检务支持、内部管理与办公、检察队伍管理、检务保障支持等工作&#xff0c;分为 7 大类业务&#xff0c;主要功能如下&#xff1a; 1、…

[工具探索]富士mini90拍立得使用指南

文章目录 1. 基本功能介绍1.1 相机外观1.2 电池与胶片 2. 设置相机2.1 装入电池2.2 装入胶片 3. 拍摄模式3.1 标准模式3.2 儿童模式3.3 远景模式3.4 双重曝光模式3.5 Bulb&#xff08;B&#xff09;模式3.6 **派对模式**3.7 微距模式3.8 **亮度模式**3.9 **定时拍摄模式**3.10 …

【SkyWalking】使用PostgreSQL做存储K8s部署

拉取镜像 docker pull apache/skywalking-ui:10.0.1 docker tag apache/skywalking-ui:10.0.1 xxx/xxx/skywalking-ui:10.0.1 docker push xxx/xxx/skywalking-ui:10.0.1docker pull apache/skywalking-oap-server:10.0.1 docker tag apache/skywalking-oap-server:10.0.1 xxx…

Qt实现简易播放器

效果如图 源码地址&#xff1a; 简易播放器: 基于Qt的简易播放器&#xff0c;底层采用VLC源码 - Gitee.com GitHub:GitHub - a-mo-xi-wei/easy-player: 基于Qt的调用VLC的API的简易播放器

Windows 文件夹(文件)备份脚本bat

使用xcopy 来实现 1、新建一个bat脚本 重命名文件为 windows_log_bak.bat 后缀也成修改为.bat 2、备份代码 xcopy参数&#xff1a; #可在命令窗口执行这个命今&#xff0c;查看所有参数详细 xcopy /? 使用的参数&#xff1a; /e&#xff1a;拷贝所有子目录&#xff0c;包括…

电源小白入门学习11——反激电源电路原理

电源小白入门学习11——反激电源、正激电源 隔离电源变压器介绍反激电源 前面我们学习了BUCK、BOOST、BUCK-BOOST 等各种各样的DCDC变换器&#xff0c;但是他们都有一共同的特点&#xff0c;即能量的传输路径时一个完整的通路&#xff0c;输入与输出之间不存在电气隔离&#xf…

利用系统或软件缺陷进行攻击

操作系统都有漏洞 这里就是输入的字符串长度太长了 超过8个字节了 没听懂

Solr 日志系统7.4.0部署和迁移到本地,Core Admin 添加新的core报错

文章目录 Solr部署Docker部署二进制部署 Tips:Solr设置账号密码方法1&#xff1a;(不使用)方法2&#xff1a; Core Admin 添加新的core报错Solr数据迁移 Solr部署 Docker部署 docker run -d -p 8983:8983 --name solr solr:latest docker run -d -p 8983:8983 -v /opt/solr:/…

面试题——Spring

★1.Spring和SpringBuffer和SpringBuilder的区别? ①值可变性 Spring中的值是final修饰的,不可变,当试图修改这个不可变值时等于创建一个新的对象。 SpringBuffer和SpringBuilder则是可变的 ②线程安全性 Spring: 值不可改 (安全) SpringBuffer: 自带Synchernized锁 (安全…

win10更新wsl.exe闪退,wsl命令行打不开

之前wsl可以用&#xff0c;更新后用不了&#xff0c;解决方法参考&#xff1a;win11 自带的wsl打开异常 - Microsoft Q&A 在“控制面板”->“程序和功能”->“打开或关闭 Windows 功能”-> 选中“适用于 Linux 的 Windows 子系统”&#xff0c;或使用 PowerShell…

笔记100:使用 OSQP-Eigen 对 MPC 进行求解的方法与代码

1. 前言&#xff1a; 我们在对系统进行建模的时候&#xff0c;为了减少计算量&#xff0c;一般都将系统简化为线性的&#xff0c;系统如果有约束&#xff0c;也是将约束简化为线性的&#xff1b; 因此本篇博客只针对两种常见系统模型的 MPC 问题进行求解&#xff1a; 线性系统…

席卷的B站《植物大战僵尸杂交版》V2.0.88整合包,PC和手机可用,含通关存档和视频教程!

今天给大家安利一款席卷B站&#xff0c;火爆全网的游戏——《植物大战僵尸杂交版》2.0.88整合包。 这个是网络上现存植物大战僵尸杂交版的最全整合&#xff0c;包含了修改工具&#xff0c;超强通关存档和高清工具。工具包有安装视频教程&#xff0c;支持手机版和pc多端使用&am…

【讯为Linux驱动开发】7.信号量semaphore

【信号量】 信号量的本质是一个全局变量&#xff0c;值为可以共享资源的最大数 比如&#xff1a;我只想同时让一个人访问共享资源&#xff0c;那么信号量的值为1。 A访问时&#xff0c;信号量减一&#xff0c;此时B想访问时&#xff0c;看到信号量为0&#xff0c;就休眠挂起…

windows11 建立批处理bat文件来删除指定目录下的所有隐藏的文件。

今天在导入项目的时候发现之前项目中的文件夹中有很多隐藏的临时文件&#xff0c;这个文件应该是版本控制产生的&#xff0c;导致导入后文件夹上有X&#xff0c;然后里面文件是一个没有错。 我们来建立一个bat来&#xff0c;进行批量删除隐藏文件就可以了&#xff1a; echo o…

Python基于 Jupyter Notebook 的图形可视化工具库之ipysigma使用详解

概要 在数据科学和网络分析中,图(Graph)结构是一种常用的数据结构,用于表示实体及其关系。为了方便图数据的可视化和交互操作,ipysigma 提供了一个基于 Jupyter Notebook 的图形可视化工具。通过 ipysigma,用户可以在 Jupyter Notebook 中创建、编辑和展示图结构,方便进…