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.实际打印出来的二维码
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.实际打印出来的二维码
相关文章推荐
- 二维码Java开发(笔记)
- Java软件开发学习笔记(四)
- Java软件开发学习笔记(三)
- 深入体验Java Web开发内幕-核心基础(看张孝祥的书的笔记一)
- 开发笔记:创建Java线程的两种方法
- 很不错的JAVA学习笔记-Java基础-Java-编程开发
- Java软件开发学习笔记(一)
- Java Web开发学习笔记之二
- Java开发学习笔记之十一:开始JSP之旅
- Java开发学习笔记之十:servlet事件
- java swing开发学习笔记(1)
- Java软件开发学习笔记(一)
- Java开发学习笔记之三:HTTP客户请求数据格式
- Java开发学习笔记之一:JavaEE分层及客户层技术
- Java开发学习笔记之十二:JSP语法
- Log4j在Java Web开发中的使用笔记
- Java开发学习笔记之二:一个简单的Servlet
- Java开发学习笔记之五:Servlet编程API
- Tomcat 与java web 开发技术详解笔记(二)----Servlet
- Java笔记(2)开发人员必备的案头网站