View Javadoc

1   /**
2    * 
3    */
4   package de.tivsource.page.helper.barcode;
5   
6   import java.awt.Color;
7   import java.awt.Graphics2D;
8   import java.awt.geom.AffineTransform;
9   import java.awt.image.BufferedImage;
10  import java.io.File;
11  import java.io.FileOutputStream;
12  import java.io.IOException;
13  import java.io.OutputStream;
14  
15  import org.krysalis.barcode4j.impl.pdf417.PDF417Bean;
16  import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
17  import org.krysalis.barcode4j.output.bitmap.BitmapEncoder;
18  import org.krysalis.barcode4j.output.bitmap.BitmapEncoderRegistry;
19  import org.krysalis.barcode4j.tools.UnitConv;
20  
21  /**
22   * @author Marc Michele
23   *
24   */
25  public class CreateBarcode {
26  
27  	/**
28  	 * Auflösung in Dots per Inch
29  	 */
30  	private final int dpi = 200;
31  
32  	private final boolean antiAlias = false;
33  	private final int orientation = 0;
34  	
35  	private File file;
36  
37  	private String uuid;
38  
39  	public CreateBarcode(File file, String uuid) throws IOException {
40  		super();
41  		this.file = file;
42  		this.uuid = uuid;
43  		generate();
44  	}
45  
46  	private void generate() throws IOException {
47          // Erstelle PDF417 Barcode
48          PDF417Bean bean = new PDF417Bean();
49  
50          // Setze das Fehlerkorekturlevel  
51          bean.setErrorCorrectionLevel(2);
52  
53          // Nur zwei Spalten mit Inhalt
54          bean.setColumns(2);
55  
56          bean.setModuleWidth(UnitConv.in2mm(10.0f / dpi));
57          bean.doQuietZone(false);
58  
59          BitmapCanvasProvider bitmapCanvasProvider = new BitmapCanvasProvider(
60                  dpi, BufferedImage.TYPE_BYTE_BINARY, antiAlias, orientation);
61  
62          // Erstelle den Barcode
63          bean.generateBarcode(bitmapCanvasProvider, uuid);
64  
65          // Beende die Barcode Generierung
66          bitmapCanvasProvider.finish();
67  
68          // Hole das BufferedImage
69          BufferedImage bufferedImage = bitmapCanvasProvider.getBufferedImage();
70  
71  
72          int width = bufferedImage.getWidth();
73          int height = bufferedImage.getHeight();
74  
75          //Add padding
76          int padding = 2;
77          width += 2 * padding;
78          height += 3 * padding;
79  
80          BufferedImage bitmap = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
81          Graphics2D g2d = (Graphics2D)bitmap.getGraphics();
82          g2d.setBackground(Color.white);
83          g2d.setColor(Color.black);
84          g2d.clearRect(0, 0, bitmap.getWidth(), bitmap.getHeight());
85          
86  
87          //Place the barcode symbol
88          AffineTransform symbolPlacement = new AffineTransform();
89          symbolPlacement.translate(padding, padding);
90          g2d.drawRenderedImage(bufferedImage, symbolPlacement);
91  
92          //Add text lines (or anything else you might want to add)
93  
94          g2d.dispose();
95  
96          //Encode bitmap as file
97          String mime = "image/png";
98          OutputStream out = new FileOutputStream(file);
99          try {
100             final BitmapEncoder encoder = BitmapEncoderRegistry.getInstance(mime);
101             encoder.encode(bitmap, out, mime, dpi);
102         } finally {
103             out.close();
104         }
105         
106 	}// Ende generate()
107 
108 }// Ende class