Subversion Repositories SmartDukaan

Rev

Rev 17411 | Rev 17419 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
17403 manish.sha 1
package in.shop2020.inventory.service;
2
 
3
import in.shop2020.model.v1.catalog.Item;
4
import in.shop2020.thrift.clients.CatalogClient;
5
import in.shop2020.utils.ModelUtils;
6
import java.awt.image.BufferedImage;
7
import java.io.ByteArrayOutputStream;
8
import java.io.File;
9
import java.io.FileOutputStream;
10
import java.io.IOException;
11
import java.io.OutputStream;
12
import org.krysalis.barcode4j.impl.code39.Code39Bean;
13
import org.krysalis.barcode4j.impl.upcean.EAN13Bean;
14
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
15
import org.krysalis.barcode4j.tools.UnitConv;
16
import org.slf4j.Logger;
17
import org.slf4j.LoggerFactory;
18
import com.itextpdf.text.Document;
19
import com.itextpdf.text.Element;
20
import com.itextpdf.text.Image;
21
import com.itextpdf.text.Rectangle;
22
import com.itextpdf.text.pdf.PdfPTable;
23
import com.itextpdf.text.pdf.PdfWriter;
24
 
25
 
26
public class ProductLabelGenerator{
27
	private static Logger logger = LoggerFactory
28
    .getLogger(ProductLabelGenerator.class);
29
 
17416 manish.sha 30
	public static ByteArrayOutputStream generatePdfLabelSheet(String itemId, String itemNumber) throws IOException{
17403 manish.sha 31
		ByteArrayOutputStream baosPDF = null;
32
		try {
33
			CatalogClient cClient = new CatalogClient();
34
	        in.shop2020.model.v1.catalog.CatalogService.Client catalogClient = cClient.getClient();
35
	        Item item = catalogClient.getItem(Long.parseLong(itemId));
36
        	baosPDF = new ByteArrayOutputStream();
37
 
38
            Document document = new Document();
39
            PdfWriter.getInstance(document, baosPDF);
40
            document.addAuthor("shop2020");
41
            document.addTitle("Label for item: "
42
                    + itemId);
43
            document.open();
44
 
45
            PdfPTable poTable = new PdfPTable(3);
46
            poTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
47
            poTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
48
            generateBarcode(ModelUtils.extractProductNameFromItem(item), "item_name_"+itemId, 6.0f);
49
            generateEanBarcode(itemNumber, "item_number"+itemId, 1.0f);
50
 
51
            Image itemNameImage=null;
52
			try {
53
				itemNameImage = Image.getInstance("/tmp/"+"item_name_"+itemId+".png");
54
			} catch (Exception e) {
55
				logger.error("Exception during getting Iten Name Image : ", e);
56
			}
57
 
58
			Image itemNumberImage=null;
59
			try {
60
				itemNumberImage = Image.getInstance("/tmp/"+"item_number"+itemId+".jpg");
61
			} catch (Exception e) {
62
				logger.error("Exception during getting Iten Name Image : ", e);
63
			}
64
 
65
			for(int i=1;i<8;i++){
66
				for(int j=1; j<=5; j++){
67
					if(j%2==0){
68
						poTable.addCell(" ");
69
					}else{
70
						PdfPTable poSubTable = new PdfPTable(1);
71
						poSubTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
72
						poSubTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
73
						poSubTable.setSpacingAfter(2.0f);
74
 
75
						poSubTable.addCell(itemNameImage);
76
 
77
						poSubTable.addCell(itemNumberImage);
78
 
79
						poTable.addCell(poSubTable);
80
					}
81
				}
82
				poTable.addCell("-------------------------");
83
				poTable.addCell(" ");
84
				poTable.addCell("-------------------------");
85
				poTable.addCell(" ");
86
				poTable.addCell("-------------------------");
87
			}
88
 
89
            document.add(poTable);
90
            document.close();
91
            baosPDF.close();
92
        } catch (Exception e) {
93
            logger.error("Error while generating Invoice: ", e);
94
            e.printStackTrace();
95
        }
96
 
17416 manish.sha 97
        return baosPDF;
17403 manish.sha 98
	}
99
	/*
100
	public static void main(String[] args) throws IOException{
101
		ByteArrayOutputStream baosPDF = null;
102
		long itemId = 18267L;
103
        try {
104
        	baosPDF = new ByteArrayOutputStream();
105
 
106
            Document document = new Document();
107
            PdfWriter.getInstance(document, baosPDF);
108
            document.addAuthor("shop2020");
109
            document.addTitle("Label for item: "
110
                    + itemId);
111
            document.open();
112
 
113
            PdfPTable poTable = new PdfPTable(new float[] { 0.3f, 0.05f, 0.3f, 0.05f, 0.3f});
114
            poTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
115
            poTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
116
            generateBarcode("Spice Mi -3330 Champ 1800 black", "item_name_"+itemId, 6.0f);
117
            generateEanBarcode("8906050994080", "item_number"+itemId, 1.0f);
118
 
119
            Image itemNameImage=null;
120
			try {
121
				itemNameImage = Image.getInstance("/tmp/"+"item_name_"+itemId+".png");
122
			} catch (Exception e) {
123
				logger.error("Exception during getting Iten Name Image : ", e);
124
			}
125
 
126
			Image itemNumberImage=null;
127
			try {
128
				itemNumberImage = Image.getInstance("/tmp/"+"item_number"+itemId+".jpg");
129
			} catch (Exception e) {
130
				logger.error("Exception during getting Iten Name Image : ", e);
131
			}
132
 
133
			for(int i=1;i<8;i++){
134
				for(int j=1; j<=5; j++){
135
					if(j%2==0){
136
						poTable.addCell(" ");
137
					}else{
138
						PdfPTable poSubTable = new PdfPTable(1);
139
						poSubTable.getDefaultCell().setBorder(Rectangle.NO_BORDER);
140
						poSubTable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);
141
						poSubTable.setSpacingAfter(2.0f);
142
 
143
						poSubTable.addCell(itemNameImage);
144
 
145
						poSubTable.addCell(itemNumberImage);
146
 
147
						poTable.addCell(poSubTable);
148
					}
149
				}
150
				poTable.addCell("-------------------------");
151
				poTable.addCell(" ");
152
				poTable.addCell("-------------------------");
153
				poTable.addCell(" ");
154
				poTable.addCell("-------------------------");
155
			}
156
 
157
            document.add(poTable);
158
            document.close();
159
            baosPDF.close();
160
        } catch (Exception e) {
161
            logger.error("Error while generating Invoice: ", e);
162
            e.printStackTrace();
163
        }
164
 
165
        String tmpDir = System.getProperty("java.io.tmpdir");
166
        String filename = tmpDir + "/item-" + itemId +"-" +System.currentTimeMillis() + ".pdf";
167
        File f = new File(filename);
168
        FileOutputStream fos = new FileOutputStream(f);
169
        baosPDF.writeTo(fos);
170
 
171
	}*/
172
 
173
	public static void generateBarcode(String barcodeString, String fileName, double fontSize){
174
		Code39Bean bean = new Code39Bean();
175
 
176
		final int dpi = 70;
177
 
178
		//Configure the barcode generator
179
		bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); //makes the narrow bar 
180
		                                                 //width exactly one pixel
181
		bean.setFontSize(bean.getFontSize()+fontSize);
182
		bean.doQuietZone(false);
183
 
184
		try {
185
			File outputFile = new File("/tmp/"+fileName+".png");
186
			OutputStream out = new FileOutputStream(outputFile);
187
 
188
		    //Set up the canvas provider for monochrome PNG output 
189
		    BitmapCanvasProvider canvas = new BitmapCanvasProvider(
190
		            out, "image/x-png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
191
 
192
		    //Generate the barcode
193
		    bean.generateBarcode(canvas, barcodeString);
194
 
195
		    //Signal end of generation
196
		    canvas.finish();
197
		    out.close();
198
 
199
		} 
200
		catch(Exception e){
201
			logger.error("Exception during generating Barcode : ", e);
202
		}
203
	}
204
 
205
	public static void generateEanBarcode(String barcodeString, String fileName, double fontSize){		
206
 
207
 
208
			EAN13Bean bean = new EAN13Bean(); // EAN-13 barcode
209
 
210
			final int dpi = 140; // dots per inch
211
 
212
			bean.setModuleWidth(UnitConv.in2mm(1.0f / (dpi/2) )); // one bar (module) width
213
			bean.setHeight(20); // barcode height
214
			bean.doQuietZone(true); // white padding
215
 
216
 
217
 
218
			try {
219
				File outputFile = new File("/tmp/"+fileName+".jpg"); // output file
220
				OutputStream out = new FileOutputStream(outputFile); // output stream
221
				// bitmap canvas for the barcode
222
				BitmapCanvasProvider canvas = new BitmapCanvasProvider( out, "image/jpeg", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);
223
 
224
				// barcode generator method
225
				bean.generateBarcode(canvas, barcodeString);
226
 
227
				// end of barcode generation
228
				canvas.finish();
229
				out.close();
230
			} catch(Exception e){
231
				logger.error("Exception during generating Barcode : ", e);
232
			}
233
 
234
	}
235
}