java使用佳博打印机打印条形码
转载:点击打开链接
在实际开发中我们使用条形码打印机打印条形码,这里介绍下使用动态链接库TSClib.dll编辑方式打印条形码,还有js实现方式,这里不进行介绍,会给相关的demo
准备工作:
1.佳博打印机,如佳博GP-1124D
详细参数如下:
主要参数
产品类型:桌面打印机
分辨率: 203dpi
打印方式: 热敏式
打印速度: 4-8英寸/秒
最大打印宽度: 104mm
最大打印长度: 2286mm
通信接口: USB接口,串口,并口
介质规格
介质类型: 连续纸,间隙纸,折叠纸,黑标纸
介质宽度: 20-120mm
介质厚度: 0.06-0.254mm
最大外径: 130mm
其它参数
产品尺寸: 239×180×175mm
产品重量: 2.09kg
电源电压: 输入:AC 110-220V
输出:DC 24V,2.5A
电源功率: 60W
环境参数: 工作温度:5-45℃,工作湿度:25-85%RH(不结露)
存储温度:-10-50℃,存储湿度:10-90%RH(不结露)
可选附件: 可选外置支架
其它特点: 脉冲激发:1x108pulses
热敏片(耐磨性):50km
纸张缠绕形式:打印面外卷式
外形:
2.佳博打印机驱动安装,如:
3.动态链接库TSCLIB.dll,支持大部分佳博打印机,和其他品牌的TSC系列的打印机,讲动态链接库"TSCLIB.dll"复制到该路径下:
5.条形码扫描器:暴享(BAOX)BX-W988
详细参数:
6.案例:
- package jbarcode;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.List;
- import com.sun.jna.Library;
- import com.sun.jna.Native;
- /**
- * @class:PrintBarcodeUtil
- *@descript:java使用编程接口打印条形码
- *@date:2016年12月8日 下午2:02:50
- *@version:V1.0
- */
- public class PrintBarcodeUtil {
- //加载库文件
- private static final String LOAD_LIBRARY="TSCLIB";
- //打印机型号
- private static final String print_model="Gprinter GP-1124D";
- /**
- * @class:TscLibDll
- *@descript:创建TSCLIB.dll编程接口
- *动态链接库TSCLIB.dll,支持大部分佳博打印机,和其他品牌的TSC系列的打印机
- *@date:2016年12月8日 下午2:03:55
- *@version:V1.0
- */
- public interface TscLibDll extends Library {
- TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary ("TSCLIB", TscLibDll.class);
- int about ();
- int openport (String pirnterName);
- int closeport ();
- int sendcommand (String printerCommand);
- int setup (String width,String height,String speed,String density,String sensor,String vertical,String offset);
- int downloadpcx (String filename,String image_name);
- int barcode (String x,String y,String type,String height,String readable,String rotation,String narrow,String wide,String code);
- int printerfont (String x,String y,String fonttype,String rotation,String xmul,String ymul,String text);
- int clearbuffer ();
- int printlabel (String set, String copy);
- int formfeed ();
- int nobackfeed ();
- int windowsfont (int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);
- }
- public static void printBarcode(String message,String text){
- //加载驱动
- System.loadLibrary(LOAD_LIBRARY);
- //解决中文乱码
- System.setProperty("jna.encoding", "GBK");
- //TscLibDll.INSTANCE.about();
- TscLibDll.INSTANCE.openport(print_model);
- //TscLibDll.INSTANCE.downloadpcx("C:\\UL.PCX", "UL.PCX");
- //TscLibDll.INSTANCE.sendcommand("REM ***** This is a test by JAVA. *****");
- TscLibDll.INSTANCE.setup("100", "60", "5", "8", "0", "0", "0");
- TscLibDll.INSTANCE.clearbuffer();
- TscLibDll.INSTANCE.printerfont ("150", "270", "TSS24.BF2", "0", "1", "1", text);
- TscLibDll.INSTANCE.barcode("150", "90", "128", "150", "1", "0", "2", "2", message);
- //TscLibDll.INSTANCE.windowsfont(400, 200, 48, 0, 3, 1, "arial", "DEG 0");
- TscLibDll.INSTANCE.printlabel("1", "1");
- TscLibDll.INSTANCE.closeport();
- }
- //测试
- public static void main(String[] args) throws UnsupportedEncodingException {
- List<String> list=new ArrayList<String>();
- list.add("KJ4.1-0127-0001(001)");
- list.add("KJ4.1-0128-0001(001)");
- list.add("KJ4.1-0129-0001(001)");
- list.add("KJ4.1-0130-0001(001)");
- if(list!=null && list.size()>0){
- for(String message:list){
- printBarcode(message,"苏交科");
- }
- }
- System.out.println("打印成功");
- }
- }
打印效果图:
备注:
1.该案例是条形码是code128,用扫码枪扫描能快速识别扫描,特殊符号汉字均能正常扫描
2.根据不同的条形码打印机会有不同的动态链接库,如佳博使用的是TSCLIB.dll,博思得"CDFPSK_u.dll"等等。这些都是根据对应条形码打印机官网下载驱动
3.上述案例中方法printBarcode()里面的写法是根据动态链接库"TSCLIB.dll"语法规则,具体详细查看TSCLIB.DLL 函数库使用说明
下载地址:http://download.****.net/detail/u014079773/9705736
4.使用条形码打印机打印条形码不需要生成条形码以图片的形式,然后再用打印方法以打印图片形式打印出来,然后用扫码枪扫描,这样做使得生成的条形码打印出来大小与原来大小不一致,而且有时扫码枪扫描不出来。用相应的条形码打印机驱动,动态链接库则避免了这些问题,而且打印出来的条形码用扫码枪扫描反应很快,中文特殊符号均能正常扫描。