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

embedded/2024/10/18 18:17:43/

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

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

  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那样返回

javascript">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="css">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>
css">@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.ppmy.cn/embedded/128526.html

相关文章

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic

Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic 一、认识TDengine二、TDengine Kafka Connector三、什么是 Kafka Connect?四、前置条件五、安装 TDengine Connector 插件六、启动 Kafka七、验证 kafka Connect 是否启动成功八、TDengine Source Connector 的使用…

【PCB】ADAS

1、布局设计 1.1.布局基本原则 1、元器件距离板边距离大于2mm,测试点距离板边大于3mm&#xff0c;BGA与晶体等易裂器件距离板边大于10mm 2、优先放置与结构关系密切的元器件&#xff0c;例如插件、开关等。其次规划好禁布区域及金边位置 3、高个电容、大电感、标贴连接器、BGA…

DOIP协议介绍2-Diagnostic power mode information request (0x4003)消息

DOIP&#xff08;Diagnostic communication over Internet Protocol&#xff09;是基于以太网的通讯协议&#xff0c;用于对UDS协议的数据进行传输&#xff0c;规范于ISO13400标准。DOIP的Type&#xff1a;Diagnostic power mode information request&#xff08;0x4003&#x…

【深度学习】阿里云GPU服务器免费试用3月

【深度学习】阿里云GPU服务器免费试用3月 1.活动页面2.选择交互式建模PAI-DSW3.开通 PAI 并创建默认工作空间4.前往默认工作空间5.创建交互式建模&#xff08;DSW&#xff09;实例 1.活动页面 阿里云免费使用活动页面 2.选择交互式建模PAI-DSW 支持抵扣PAI-DSW入门机型计算用量…

嵌入式职业规划

嵌入式职业规划 在嵌入式的软件开发中&#xff0c;可以分为&#xff1a; 嵌入式MCU软件开发工程师&#xff1b; 嵌入式Linux底层&#xff08;BSP&#xff09;软件开发工程师&#xff1b; 嵌入式Linux应用开发工程师&#xff1b; 嵌入式FPGA算法开发工程师 对于前两个阶段 …

GoFrame学习笔记

官方地址&#xff1a;https://goframe.org/display/gf 视频地址&#xff1a; https://www.bilibili.com/video/BV1Uu4y1u7kX/?vd_source707ec8983cc32e6e065d5496a7f79ee6 一、下载与安装 https://github.com/gogf/gf/releases 在系统变量的Path里设置一个GoFrame的安装目录点…

一次性理清Environment体系

在Spring中&#xff0c;我们可以通过配置文件等方式去进行一些属性值的配置&#xff0c;比如通过Value注解去获取到对应的属性值&#xff0c;又或者说是想在程序运行时获取系统环境变量&#xff0c;类似的这些操作其实都是去获取一些配置数据&#xff0c;所以在Spring中对这些数…

程序员转行方向推荐

对于程序员转行方向的推荐&#xff0c;可以基于当前的技术趋势、市场需求以及程序员的个人技能和兴趣来综合考虑。以下是一些推荐的转行方向&#xff1a; 伴随着社会的发展&#xff0c;网络安全被列为国家安全战略的一部分&#xff0c;因此越来越多的行业开始迫切需要网安人员…