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
23
24
25 public class CreateBarcode {
26
27
28
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
48 PDF417Bean bean = new PDF417Bean();
49
50
51 bean.setErrorCorrectionLevel(2);
52
53
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
63 bean.generateBarcode(bitmapCanvasProvider, uuid);
64
65
66 bitmapCanvasProvider.finish();
67
68
69 BufferedImage bufferedImage = bitmapCanvasProvider.getBufferedImage();
70
71
72 int width = bufferedImage.getWidth();
73 int height = bufferedImage.getHeight();
74
75
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
88 AffineTransform symbolPlacement = new AffineTransform();
89 symbolPlacement.translate(padding, padding);
90 g2d.drawRenderedImage(bufferedImage, symbolPlacement);
91
92
93
94 g2d.dispose();
95
96
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 }
107
108 }