i am trying to print barcode using servlet but the print is not in proper size. i want to print label with specific with and height. if i am print this barcode using 3rd party application it's printing correct but if i use my code print become twice in size use more then one label.
package com.service;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import javax.imageio.ImageIO;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.krysalis.barcode4j.impl.int2of5.Interleaved2Of5Bean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;
/**
*
* @author akash
*/
public class Barcode extends HttpServlet {
private String filePath = "/home/chimeralabs/public_html/uploads/";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
String id = request.getParameter("patientId");
Interleaved2Of5Bean bean = new Interleaved2Of5Bean();
bean.setHeight(10d);
bean.doQuietZone(false);
OutputStream out = new java.io.FileOutputStream(new File("Barcode_"+id+".png"));
BitmapCanvasProvider provider =
new BitmapCanvasProvider(out, "image/x-png", 510,
BufferedImage.TYPE_BYTE_GRAY, false,
0);
bean.generateBarcode(provider, id);
provider.finish();
BufferedImage barcodeImage = provider.getBufferedImage();
response.setContentType("image/x-png");
OutputStream outputStream = response.getOutputStream();
ImageIO.write(barcodeImage, "png", outputStream);
outputStream.close();
request.setAttribute("patientId", id);
RequestDispatcher rd = request.getRequestDispatcher("Print");
rd.forward(request, response);
}
}
import java.io.FileInputStream;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintException;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.standard.Copies;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Print extends HttpServlet {
private String filePath = "/home/chimeralabs/public_html/uploads/";
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
pras.add(new Copies(1));
String id = (String)request.getAttribute("patientId");
PrintService pss[] = PrintServiceLookup.lookupPrintServices(DocFlavor.INPUT_STREAM.GIF, pras);
PrintService ps = pss[0];
System.out.println("Printing to " + ps);
DocPrintJob job = ps.createPrintJob();
FileInputStream fin = new FileInputStream("Barcode_1082.png");
Doc doc = new SimpleDoc(fin, DocFlavor.INPUT_STREAM.GIF, null);
try {
job.print(doc, pras);
} catch (PrintException ex) {
Logger.getLogger(Print.class.getName()).log(Level.SEVERE, null, ex);
}
fin.close();
}
}