📄 barcodeservlet.java
字号:
package com.idautomation.barcode;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.awt.Graphics2D.*;
import java.awt.*;
import com.idautomation.barcode.encoder.GifEncoder;
import com.idautomation.barcode.linear.BarCode;
public class BarCodeServlet
extends HttpServlet {
/**
* Handle the HTTP POST method by sending an e-mail
*/
private boolean debug = false;
public void init() throws ServletException {}
// MODIFY THIS METHOD TO RETRIEVE DATA TO ENCODE, CREATE THE BARCODE AND SET THE PARAMETERS
private BarCode getChart(HttpServletRequest request) {
BarCode cb = new BarCode();
if (request != null) {
// Remark these parameters out if you do not need them. We also recommend fixing parameters so they
// do not need to be defined in the barcode IMG string. For example, instead of
// if (request.getParameter("BAR_HEIGHT")!=null) cb.barHeightCM=new Double(request.getParameter("BAR_HEIGHT")).doubleValue();
// use
// cb.barHeightCM=2;
// if you always use a bar height of 2.
String st = null;
if (request.getParameter("CODE_TYPE") != null) {
st = (request.getParameter("CODE_TYPE"));
if (st.compareTo("CODE39") == 0) {
cb.barType = 0;
}
if (st.compareTo("CODE39EXT") == 0) {
cb.barType = 1;
}
if (st.compareTo("INTERLEAVED25") == 0) {
cb.barType = 2;
}
if (st.compareTo("CODE11") == 0) {
cb.barType = 3;
}
if (st.compareTo("CODABAR") == 0) {
cb.barType = 4;
}
if (st.compareTo("MSI") == 0) {
cb.barType = 5;
}
if (st.compareTo("UPCA") == 0) {
cb.barType = 6;
}
if (st.compareTo("IND25") == 0) {
cb.barType = 7;
}
if (st.compareTo("MAT25") == 0) {
cb.barType = 8;
}
if (st.compareTo("CODE93") == 0) {
cb.barType = 9;
}
if (st.compareTo("EAN13") == 0) {
cb.barType = 10;
}
if (st.compareTo("EAN8") == 0) {
cb.barType = 11;
}
if (st.compareTo("UPCE") == 0) {
cb.barType = 12;
}
if (st.compareTo("CODE128") == 0) {
cb.barType = 13;
}
if (st.compareTo("CODE93EXT") == 0) {
cb.barType = 14;
}
if (st.compareTo("POSTNET") == 0) {
cb.barType = 15;
}
if (st.compareTo("PLANET") == 0) {
cb.barType = 16;
}
if (st.compareTo("UCC128") == 0) {
cb.barType = 17;
}
}
if (request.getParameter("ROTATE") != null) {
cb.rotate = new Integer(request.getParameter("ROTATE")).intValue();
}
if (request.getParameter("BAR_HEIGHT") != null) {
cb.barHeightCM = new Double(request.getParameter("BAR_HEIGHT")).
doubleValue();
}
if (request.getParameter("X") != null) {
cb.X = new Double(request.getParameter("X")).doubleValue();
}
if (request.getParameter("N") != null) {
cb.N = new Double(request.getParameter("N")).doubleValue();
}
if (request.getParameter("LEFT_MARGIN") != null) {
cb.leftMarginCM = new Double(request.getParameter("LEFT_MARGIN")).
doubleValue();
}
if (request.getParameter("TOP_MARGIN") != null) {
cb.topMarginCM = new Double(request.getParameter("TOP_MARGIN")).
doubleValue();
}
if (request.getParameter("CHECK_CHAR") != null) {
cb.checkCharacter = (request.getParameter("CHECK_CHAR").compareTo("Y") ==
0);
}
if (request.getParameter("CHECK_CHARINTEXT") != null) {
cb.checkCharacterInText = (request.getParameter("CHECK_CHARINTEXT").
compareTo("Y") == 0);
}
if (request.getParameter("ST") != null) {
cb.showText = (request.getParameter("ST").compareTo("Y") == 0);
}
if (request.getParameter("CODE128_SET") != null) {
cb.Code128Set = request.getParameter("CODE128_SET").charAt(0);
}
if (request.getParameter("UPCE_SYSTEM") != null) {
cb.UPCESytem = request.getParameter("UPCE_SYSTEM").charAt(0);
}
if (request.getParameter("TEXT_FONT") != null) {
cb.textFont = convertFont(request.getParameter("TEXT_FONT"));
}
if (request.getParameter("FONT_COLOR") != null) {
cb.fontColor = convertColor(request.getParameter("FONT_COLOR"));
}
if (request.getParameter("BAR_COLOR") != null) {
cb.barColor = convertColor(request.getParameter("BAR_COLOR"));
}
if (request.getParameter("BACK_COLOR") != null) {
cb.backColor = convertColor(request.getParameter("BACK_COLOR"));
}
if (request.getParameter("BARCODE") != null) {
cb.code = request.getParameter("BARCODE");
} else {
cb.code = "000000000000";
}
} else {
cb.code = "No Data";
}
return cb;
}
public java.awt.Font convertFont(String f) {
String[] items = convertList(f);
if (items == null) {
return null;
}
if (items.length < 3) {
return null;
}
int s = java.awt.Font.PLAIN;
if (items[1].compareTo("BOLD") == 0) {
s = java.awt.Font.BOLD;
}
if (items[1].compareTo("ITALIC") == 0) {
s = java.awt.Font.ITALIC;
}
try {
return new java.awt.Font(items[0], s, new Integer(items[2]).intValue());
} catch (Exception e) {
return null;
}
}
private String[] convertList(String items) {
String[] itema = new String[500];
int itemCount = 0;
// count number of items
int p = items.indexOf("|");
while (p >= 0) {
itema[itemCount++] = items.substring(0, p);
items = items.substring(p + 1, items.length());
p = items.indexOf("|");
}
if (items.compareTo("") != 0) {
itema[itemCount++] = items;
}
if (itemCount == 0) {
return null;
}
String[] result = new String[itemCount];
for (int i = 0; i < itemCount; i++) {
result[i] = itema[i];
}
return result;
}
public java.awt.Color convertColor(String c) {
if (c.compareTo("NULL") == 0) {
return null;
}
if (c.compareTo("RED") == 0) {
return java.awt.Color.red;
}
if (c.compareTo("BLACK") == 0) {
return java.awt.Color.black;
}
if (c.compareTo("BLUE") == 0) {
return java.awt.Color.blue;
}
if (c.compareTo("CYAN") == 0) {
return java.awt.Color.cyan;
}
if (c.compareTo("DARKGRAY") == 0) {
return java.awt.Color.darkGray;
}
if (c.compareTo("GRAY") == 0) {
return java.awt.Color.gray;
}
if (c.compareTo("GREEN") == 0) {
return java.awt.Color.green;
}
if (c.compareTo("LIGHTGRAY") == 0) {
return java.awt.Color.lightGray;
}
if (c.compareTo("MAGENTA") == 0) {
return java.awt.Color.magenta;
}
if (c.compareTo("ORANGE") == 0) {
return java.awt.Color.orange;
}
if (c.compareTo("PINK") == 0) {
return java.awt.Color.pink;
}
if (c.compareTo("WHITE") == 0) {
return java.awt.Color.white;
}
if (c.compareTo("YELLOW") == 0) {
return java.awt.Color.yellow;
}
try {
return java.awt.Color.decode(c);
} catch (Exception e) {
return java.awt.Color.black;
}
}
// Handle the request
// 1. create barcode
// 2. draw barcode in a Buffered Image
// 3. encode image as GIF or JPEG and send it to the browser
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
ServletOutputStream outb;
//default encoding type
String encode = "jpeg";
if (request != null) {
if (request.getParameter("FORMAT") != null) {
encode = request.getParameter("FORMAT").toLowerCase();
}
if (encode.compareTo("gif") != 0) {
encode = "jpeg";
}
}
response.setContentType("image/" + encode);
outb = response.getOutputStream();
// avoid caching in browser
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
try {
// find sizes
int w = 10;
int h = 10;
// get the BarCode
BarCode cb = getChart(request);
if ( (request != null) && (request.getParameter("WIDTH") != null) &&
(request.getParameter("HEIGHT") != null)) {
w = new Integer(request.getParameter("WIDTH")).intValue();
h = new Integer(request.getParameter("HEIGHT")).intValue();
} else {
//a temp image must be created to find the preferred size
cb.autoSize = true;
cb.setSize(170, 90);
java.awt.image.BufferedImage imageTemp = new java.awt.image.
BufferedImage(cb.getSize().width, cb.getSize().height,
java.awt.image.BufferedImage.TYPE_BYTE_INDEXED);
java.awt.Graphics imgTempGraphics = imageTemp.createGraphics();
cb.paint(imgTempGraphics);
cb.invalidate();
w = cb.getSize().width;
h = cb.getSize().height;
imgTempGraphics.dispose();
}
java.awt.image.BufferedImage BarImage = new java.awt.image.BufferedImage(
w, h, java.awt.image.BufferedImage.TYPE_INT_RGB);
java.awt.Graphics2D BarGraphics = BarImage.createGraphics();
if (debug) {
System.out.println("Size: " + w + " " + h);
}
cb.setSize(w, h);
cb.paint(BarGraphics);
if (encode.compareToIgnoreCase("gif") == 0) {
// encode buffered image to a gif
GifEncoder encoder = new GifEncoder(BarImage, outb);
encoder.encode();
} else {
// create JPEG image
com.sun.image.codec.jpeg.JPEGImageEncoder encoder = com.sun.image.codec.
jpeg.JPEGCodec.createJPEGEncoder(outb);
//increase the JPEG quality to 100%
com.sun.image.codec.jpeg.JPEGEncodeParam param = encoder.
getDefaultJPEGEncodeParam(BarImage);
param.setQuality(1.0F, true);
encoder.setJPEGEncodeParam(param);
encoder.encode(BarImage, param);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
try {
doGet(request, response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -