二维码生成与打印

本文介绍了如何实现二维码的生成和打印。使用佳博GP-2120TF热敏打印机,配合ORCode.jar包,根据用户选择的记录生成二维码图片,并存储到特定文件夹。在打印时,检查图片是否存在,如果存在则直接打印,否则生成后再进行打印。详细步骤包括控制器中的方法实现,以及利用反射获取数据并填充打印模板,最后调整纸张尺寸进行精确打印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近有个需求,做二维码的生成和打印。生成二维码:二维码存储了主键,图片存储到特定文件夹中。打印时,如果已存在图片,则直接打印,不存在则生成后打印。

1.材料:热敏打印机:我用的牌子是佳博GP-2120TF的打印机,安装好驱动后,连接上电脑。纸张使用时高2厘米,宽4厘米的纸。

2.所用到的包:ORCode.jar

生成二维码:思路:前台根据用户勾选的记录,传递id到后台,后台拿到id后,将图片命名,和二维码存储内容都为该id,然后生成二维码,保存二维码文件,将路径写进数据库:核心代码

/**
	 * 生成二维码(QRCode)图片的公共方法
	 * @param content 存储内容
	 * @param imgType 图片类型
	 * @param size 二维码尺寸
	 * @return
	 */
	private static BufferedImage qRCodeCommon(String content, String imgType, int size) {
		BufferedImage bufImg = null;
		size = 2;
		try {
			Qrcode qrcodeHandler = new Qrcode();
			// 设置二维码排错率,可选L(7%)、M(15%)、Q(25%)、H(30%),排错率越高可存储的信息越少,但对二维码清晰度的要求越小
			qrcodeHandler.setQrcodeErrorCorrect('L');
			qrcodeHandler.setQrcodeEncodeMode('A');
			// 设置设置二维码尺寸,取值范围1-40,值越大尺寸越大,可存储的信息越大
			qrcodeHandler.setQrcodeVersion(size);
			// 获得内容的字节数组,设置编码格式
			byte[] contentBytes = content.getBytes("utf-8");
			int imgSize =60;
			bufImg = new BufferedImage(imgSize, imgSize, BufferedImage.TYPE_INT_RGB);
			Graphics2D gs = bufImg.createGraphics();
			// 设置背景颜色
			gs.setBackground(Color.WHITE);
			gs.clearRect(0, 0, imgSize, imgSize);

			// 设定图像颜色> BLACK
			gs.setColor(Color.BLACK);
			// 设置偏移量,不设置可能导致解析出错
			int pixoff = 2;
			// 输出内容> 二维码
			if (contentBytes.length > 0 && contentBytes.length < 200) {

				boolean[][] codeOut = qrcodeHandler.calQrcode(contentBytes);
				for (int i = 0; i < codeOut.length; i++) {
					for (int j = 0; j < codeOut.length; j++) {
						if (codeOut[j][i]) {
							gs.fillRect(j * 2 + pixoff, i * 2 + pixoff, 2, 2);
						}
					}
				}
			} else {
				throw new Exception("QRCode content bytes length = " + contentBytes.length + " not in [0, 800].");
			}
			gs.dispose();
			bufImg.flush();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return bufImg;
	}
写入指定文件中:

	/**
	 * 生成二维码(QRCode)图片
	 * @param content 存储内容
	 * @param imgPath 图片路径
	 * @param imgType 图片类型
	 * @param size 二维码尺寸
	 */
	public static void encoderQRCode(String content, String imgPath, String imgType, int size) {
		try {
			BufferedImage bufImg = qRCodeCommon(content, imgType, size);


			File imgFile = new File(imgPath);
			// 生成二维码QRCode图片
			ImageIO.write(bufImg, imgType, imgFile);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

controller下的方法:

/*生成二维码:存放着resourceid*/
		@RequestMapping("/buildOrCode.do")  
		public void buildOrCode(HttpServletRequest request,HttpServletResponse response) throws IOException{
			Map<String, String> map = new HashMap<String, String>();
			String ids[]=request.getParameter("ids").split(",");
			String state = "success"; 
			try {
			for(int i=0;i<ids.length;i++)
			{
			
			String encoderImgId =ids[i]; // encoderImgId此处二维码的图片名
			String encoder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值