本文主要是介绍integrate Barcode4J in a Java application,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Barcode4J资源地址: http://barcode4j.sourceforge.net/index.html一、using the JavaBean API
- public static void generateCode128Barcode(File file, String code) {
- Code128Bean bean = new Code128Bean();
- final int dpi = 150;
- //barcode
- bean.setModuleWidth(0.21);
- bean.setHeight(15);
- bean.doQuietZone(true);
- bean.setQuietZone(2);//两边空白区
- //human-readable
- bean.setFontName("Helvetica");
- bean.setFontSize(3);
- bean.setMsgPosition(HumanReadablePlacement.HRP_BOTTOM);
- OutputStream out = null;
- try {
- out = new FileOutputStream(file);
- BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,
- "image/jpeg", dpi, BufferedImage.TYPE_BYTE_BINARY, true, 0);
- bean.generateBarcode(canvas, code);
- canvas.finish();
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (out != null)
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- public static void generateCode39Barcode(int mode, File file, String code) {
- Code39Bean bean = new Code39Bean();
- // Dot Per Inch每英寸所打印的点数或线数,用来表示打印机打印分辨率。
- final int dpi = 150;
- // bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi));
- bean.setModuleWidth(0.2);
- bean.setHeight(15);
- bean.setWideFactor(3);
- bean.doQuietZone(true);
- OutputStream out = null;
- try {
- out = new FileOutputStream(file);
- if (mode == 0) {
- BitmapCanvasProvider canvas = new BitmapCanvasProvider(out,
- "image/jpeg", dpi, BufferedImage.TYPE_BYTE_GRAY, false,
- 0);
- bean.generateBarcode(canvas, code);
- canvas.finish();
- } else {
- BitmapCanvasProvider canvas = new BitmapCanvasProvider(dpi,
- BufferedImage.TYPE_BYTE_GRAY, true, 0);
- bean.generateBarcode(canvas, code);
- canvas.finish();
- BufferedImage barcodeImage = canvas.getBufferedImage();
- ImageIO.write(barcodeImage, "jpg", out);
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (out != null)
- out.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
二、use XML API
1.code39.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <barcode>
- <code39>
- <height>15mm</height>
- <module-width>0.19mm</module-width>
- <wide-factor>2.5</wide-factor>
- <interchar-gap-width>1mw</interchar-gap-width>
- <quiet-zone enabled="true">10mw</quiet-zone>
- <checksum>ignore</checksum>
- <human-readable>
- <placement>bottom</placement>
- <font-name>Helvetica</font-name>
- <font-size>8pt</font-size>
- <display-start-stop>false</display-start-stop>
- <display-checksum>false</display-checksum>
- </human-readable>
- </code39>
- </barcode>
2.java
- /**
- * 不同的类型,其属性定义有所有同,最好是加载xml文件的方式来配置
- */
- public static Configuration buildCfg(String barcode_type) {
- DefaultConfiguration cfg = new DefaultConfiguration("barcode");
- DefaultConfiguration barcodeType = new DefaultConfiguration(barcode_type);
- /** *********属性设置************* */
- addChild(barcodeType,"bar-height",15);
- addChild(barcodeType,"module-width","0.19");
- addChild(barcodeType,"quiet-zone",10);
- addChild(barcodeType,"wide-factor","2.5");
- addChild(barcodeType,"interchar-gap-width",1);
- DefaultConfiguration humanReadable = new DefaultConfiguration("human-readable");
- addChild(humanReadable,"placement","bottom");
- addChild(humanReadable,"font-name","Helvetica");
- addChild(humanReadable,"font-size","3mm");
- barcodeType.addChild(humanReadable);
- cfg.addChild(barcodeType);
- return cfg;
- }
- /**
- * 添加子节点
- * @param parent
- * @param attrName
- * @param attrValue
- */
- public static void addChild(DefaultConfiguration parent,String attrName,Object attrValue){
- DefaultConfiguration attr;
- attr = new DefaultConfiguration(attrName);
- if(attrValue instanceof String) {
- attr.setValue((String)attrValue);
- }else{
- attr.setValue((Integer)attrValue);
- }
- parent.addChild(attr);
- }
- /**
- * 加载xml配置的条形码属性文件
- * @param file
- * @return
- */
- public static Configuration buildCfgFromFile(File file) {
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- Configuration cfg = null;
- try {
- cfg = builder.buildFromFile(file);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return cfg;
- }
- /**
- * 生成条形码
- * @param barcodeType
- * @param code
- * @param file
- */
- public static void generateBarcode(String barcodeType, String code,
- File file) {
- byte[] data;
- ByteArrayOutputStream baos = null;
- BitmapCanvasProvider bitmap = null;
- String FORMAT = MimeTypes.MIME_JPEG;
- int RESOLUTION = 150;
- int ORIENTATION = 0;
- try {
- //加载文件方式
- //Configuration cfg = buildCfgFromFile(getResourceFile(barcodeType.concat(".xml")));
- Configuration cfg = buildCfg(barcodeType);//程序中的配置属性
- BarcodeUtil util = BarcodeUtil.getInstance();
- BarcodeGenerator gen = util.createBarcodeGenerator(cfg);
- baos = new ByteArrayOutputStream();
- bitmap = new BitmapCanvasProvider(baos, FORMAT, RESOLUTION,
- BufferedImage.TYPE_BYTE_GRAY, true, ORIENTATION);
- gen.generateBarcode(bitmap, code);
- bitmap.finish();
- data = baos.toByteArray();
- FileOutputStream out = new FileOutputStream(file);
- out.write(data);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- if (baos != null) {
- baos.close();
- }
- bitmap = null;
- } catch (Exception e) {
- }
- }
- }
- /**
- * 取资源文件
- * @param fileName
- * @return
- */
- public static File getResourceFile(String fileName) {
- String path = ClassLoader.getSystemResource("").getPath().substring(1) + fileName;
- return new File(path);
- }
3.测试
- public static void main(String[] args) {
- String code = "ISN8859-52036";
- generateCode39Barcode(0, new File("d:/barcode/code39_0.jpg"), code);
- generateCode39Barcode(1, new File("d:/barcode/code39_1.jpg"), code);
- generateCode128Barcode(new File("d:/barcode/code128.jpg"), code);
- generateBarcode("code39", code, new File("d:/barcode/code39.jpg"));
- }
这篇关于integrate Barcode4J in a Java application的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!