前端打印表格功能+单号生成条形码

news/2024/4/26 0:16:48/文章来源:https://blog.csdn.net/weixin_73318685/article/details/134118785

第一种打印方法:不需要下载任何插件

浏览器自带打印功能(不太推荐),原理是生成新的页面后被打印,当打印完成或者取消打印时,页面需要强制刷新,否则页面无法回显。

//打印功能
print() {var print = document.getElementById("print"); //获取到你表格绑定的idvar newContent = print.innerHTML;var oldContent = document.body.innerHTML;document.body.innerHTML = newContent;document.getElementsByTagName('body')[0].style.zoom=0.8;window.print();window.location.reload();//将原油页面还原document.body.innerHTML = oldContent;document.getElementsByTagName('body')[0].style.zoom=1;},

需要打印的页面:

点击打印后原始页面会被覆盖,如图:

第二种打印方法):下载print-js第三方库 + 这里顺带将列表内的单号生成条形码一同打印

第一步:下载 print-js 打印库 和  jsbarcode 条码库
npm install print-js --save
npm install jsbarcode --save
第二步:在需要打印的组件中,引入print-js,并在打印事件的处理方法中编写代码来实现打印功能。
import printJS from 'print-js'
import JsBarcode from 'jsbarcode'
printTable() {// 创建一个新的div来放置每一行数据及其对应的条形码const printContent = document.createElement('table');const title =document.createElement('tr');//自定义打印表格的表头const t1= document.createElement('th')t1.textContent='检测单号'title.appendChild(t1);const t2= document.createElement('th')t2.textContent='进场批次'title.appendChild(t2);const t3= document.createElement('th')t3.textContent='商户名称'title.appendChild(t3);printContent.appendChild(title);// 遍历表格数据,为每一行检测单号生成条形码,并将数据和条形码放置在div中this.tableData.forEach(item => {const row = document.createElement('tr');// 添加条形码const barcodeContainer = document.createElement('img');//第二个参数表示需要生成条形码的数据JsBarcode(barcodeContainer, item.detectionCode, {format: 'CODE128', // 条形码格式displayValue: true, // 显示条形码数值height:40 //条形码高度});row.appendChild(barcodeContainer);// 根据所需打印内容添加数据项const dataBatch= document.createElement('td');dataBatch.textContent = item.batch;row.appendChild(dataBatch);const tenantName = document.createElement('td');tenantName.textContent = item.tenantName;row.appendChild(tenantName);// 将每一行数据添加到打印内容div中printContent.appendChild(row);});// 将打印内容添加到body中document.body.appendChild(printContent);// 执行打印内容,这里加了一个定时器是为了解决在打印表格时条形码有时候会不显示的问题setTimeout(()=>{//解决打印时会导致样式丢失问题const style = '@media print {td{text-align:center;width:200px} }';//这里设置打印内容的样式printJS({printable: printContent,type: 'html',style: style,header: null,base64: true,}, () => {// 打印完成后需要进行的操作});},1000)//移除打印内容document.body.removeChild(printContent);},

需要打印的页面:

点击打印按钮后不会覆盖原始页面:

过程中遇到的问题:

在生成条形码这一块遇到问题:点击打印按钮后弹出打印内容的页面,发现有的时候条形码不显示,可能是因为printJS执行打印操作时,某些条形码元素还未完全加载完毕导致的。为了解决这个问题,尝试使用setTimeout函数延迟一段时间后再执行打印操作,以确保页面元素加载完全。

在上一个问题得到解决的同时产生了一个新问题:就是打印内容的页面样式丢失了(原本我的样式是在插入每一行元素前设置的),网上找了一圈方案终于得到了解决,可能是因为在延迟执行打印操作时,页面布局和样式的计算还未完成。于是我将样式写在了setTimeout里面,并将样式赋给了 printJS 里的style属性 ,最终得到了解决。

其中用到了JsBarcode库来生成条形码,printJS用来实现打印功能。

printJS官方文档: https://printjs.crabbly.com/

JsBarcode官方文档:https://lindell.me/JsBarcode/

JsBarcode里的参数设置:

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

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

相关文章

24 行为型模式-访问者模式

1 访问者模式介绍 访问者模式在实际开发中使用的非常少,因为它比较难以实现并且应用该模式肯能会导致代码的可读性变差,可维护性变差,在没有特别必要的情况下,不建议使用访问者模式。 2 访问者模式原理 3 访问者模式实现 我们以超市购物为例,假设超市中的三类商品: 水果,糖…

预制件二维码怎么做

凡尔码的二维码管理系统不仅提供了高效便捷的二维码生成功能,还配备了一套完善的预制构件管理方案。通过扫描二维码,用户可以查看预制构件的详细信息,包括项目名称、构建名称、安装位置、重量、生产日期、生产单位、产品出厂检验材料、尺寸等…

【算法-数组2】有序数组的平方 和 长度最小的子数组

今天,带来数组相关算法的讲解。文中不足错漏之处望请斧正! 理论基础点这里 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 示例 1: 输…

React-快速搭建开发环境

1.安装 说明:react-excise-01是创建的文件名 npx create-react-app react-excise-01 2. 打开文件 说明:we suggest that you begin by typing:下面即是步骤。 cd react-excise-01 npm start 3.显示

ip划分与私公网ip、ip的传递

报文问路:1、不知道跳转默认路由器,2、知道路径,向对应路径发出报文,3、路口路由器,下一步就是目标主机在哪。 想要通信必须同在一个局域网,其实将公网就可以看作一个大型的局域网。 在同一个局域网内发送…

MySQL扩展语句和约束条件

MySQL扩展语句 create TABLE if not exists ky32 (id int(4) zerofill primary key auto_inc rement, #表示该字段可以自增长,默认从1开始每条记录会自动递增1name varchar(10) not null,cradid int(10) not null unique key,hobby varchar (50))&#x…

Android NDK开发详解之Application.mk探秘

Android NDK开发详解之Application.mk探秘 概览变量APP_ASFLAGSAPP_ASMFLAGSAPP_BUILD_SCRIPTAPP_CFLAGSAPP_CLANG_TIDYAPP_CLANG_TIDY_FLAGSAPP_CONLYFLAGSAPP_CPPFLAGSAPP_CXXFLAGSAPP_DEBUGAPP_LDFLAGSAPP_MANIFESTAPP_MODULESAPP_OPTIMAPP_PLATFORMAPP_PROJECT_PATHAPP_STL…

矢量图形编辑软件illustrator 2023 mac中文软件特点

illustrator 2023 mac是一款矢量图形编辑软件,用于创建和编辑排版、图标、标志、插图和其他类型的矢量图形。 illustrator 2023 mac软件特点 矢量图形:illustrator创建的图形是矢量图形,可以无限放大而不失真,这与像素图形编辑软…

一文了解什么是JWT 与sessions

​session 和 JSON Web 令牌 (JWT) 是在调用之间维护此身份验证状态的两种最流行的方法。两者各有利弊,在它们之间进行选择需要了解这些权衡以及它们与应用程序的特定需求之间的关系。 一、基于session的身份验证 在基于session的身份验证(也称为基于 c…

spring boot配置ssl(多cer格式)保姆级教程

1. 准备cer格式的证书; 2. 合并cer证书并转化成jks格式的证书 为啥有这一步,因为cer证书配置在spring boot项目中,项目启动不起来。如果有大佬想指导一下可以给我留言,在此先谢过大佬。 1)先创建一个jks格式的证…

【WSL 2】Windows10 安装 WSL 2,并配合 Windows Terminal 和 VSCode 使用

【WSL 2】Windows10 安装 WSL 2,并配合 Windows Terminal 和 VSCode 使用 1 安装 Windows Terminal2 安装 WSL 23 在 Windows 文件资源管理器中打开 WSL 项目4 在 VSCode 中使用 WSL 24.1 必要准备4.2 从 VSCode 中 Connect WSL4.3 从 Linux 中打开 VSCode 1 安装 W…

分布式:一文吃透分布式事务和seata事务

目录 一、事务基础概念二、分布式事务概念什么是分布式事务分布式事务场景CAP定理CAP理论理解CAPCAP的应用 BASE定理强一致性和最终一致性BASE理论 分布式事务分类刚性事务柔性事务 三、分布式事务解决方案方案汇总XA规范方案1:2PC第一阶段:准备阶段第二…

基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类 计算机竞赛

文章目录 1 前言2 情感文本分类2.1 参考论文2.2 输入层2.3 第一层卷积层:2.4 池化层:2.5 全连接softmax层:2.6 训练方案 3 实现3.1 sentence部分3.2 filters部分3.3 featuremaps部分3.4 1max部分3.5 concat1max部分3.6 关键代码 4 实现效果4.…

基于SpringBoot的社区医院管理系统设计与实现

目录 前言 一、技术栈 二、系统功能介绍 管理员功能实现 用户信息管理 病例信息管理 家庭医生管理 药品信息管理 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的…

pgAdmin 4 v7.8 发布,PostgreSQL 开源图形化管理工具

导读pgAdmin 是 PostgreSQL 领先的开源图形化管理工具。pgAdmin 4 旨在满足新手和有经验的 Postgres 用户的需求,提供强大的图形界面,简化了数据库对象的创建、维护和使用。 pgAdmin 开发团队日前发布了 pgAdmin 4 v7.8 版本,这个版本包括 21…

GPT的广泛应用会对互联网公司造成挑战吗?——探讨GPT在实际使用中的应用和影响

文章目录 前言GPT 技术的背景和发展历程GPT 技术对互联网行业的影响GPT 技术在互联网行业中的应用GPT 技术对于用户隐私和数据安全的威胁GPT 技术对于人类工作岗位的影响加强 AI 伦理和监管加强 AI 安全性和隐私保护推动 AI 创新和发展,避免过度依赖 AIGPT 技术是一…

在重生奇迹MU中如何选择最佳的挂机点?

如何寻找最适合自己的挂机地点呢?小编建议玩家朋友从以下几点着手加以抉择。 怪物的等级不能过高 你的最佳挂机点要结合自己的实际情况来定,如果你刷怪比较吃力的话,那么此游戏地图并不适合你挂机,一旦挂机过程中,你…

FIFO基础知识

🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 文章目录 一、FIFO简介1.1 什么是FIFO1.2 FIFO的功能1.3 什么时候使用FIFO1.4 FIFO的分类1.5 FIFO重要参数 …

大厂面试题-JVM为什么使用元空间替换了永久代?

目录 面试解析 问题答案 面试解析 我们都知道Java8以及以后的版本中,JVM运行时数据区的结构都在慢慢调整和优化。但实际上这些变化,对于业务开发的小伙伴来说,没有任何影响。 因此我可以说,99%的人都回答不出这个问题。 但是…

中科驭数受邀亮相两场重要行业盛会,摘得2023“璀璨技术奖”奖项

近日,中科驭数作为DPU算力基础设施领军企业,受邀参与2023信息技术应用创新专题研讨会暨第二届集成电路产业发展创新大会、以及2023AI网络创新大会。在两大行业盛会上,中科驭数与行业知名专家和企业代表齐聚一堂,分享了DPU在集成电…