Java生成二维码并打印二维码和文字信息

 

目录

1、生成二维码,并调用画布进行二维码和文字的描绘。

2、主程序:获取打印机,并打印内容

3、打印效果

参考文献:


    前期工作是安装好打印机驱动,可连接打印机。

    添加三个依赖jar:

具体见文底的参考文献。

1、生成二维码,并调用画布进行二维码和文字的描绘。

package print;import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.util.HashMap;
import java.util.Map;import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;/*** 此类,用于构建打印内容。* @author Administrator**/
public class LabelPrintable implements Printable {private String serNo = "643566786420230921054158";private String f1="45.5";private String f2="46.5";@Overridepublic int print(Graphics graphics, PageFormat pageFormat, int pageIndex) throws PrinterException {if (pageIndex > 0) {return NO_SUCH_PAGE;}Graphics2D g2d = (Graphics2D) graphics;g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());// 绘制二维码BufferedImage img = createImage(serNo);// 将二维码绘制到打印机g2d.drawImage(img, 0, 0, 35, 35, null);// 设置字体大小Font font = new Font("Arial", Font.PLAIN, 7);g2d.setFont(font);// 将文字绘制到打印机g2d.drawString(serNo.substring(0, serNo.length()-14), 40, 7);g2d.drawString(serNo.substring(serNo.length()-14), 40, 16);g2d.drawString("FMAX1:"+f1, 40, 25);g2d.drawString("FMAX5:"+f2, 40, 34);g2d.dispose();return PAGE_EXISTS;}/*** 生成二维码* @param serNo* @return*/private BufferedImage createImage(String serNo) {//图片宽度、高度,二维码和边框的边距//二维码的容错等级Map<EncodeHintType,Object> map = new HashMap<EncodeHintType,Object>();map.put(EncodeHintType.MAX_SIZE, 100);//设置编剧(二维码与图片编剧边框的距离)枚举map.put(EncodeHintType.MARGIN,2);//设置容错的等级 有四级  L(7%) M(15%) Q(25%)  H(30%)map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//设置字符集,避免中文乱码的情况map.put(EncodeHintType.CHARACTER_SET,"utf-8");//二维码的输出流 IO流MultiFormatWriter mfw = new MultiFormatWriter();try{//通过流创建一个二维矩阵643566786420230921054158BitMatrix bm = mfw.encode(serNo, BarcodeFormat.QR_CODE,400,400,map);//声明一张图片来回值二维码BufferedImage img = new BufferedImage(400,400,BufferedImage.TYPE_INT_BGR);//将二维码的矩阵回值到图片上//重复的做某件事就使用循环结构for (int i = 0; i < 400; i++) {for (int j = 0; j < 400; j++) {//声明一个颜色int rgb = 0;//画矩阵图rgb = bm.get(i,j) ? Color.BLACK.getRGB() : Color.WHITE.getRGB();//将内容绘制到图片中img.setRGB(i,j,rgb);}}//指定二维码的存储路径
//            ImageIO.write(img,"jpg",new File("D:/简书主页.jpg"));System.out.println("二维码生成完成");return img;
//        }catch(WriterException | IOException e){}catch(WriterException e){e.printStackTrace();}return null;}}

画布的核心代码是:

Graphics2D g2d = (Graphics2D) graphics;g2d.translate(pageFormat.getImageableX(), pageFormat.getImageableY());// 绘制二维码BufferedImage img = createImage(serNo);// 将二维码绘制到打印机g2d.drawImage(img, 0, 0, 35, 35, null);// 设置字体大小Font font = new Font("Arial", Font.PLAIN, 7);g2d.setFont(font);// 将文字绘制到打印机g2d.drawString(serNo.substring(0, serNo.length()-14), 40, 7);g2d.drawString(serNo.substring(serNo.length()-14), 40, 16);g2d.drawString("FMAX1:"+f1, 40, 25);g2d.drawString("FMAX5:"+f2, 40, 34);g2d.dispose();
g2d.drawImage(img, 0, 0, 35, 35, null);

 以上是将二维码绘制到坐标0.0,图像宽度35、高度35

        // 将文字绘制到打印机g2d.drawString(serNo.substring(0, serNo.length()-14), 40, 7);g2d.drawString(serNo.substring(serNo.length()-14), 40, 16);g2d.drawString("FMAX1:"+f1, 40, 25);g2d.drawString("FMAX5:"+f2, 40, 34);

以上是将四行文字绘制到画布里x坐标40。

以上坐标根据具体情况和打印机进行调整。

2、主程序:获取打印机,并打印内容

package print;import java.awt.print.Printable;
import java.awt.print.PrinterJob;import javax.print.PrintService;
import javax.print.PrintServiceLookup;public class MainPrint {public static void main(String[] args) {try {// 连接到标签打印机PrintService printService = getLabelPrinter();// 创建打印任务PrinterJob printerJob = PrinterJob.getPrinterJob();printerJob.setPrintService(printService);// 设置打印内容Printable printable = new LabelPrintable();printerJob.setPrintable(printable);// 发送打印任务printerJob.print();} catch (Exception e) {e.printStackTrace();}}/*** 查找打印机* @return*/private static PrintService getLabelPrinter() {PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, null);for (PrintService printService : printServices) {System.out.println(printService.getName());// 查找标签打印机Label PPLBif (printService.getName().contains("Label")) {return printService;}}return null;}}

3、打印效果

参考文献:

1、

小项目教学——用Java生成二维码_程序员小橙的博客-CSDN博客

2、

java调用标签打印机_mob649e81630984的技术博客_51CTO博客

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

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

相关文章

k8s 多网卡方案multus

kubernetes 多网卡方案之 Multus_CNI 部署以及基本使用 一、multus cni 出现的背景 在k8s的环境中启动一个容器&#xff0c;默认情况下只存在两个虚拟网络接口&#xff08;loopback 和 eth0&#xff09;&#xff0c; loopback 的流量始终都会在本容器内或本机循环&#xff0c…

有谁知道怎么下载微信视频号视频吗?

抖音视频下载、某站视频下载都很常见&#xff0c;那你知道怎么下载V信视频号视频吗/今天给大家分享两种简单方便的办法&#xff0c;继续往下看吧&#xff01;一、犀牛视频下载机器人犀牛视频下载器可以直接解析并下载视频号短视频。您只需转发视频到机器人即可下载。此方法也是…

掌握口才与演讲技巧,让你职场中脱颖而出

在职场竞争日趋激烈的今天&#xff0c;口才和演讲能力已经成为一个人成功的重要标志之一。掌握了优秀的口才与演讲技巧&#xff0c;不仅可以帮助你在工作中更好地表达自己和传达信息&#xff0c;同时也可以让你在同事和上级心中留下深刻印象&#xff0c;从而在职场中脱颖而出&a…

费用预算管理系统

费用预算管理系统 1. 模块概述 《费用管理》以企业费用管理为核心&#xff0c;围绕费用支出审批流程&#xff0c;从费用发生前的事前申请&#xff0c;报销单据审批、付款单据审批&#xff0c;再到出纳付款、会计记账等所有工作流程都在系统中全员、协同完成&#xff1b;并且能…

PaDiM 无监督异常检测和定位-论文和源码阅读

目录 1. 论文 1.1 检测效果 1.2 框架 1.2.1 特征提取embedding extraction 1.2.2 正样本学习Learning of the normality 1.2.3 计算异常图 inference: computation of the anomaly map 2. 源码 2.1 dataset 2.2 model 2.3 提取特征 2.4 infer 1. 论文 https://arx…

图扑 HT for Web 手机端运维管理系统

随着信息技术的快速发展&#xff0c;网络技术的应用涉及到人们生活的方方面面。其中&#xff0c;手机运维管理系统可提供数字化、智能化的方式&#xff0c;帮助企业和组织管理监控企业的 IT 环境&#xff0c;提高运维效率、降低维护成本、增强安全性、提升服务质量&#xff0c;…

分享一下微信小程序里怎么开店

如何在微信小程序中成功开店&#xff1a;从选品到运营的全方位指南 一、引言 随着微信小程序的日益普及&#xff0c;越来越多的人开始尝试在微信小程序中开设自己的店铺。微信小程序具有便捷、易用、即用即走等特点&#xff0c;使得开店门槛大大降低。本文将详细介绍如何在微…

【计算系统】5分钟了解超算,高性能计算,并行计算,分布式计算,网格计算,集群计算以及云计算的区别

5分钟了解超算&#xff0c;高性能计算&#xff0c;并行计算&#xff0c;分布式计算&#xff0c;网格计算&#xff0c;集群计算以及云计算的区别 1. 超算2. 高性能计算3. 并行计算4. 分布式计算5. 网格计算6. 集群计算7. 云计算小结相关资料 1. 超算 超级计算机&#xff08;Sup…

分享88个工作总结PPT,总有一款适合您

分享88个工作总结PPT&#xff0c;总有一款适合您 88个工作总结PPT下载链接&#xff1a;https://pan.baidu.com/s/1y08X9RMdIOCncbs28aMgDw?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 蓝色水彩风年终总结PPT模板 清新水彩简…

深度学习之基于YoloV5火灾烟雾报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、火灾烟雾报警系统四. 总结 一项目简介 YoloV5 是深度学习中用于目标检测的一种算法&#xff0c;可以对输入的图像进行识别&#xff0c;标识出…

windows server 2016-IIS静态服务器-设置详细过程

文章目录 1.打开仪表盘新建角色2.iis功能模块3.启动服务器4.优点 1.打开仪表盘新建角色 2.iis功能模块 能选上的尽量选上&#xff0c;除非知道自己用不上。 然后确认&#xff0c;下一步&#xff0c;安装。 3.启动服务器 搜索IIS&#xff0c;启动IIS管理器。 启动网站。 右…

HHDBCS扩展数据库类型

为应对市面上的数据库种类繁多的问题&#xff0c;HHDBCS设置了扩展数据库功能。 在登陆界面点击“工具”&#xff0c;选择“扩展数据库类型”&#xff1b; 注&#xff1a;HHDBCS支持已kingbase&#xff0c;本文仅用来举例。 填入名称、所需数据库的信息&#xff0c;上传驱动…

【tensorboard打开失败】No dashboards are active for the current data set.

这里我再跟视频学的时候&#xff0c;找了很多的指令&#xff0c;说是对应版本不一样&#xff0c;但是发现用了很多指令都可以弹出来跳转的url&#xff0c;那应该就不是输入指令的问题 直到我想把logs里面的文件删掉重新跑的时候&#xff0c;我突然注意到这里有中文字符&#xf…

Android Icon 添加水印 Python脚本

源代码 # -*- coding: utf-8 -*- from PIL import Image 图片合成def mergePictureLXJ():commonIcon Image.open("icon.png")markIcon Image.open("领现金.png")markLayer Image.new(RGBA, commonIcon.size, (0, 0, 0, 0))markLayer.paste(markIcon, (0…

StoneDB-8.0-V2.1.0 企业版正式发布!免费公测中!

很高兴告诉大家&#xff0c;我们StoneDB-8.0-V2.1.0企业版正式发布了&#xff01;经过一个月的开发&#xff0c;我们的研发团队用极高的效率对2.0新架构版本查漏补缺&#xff0c;完善了最新架构的代码&#xff0c;并对性能、稳定性做出了优化&#xff0c;同时也修复了一些用户们…

C语言到底算高级程序语言还是低级程序语言?

C语言到底算高级程序语言还是低级程序语言&#xff1f; 高级语言 这里的高级都是相对于汇编语言来说的&#xff0c;是指脱离了计算机的硬件系统&#xff0c;可以按照人的思维逻辑进 行编程的语言 低级语言-般都依赖硬件, 基本换个硬件就得重写&#xff0c;很多人说C语言是低…

pytorch笔记 GRUCELL

1 介绍 GRU的一个单元 2 基本使用方法 torch.nn.GRUCell(input_size, hidden_size, biasTrue, deviceNone, dtypeNone) 输入&#xff1a;&#xff08;batch&#xff0c;input_size&#xff09; 输出和隐藏层&#xff1a;&#xff08;batch&#xff0c;hidden_size&#xf…

基于深度学习的人脸专注度检测计算系统 - opencv python cnn 计算机竞赛

文章目录 1 前言2 相关技术2.1CNN简介2.2 人脸识别算法2.3专注检测原理2.4 OpenCV 3 功能介绍3.1人脸录入功能3.2 人脸识别3.3 人脸专注度检测3.4 识别记录 4 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于深度学习的人脸专注度…

怎样去除视频中的杂音,保留人声部分?

怎样去除视频中的杂音&#xff0c;保留人声部分&#xff1f;这个简单嘛&#xff01;两种办法可以搞定&#xff1a;一是进行音频降噪&#xff0c;把无用的杂音消除掉&#xff1b;二是提取人声&#xff0c;将要保留的人声片段提取出来。 这就将两种实用的办公都分享出来&#xf…

HashMap源码分析——Java全栈知识(8)

jdk1.7和jdk1.8的HashMap的原理有一点出入我们就分开讲解&#xff1a; 1、JDK1.7中的HashMap JDK1.7中的HashMap是通过数组加链表的方式存储数据。他的底层维护了一个Entry数组&#xff0c;通过哈希函数的计算出来哈希值&#xff0c;将待填数据根据计算出来的哈希值填入到对应…