vue3中使用工具实现的打印功能总结

好记性不如烂笔头,如果不记录下来转眼就忘

本文只介绍这两种打印工具:

  1. print-js
  2. vue3-print-nb

本次只因为需求更改为每页添加页眉而从 print-js 改为 vue3-print-nb
适用场景

print.js:

适合只有第一页有页眉,其他页没有的。想要用占位符加那也是加不了的。暂未发现其他不适用的场景。

https://github.com/crabbly/Print.js/issues/38 (作者回复每页页眉么得时间做,用轮子的人更没有时间O(∩_∩)O哈哈~)

使用中需要注意:
1.选择 css 或者 style 样式时 只能选其一生效。建议使用style 样式,不然使用class后有的地方比如使用表格时候设置每列宽度什么的很痛苦。当然,根据需求选择适合的来做。
2.如果使用class的样式在浏览器打印预览中不生效可以试试cssStyle那样返回

const cssStyle = ()=>{
return `
.class1{}
.calss2{}
`
}let focuser = setInterval(() => window.dispatchEvent(new Event("focus")), 500);
const headerHtml = `<div>我是页眉</div>`
printJS({printable: "printJS-page",type: "html",targetStyles: ["*"],scanStyles: true,style: '@page { size: auto; margin: 0mm; }' // 设置取消浏览器默认的页眉页脚0maxWidth: 740,font_size: "",class:cssStyle(),header:headerHtml,headerStyle:'print-header-box',onPrintDialogClose() {clearInterval(focuser);},onError(e) {console.error("打印回调error-info:",e);}});

至于其他的没有什么需要特别注意的。

vue3-print-nb:

适合每页需要页眉的。页眉与页脚设置的方法不相同,所以不能一概而论。

使用中需要注意浏览器默认的页眉页脚,如果不需要的话可以利用以下css样式去掉。

@media print {@page {size: auto;margin: 8mm;}
}

如果需要则在popTitle属性添加就好。

const printMe = ()=>{
return {id: "print-page",popTitle: "默认浏览器中的页眉 docunent",beforeOpenCallback(vue) {vue.printLoading = true;console.log("打开之前");},openCallback(vue) {vue.printLoading = false;console.log("执行了打印");},closeCallback(vue) {console.log("关闭了打印工具");}};
}
<a-button v-print="printMe()">打印</a-button>

使用此工具添加页眉时参考网上的答案但是链接没有保存, 利用table 作为内容的布局方式,作为页眉占位符使用,作为正文内容。布局代码如下。

<div id="print-page"><header class="page-header print-show"><div class="print-header-box"><text>我是页眉</text><img src="../../assets/logo" style="width: 67.5mm;height: 14mm"></div></header><table><thead><tr><td><div class="page-header-space"></div></td></tr></thead><tbody><tr><td>正文</td></tr></tbody></table></div>
@media screen {/* 在自定义预览界面时不显示页眉 */#print-page .print-show {display: none;}#print-page {font-size: 14px;color: #000000;height: calc(100vh - 125px);width: 100%;overflow: hidden auto;display: flex;justify-content: center;padding: 30px 20px;box-sizing: border-box;}/*预览时将占位符高度修改0不可见*/#print-page .page-header-space,#print-page .page-header-space {height: 0;}
}@media print {@page {size: auto;margin: 8mm;}#print-page {width: 100%;display: block;height: auto;font-size: 14px;font-weight: 500;}#print-page .print-header-box {width: 100%;display: flex;justify-content: space-between;align-items: flex-end;border-bottom: 2px solid rgb(140 140 140);padding-bottom: 4px;font-size: 24px;font-weight: bold;}#print-page .page-header {/* 页眉高度 */height: 80px;top: 0mm;position: fixed;width: 100%;z-index: 2000;}#print-page .page-header-space {/* 控制内容区距离顶部的距离,防止与页眉重叠 */height: 80px;}
}

还有一点页眉如果使用矢量浏览器分页预览后只会渲染一次,在分页后的最后一页显示,没有解决,所以插入的是图片。

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

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

相关文章

尚硅谷大数据Flink1.17实战教程-笔记04【Flink DataStream API】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址&#xff1a;尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据Flink1.17实战教程-笔记01【Flink 概述、Flink 快速上手】尚硅谷大数据Flink1.17实战教程-笔记02【Flink 部署】尚硅…

【Spring篇】初识之Spring的入门程序及控制反转与依赖注入

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】&#xff0c;【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 文章目录 &#x1f3af;初始Spring …

【K8S系列】Kubernetes pod节点NotReady问题及解决方案详解【已解决】

Kubernetes 集群中的每个节点都是运行容器化应用的基础。当节点状态显示为 NotReady 时&#xff0c;意味着该节点无法正常工作&#xff0c;这可能会导致 Pod 无法调度&#xff0c;从而影响整个应用的可用性。本文将深入分析节点不健康的各种原因、详细的排查步骤以及有效的解决…

查看SQL执行计划 explain

查看SQL执行计划 explain explain使用方式 alter session set current_schematest; explain plan for sql语句; --并不会实际执行&#xff0c;因此生成的执行计划也是预估的 select * from table(dbms_xplan.display); explain使用场景 1.内存中没有谓词信息了&#xff0…

MySQL从入门到跑路

SQL语言 SQL&#xff08;Structured Query Language&#xff0c;结构化查询语言&#xff09;是用于管理和操作关系数据库的一种标准编程语言。 SQL分类&#xff1a; DDL(Data Definition Language)&#xff1a;数据定义语言&#xff0c;用于操作数据库、表、字段&#xff0c…

前端文件流导出

1、前端代码 ​ /** 导出 */ const handleExport async () > {let config {responseType: blob,headers: {Content-Type: application/json,},};const res await getTargetExport(config);const blob new Blob([res]);const fileName PK目标跟进导出列表.xls;const li…

SpringBoot整合Freemarker(一)

Freemarker和jsp一样是一个视图的引擎模板&#xff0c;其实所有的模板引擎的工作原理都是类似的&#xff0c;如下图&#xff1a; 接下来就具体讲解一下Freemarker的用法&#xff0c;参考手册&#xff1a;模板 数据模型 输出 - FreeMarker 中文官方参考手册 SpringBoot默认就…

【浏览器】如何正确使用Microsoft Edge

1、清理主页广告 如今的Microsoft Edge 浏览器 主页太乱了&#xff0c;各种广告推送&#xff0c;点右上角⚙️设置&#xff0c;把快速链接、网站导航、信息提要、背景等全部关闭。这样你就能得到一个超级清爽的主页。 网站导航       关闭 …

HarmonyOS NEXT和认证(在校生的大福利)

今天重点关注了一下HarmonyOS NEXT&#xff0c;也就是我们所说的纯血鸿蒙&#xff01; 根据官方的说法&#xff1a; 欢迎开发者进入HarmonyOS NEXT。暌违一年&#xff0c;HarmonyOS NEXT终于在万千开发者的期待下从幕后走向台前。 HarmonyOS NEXT采用全新升级的系统架构&#…

【Python】NumPy(一):数据类型、创建数组及基本操作

目录 ​NumPy初识 1.什么是NumPy&#xff1f; NumPy的应用 NumPy数据类型 Python基本数据类型 NumPy数据类型 NumPy数组 创建数组 1.使用numpy.array() 2.使用arange()方法创建 3.使用linspace()创建等差数列 4使用zeros()创建数组 5.使用ones()创建数组 6.利用…

Linux基本使用和程序部署

文章目录 一. Linux背景Linux发行版 二. Linux环境搭建Linux常见命令lspwdcdtouchcatmkdirrmcpmvtailvimgreppsnetstat管道 三. 搭建java部署环境安装jdk安装mysql部署Web项目到Linux 一. Linux背景 1969−1970年,⻉尔实验室的DennisRitchie和KenTompson开发了Unix操作系统. 他…

在Linux操作系统上安装NVM教程——CentOS 7/VMware 17版

目录 一、测试网络是否能上网 二、下载阿里云镜像 三、解决执行yum命令出现报错&#xff08;没有就跳过&#xff09; 四、下载NVM安装包 五、解压NVM安装包 六、安装Node 七、连接新的动态库 八、升级GLIBC版本 九、安装GCC 十、查看当前服务器CentOS版本 一、测试网…

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka&#xff0c;但是在创建和使用过程中都遇到了一些报错和麻烦&#xff0c;毕竟老外的东西&#xff0c;和阿里云、华为使用起来还是不一样。 一、创建&#xff08;创建的配置过程就略了&#xff0c;就是配置一下可用区、型号&#xff0…

闯关leetcode——110. Balanced Binary Tree

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/balanced-binary-tree/description/ 内容 Given a binary tree, determine if it is height-balanced. A height-balanced binary tree is a binary tree in which the depth of the two subtrees…

深入理解售后派单管理系统,功能优势一览

售后派单管理系统优化售后服务流程&#xff0c;提升响应速度、运营效率和服务质量。ZohoDesk等系统通过自动化派单、实时调度监控等功能&#xff0c;助力企业赢得竞争优势。适用于电子产品、汽车、IT及房地产等行业。 一、什么是售后派单管理系统 售后派单管理系统是一种专门用…

第七届机械、控制与计算机工程国际学术会议(ICMCCE2024)

重要信息 大会官网&#xff1a;www.icmcce.com 大会地点&#xff1a;中国杭州 大会时间&#xff1a;2024年10月25-27日 大会简介 第七届机械、控制与计算机工程国际学术会议定于2024年10月25日至27日在中国杭州召开。本届会议由巢湖学院主办&#xff0c;主要围绕“机械”、…

AGI|浅尝多Agent协作框架CrewAI,打造一个智能旅行助手

目录 一、介绍 二、特性 三、使用案例 四、 结语 一、介绍 Crew AI是一个多智能体协作智能框架&#xff0c;可以编排角色扮演的AI智能体。旨在协调角色扮演的自主AI代理&#xff0c;通过促进协作智能体&#xff0c;Crew AI使代理能够无缝协作&#xff0c;共同应对复杂任务。…

【JavaScript】LeetCode:61-65

文章目录 61 课程表62 实现Trie&#xff08;前缀树&#xff09;63 全排列64 子集65 电话号码的字母组合 61 课程表 Map BFS拓扑排序&#xff1a;将有向无环图转为线性顺序。遍历prerequisites&#xff1a;1. 数组记录每个节点的入度&#xff0c;2. 哈希表记录依赖关系。n 6&a…

(十九)、使用 minikube 运行k8s 集群

文章目录 1、机器信息2、官方文档3、启动本机 docker4、安装 minikube5、启动 minikube5.1、报错重试应该做什么&#xff1f; 6、启动后7、安装 Vs Code & k8s extensions8、在 VS Code 查看运行起来的 k8s 集群9、基本命令10、虚拟化不支持 Mac Os 14.3.1 1、机器信息 Ma…

c++算法第3天

本篇文章包含三道算法题&#xff0c;难度由浅入深&#xff0c;适合新手练习哟 目录 第一题 题目链接 题目解析 代码原理 代码编写 本题总结 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第一题 题目链接 [NOIP2…