//--------------------以下是使用onbarcode生成的code_93码--------------------
/**
 * 功能描述:将条形码输出到页面
 *
 * @since 2016/6/2 16:48
 */
@RequestMapping(value = "/outputBarcode")
@ResponseBody
public void outputBarcode(HttpServletRequest request, HttpServletResponse response, String content) throws ServletException {
    try {
        Code93 barcode = generateBarcode(content);
        ServletOutputStream servletoutputstream = response.getOutputStream();

        response.setContentType("p_w_picpath/jpeg");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);

        // Generate Code-39 barcode & output to ServletOutputStream70-79017A
        barcode.drawBarcode(servletoutputstream);

    } catch (Exception e) {
        throw new ServletException(e);
    }
}

/**
 * 功能描述:barcode生成条形码
 *
 * @since 2016/5/31 10:59
 */
public Code93 generateBarcode(String content) {
    try {
        Code93 barcode = new Code93();

        /*Code 93 Valid data char set:
            0, 1, 2, 3, 4, 5, 6, 7, 8, 9 (Digits)
            A - Z (Uppercase letters)
            - (Dash), $ (Dollar), % (Percentage), (Space), . (Point), / (Slash), + (Plus)*/
        barcode.setData(content);

        // Unit of Measure, pixel, cm, or inch
        barcode.setUom(IBarcode.UOM_PIXEL);
        // barcode bar module width (X) in pixel
        barcode.setX(2f);
        // barcode bar module height (Y) in pixel
        barcode.setY(60f);

        // barcode p_w_picpath margins
        barcode.setLeftMargin(0f);
        barcode.setRightMargin(0f);
        barcode.setTopMargin(15f);
        barcode.setBottomMargin(5f);

        // barcode p_w_picpath resolution in dpi
        barcode.setResolution(72);

        // display barcode encoding data below the barcode
        barcode.setShowText(true);
        // barcode encoding data font style
        barcode.setTextFont(new Font("Arial", 0, 14));
        // space between barcode and barcode encoding data
        barcode.setTextMargin(6f);

        // barcode displaying angle
        barcode.setRotate(IBarcode.ROTATE_0);

        return barcode;

    } catch (Exception e) {
        logger.error("生成条形码异常:{}", e.getMessage());
        return null;
    }
}

onbarcode,由于使用的是官方试用版的jar包,所以生成的条形码图片时不时会出现trial的水印;

wKiom1dnpDLAq1xmAAABijoy89U849.png-wh_50

//--------------------以下是使用barcode4j生成的Code128码--------------------
/**
     * 功能描述:上传Code128条形码
     *
     * @since 2016/5/31 11:00
     */
    @RequestMapping(value = "/uploadBarcode")
    public void uploadBarcode(HttpServletRequest req, HttpServletResponse resp, String content) throws BusinessException {
        String basePath = Constants.UPLOAD_BASEPATH.BARCODE;
        String filePath = req.getSession().getServletContext().getRealPath("/") + basePath;
        String fileName = content + ".png";
        Boolean flag = generateBarcode4j(filePath, fileName, content);
        String result = "";
        if (flag) {
            result = basePath + fileName;
        }
        this.writeJson(result, resp);
    }

    /**
     * 功能描述:barcode4j生成条形码
     *
     * @since 2016/6/2 13:00
     */
    public boolean generateBarcode4j(String filePath, String fileName, String content) {
        try {
            //Create the barcode bean
            Code128Bean bean = new Code128Bean();

            final int dpi = 180;

            //Configure the barcode generator
//            bean.setModuleWidth(UnitConv.in2mm(1.0f / dpi)); //makes the narrow bar
            bean.setModuleWidth(0.2); //makes the narrow bar
            bean.setHeight(10);
            //width exactly one pixel
            bean.doQuietZone(true);
            bean.setQuietZone(0);
            bean.setFontSize(0);

            //如果目录不存在,则创建
            File file = new File(filePath);
            if (!file.exists()) {
                file.mkdirs();
            }
            //如果文件存在则不需要二次创建
            file = new File(filePath + fileName);
            if (!file.exists()) {
                //Open output file
                OutputStream out = new FileOutputStream(file);

                //Set up the canvas provider for monochrome JPEG output
                BitmapCanvasProvider canvas = new BitmapCanvasProvider(out, "p_w_picpath/png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0);

                //Generate the barcode
                bean.generateBarcode(canvas, content);

                //Signal end of generation
                canvas.finish();

                out.close();
            }
            return true;
        } catch (Exception e) {
            logger.error("生成条形码异常:{}", e.getMessage());
            return false;
        }
    }


使用barcode4j生成图片字节流输出,参考地址:

http://blog.sina.com.cn/s/blog_547145410100wzav.html

http://www.cnblogs.com/jston/archive/2013/01/30/2882834.html


onbarcode官方参考地址:http://www.onbarcode.com/products/java_barcode/barcodes/code_93.html