您的位置:首页 > 编程语言 > Java开发

Java笔记之 开发二维码

2014-12-09 16:08 169 查看
1.环境:eclipse+jdk1.7+tomcat6.0

2.jar:使用谷歌的baCodejar(可以自己下载)

3.开发详细代码如下:

   实现的代码:

 

/**

 *

 */

package com.wisco.ty.comm;

import java.io.File;

import java.util.Iterator;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

import org.m6.base.BaseBO;

import org.m6.exception.AppException;

import org.springframework.stereotype.Component;

import com.google.zxing.BarcodeFormat;

import com.google.zxing.EncodeHintType;

import com.google.zxing.MultiFormatWriter;

import com.google.zxing.client.j2se.MatrixToImageWriter;

import com.google.zxing.common.BitMatrix;

import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

import com.wisco.framework.utils.AppUtils;

/**

 * 二维码生成

 * @file TyjcComm05BO.java

 * @author 姓名</a>

 * @date 2014-11-19下午1:55:47

 * @version 1.0

 */

@Component("tyjcComm05BO")

public class TyjcComm05BO extends BaseBO {

 public final static String CLASS_VERSION = "$Id: TyjcComm05.java,v 1.0 2014-10-20,下午02:03:14  $";

 /**生成二维码

  * @param infoMap

  * @return

  */

 public File getTdCode(Map<String, Object> infoMap){

  

  String str = getInfoMapToString(infoMap);

  String timestamp = "" + System.currentTimeMillis();

  

  String path = AppUtils.getErpPropertyValueByKey("ERP_HOME","")+"/public/barCode";

  //String path = "public/barCode";

  createDir(path);

  String fileName = timestamp + ".png";

  path += "/" + fileName;

  File outputFile = new File(path.toString());

  

  Map<EncodeHintType, Object> hints = new TreeMap<EncodeHintType, Object>();

  // 指定纠错等级

  hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);

  // 指定编码格式

  hints.put(EncodeHintType.CHARACTER_SET, "GBK");

  // 设置边框 0 条码周围不留空白边框

  hints.put(EncodeHintType.MARGIN, 0);

  try {

   BitMatrix bitMatrix = new MultiFormatWriter().encode(str,

     BarcodeFormat.QR_CODE, 100, 100, hints);//QR_CODE   DATA_MATRIX

   MatrixToImageWriter.writeToFile(bitMatrix, "png", outputFile);

  } catch (Exception e) {

   throw new AppException("生成二维码失败!");

  }

  return outputFile;

 }

 

 /**解析infoMap,将map的key与value连接,格式如 key1:value1 | key2:value2。

  * @param infoMap

  * @return

  */

 public String getInfoMapToString(Map<String, Object> infoMap){

  String str = "";

  Set<String> keySet = infoMap.keySet();

  for(Iterator<String> it=keySet.iterator();it.hasNext();){

   String key = it.next();

   str += key + ":";

   String value = (String)infoMap.get(key);

   str += value + "|";

  }

  str = str.substring(0,str.length()-1);

  return str;

 }

 

 /**

  * 创建二维码的输出目录

  * */

 private void createDir(String path) {

  File dir = new File(path);

  if (!dir.exists()) {

   if (!dir.mkdirs()) {

    throw new AppException("tyjcComm05BO.createDir(" + path

      + "),创建目录失败...");

   }

  }

 }

 

}

在birt中调用相应的方法,把二维码打印出来,因为birt不方便把代码copy,所以附上照

 1.添加一个image的控件,设置属性值中的Event Handle为生产二维码文件的路径



 2.设置属性之中的binding为具体业务的方法,绑定二维码扫描结果的值



 2.实际打印出来的二维码



 

  

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: