百度空间 | 百度首页 
 
查看文章
 
java 条形码
2009-06-08 09:38
关键字: 条形码 java生成条形码
当项目牵涉到产品库存的时候,为了便于管理和操作一般都会考虑使用条形码。在以前做某个项目的时候用到过,稍微整理了下,共享出来给需要的朋友做个参考。


实现功能: 用JAVA显示各种规格的条形码(18种),打印后可以被扫描设备扫描.
需要的java类请到最后的附件(barcode.zip)中下载。

1.把barcode的4个java类引入自己的项目中;
2.在web.xml中配置一个生成条形码的servlet,如下:
  
  1. ...   
  2. <servlet>  
  3.     <servlet-name>CreateBarCode</servlet-name>  
  4.     <servlet-class>com.zzqj.codecreater.BarCodeServlet</servlet-class>  
  5. </servlet>  
  6. ...   
  7. <servlet-mapping>  
  8.     <servlet-name>CreateBarCode</servlet-name>  
  9.     <url-pattern>/CreateBarCode</url-pattern>  
  10. </servlet-mapping>  
  11. ...  
    这样就可以使用CreateBarCode这个servlet来生成条形码了。
    备注:
    (1)com.soft4j.barcode.BarCodeServlet,这里填写自己项目中的实际包路径
    (2)关于CreateBarCode这个名字可以自行设定。
   
3.前台引用例子(BarcodeExample.jsp):
  1. <%@ page contentType="text/html;charset=UTF-8"%><%   
  2.      String code = "135792468";//条形码内容   
  3. %>  
  4. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  5. <html><head><title></title>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <script language="javascript">  
  8. <!--   
  9. NS4 = (document.layers) ? 1 : 0;   
  10. visble_property_prefix = (NS4) ? "document.layers." : "";   
  11. visble_property_suffix = (NS4) ? ".visibility" : ".style.display";   
  12. visble_property_true = (NS4) ? "show" : "block";   
  13. visble_property_false = (NS4) ? "hide" : "none";   
  14. visble_property_printview = visble_property_prefix + "viewpanel" + visble_property_suffix;   
  15. function nowprint() {   
  16.      window.print();   
  17. }   
  18. function window.onbeforeprint() {   
  19.      eval(visble_property_printview + " = \"" + visble_property_false + "\"");   
  20. }   
  21. function window.onafterprint() {   
  22.      eval(visble_property_printview + " = \"" + visble_property_true + "\"");   
  23. }   
  24. //-->  
  25. </script>  
  26. </head>  
  27. <body topmargin="0px" leftmargin="0px" rightmargin="0px" bottommargin="0px">  
  28. <%      
  29.      StringBuffer barCode = new StringBuffer();   
  30.      barCode.append("<img src='");   
  31.      barCode.append(request.getContextPath());   
  32.      barCode.append("/CreateBarCode?code=");   
  33.      barCode.append(code);   
  34.      barCode.append("&barType=CODE39&checkCharacter=n&checkCharacterInText=n'>");   
  35.      out.println(barCode.toString());   
  36. %>  
  37. <div id="viewpanel" align="center">  
  38. <input name="bequery" type="button" value="打   印" style="cursor:hand;" onclick="nowprint();">  
  39. </div>  
  40. <!--script>nowprint();</script-->  
  41. </body>  
  42. </html>    

4.关于条形码使用时可以设置的一些参数:
------------------------------------
barType(默认为CODE128):   条码类型.支持18钟类型,分别是 CODE39,CODE39EXT,INTERLEAVED25,CODE11,CODABAR,MSI,UPCA,IND25,MAT25,CODE93,EAN13,EAN8,UPCE,CODE128,CODE93EXT,POSTNET,PLANET,UCC128 .
code:   要打印的条码内容.   
width(默认为自适应,一般不用自行设置):   图片宽度.width,height要同时都设置才有效.    
height(默认为自适应,一般不用自行设置):   图片高度.width,height要同时都设置才有效.    
st(默认为y显示):   是否显示条码内容(show   text).默认会在条码图片下方显示条码内容,有效值为y和n.    
textFont(默认为Arial|PLAIN|11):   条码文本的字体,字体有效格式为<font   name>|<style>|<size>.Style可以是PLAIN,ITALIC或BOLD.    
fontColor(默认为黑色):   条码文本的颜色,有效值为RED,BLUE,GREEN,BLACK,GRAY,LIGHTGRAY,WHITE,DARKGRAY,YELLOW,ORANGE,CYAN和MAGENTA.    
barColor(默认为黑色):   条码的颜色.    
backColor(默认为白色):   图片背景颜色.    
rotate(默认为0):   设置条码旋转角度.有效值为0(不旋转),90(旋转90度),180(旋转180度),270(旋转270度).  
barHeightCM(默认为1厘米):   条码的高度.    
x(默认为0.03厘米,一般不用自行调整):   条码符号中窄单元的标称尺寸,最小可设置为0.001即1象素,通常以0.03递增.  
n(默认为2倍):   宽窄比,平均宽条的条宽与平均宽空的空宽之和(条码字符间隔不计在内)除以两倍窄单元尺寸.它是宽度调节编码法中的技术参数.  
leftMarginCM(默认为0.3厘米):   条码与图片左右边的距离.    
topMarginCM(默认为0.2厘米):   条码与图片上下边的距离.    
checkCharacter(默认为y,一般不用自行设置):   是否自动计算check   character,有效值为y和n.    
checkCharacterInText(默认为y,一般不用自行设置):   条码内容是否自动计算check   character,有效值为y和n.    
Code128Set(默认为0自动选择,一般不用设置):   设置CODE128中使用的字符集.有效值为0,A,B,C.    
UPCESytem(默认为0,一般不用自行设置):   UPCE中使用的编码系统.有效值为0和1.    
------------------------------------
其中关键的参数主要是 barType,code 这2个.另外把checkCharacter和checkCharacterInText这2个参数设置成n,如果是y的话,会在你的条形码后面追加一个校验码,虽然不影响使用(扫描设备扫描条形码得到数据不会出现校验码),但是看着比较别扭(如下图).



5.还可以在applet中使用,具体使用参数请对照BarCodeApplet.java文件,与WEB使用方式差不多.

6.例子下载

barcode.rar


类别:Java | 添加到搜藏 | 浏览() | 评论 (3)
 
最近读者:
 
网友评论:
1
2009-08-05 12:34 | 回复
呵呵,这个java条码包是破解我的maskbarcode来的。
大家好,我是maskbarcode的原作者。5年前我做一个外包项目的时候花了1000美金买来一个国外的java条码工具包,不过那个工具写的太繁琐,用起来不方便,我就把最核心的东西提取出来,封装了一下,形成了maskbarcode.jar包。我于5年前把这个jar包放到网上,卖点小钱。
 
2
2009-08-05 12:35 | 回复
需要提醒大家的是:大家在网上下载的我发布的demo版以及别人破解之后再放到网上的都是基于5年前我发布的版本,这个版本是有很多bug的,在并发访问量大的情况下可能会出现条码显示不正确的情况,另外某些条码类型的校验位显示也有问题,会导致有时显示校验位,有时不显示。
所以如果你是自己下载下来用着玩,那没有问题,没破解的demo版也可以被扫描枪识别,破不破解都无所谓。
但是如果你是商业应用,请慎重,为了你的应用能长期正常运行,请不要省这几百块钱。
起始我卖得一点都不贵,你可以算算,如果你公司找个有经验的开发人员自己开发一个条码控件,需要花多少时间?这个人力成本是多少?开发出来的东西成熟度怎么样?有没有bug?以后需不需要再花时间去修改bug?
好了不多说了,有需要的朋友可以联系我msn:maskboy239@hotmail.com,QQ:10560019
 
3
2009-08-05 16:21 | 回复
回复maskboy239:原创来追究责任了···
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu