700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > JAVA调用TSC打印机打印标签(二维码 数据等)超详细!!

JAVA调用TSC打印机打印标签(二维码 数据等)超详细!!

时间:2021-02-19 00:10:01

相关推荐

JAVA调用TSC打印机打印标签(二维码 数据等)超详细!!

本文打印机型号:TSC MA3400P

后端调用tsc打印机是通过DLL来进行调用的,首先你需要两个TSC文件直接复制到项目目录下边即可

可以直接去官网下载:/zh-CN/downloads

还需要把这dll文件放到你的C:\Windows下边的64或者system32文件夹下边

32位的和64位的注意一下

jna这个依赖可以代替工具包中的jna.jar需要引入一下

如果电脑连接了tsc打印机驱动程序可以在这里下载设置

到此为止准备部分已经完成

官方提供了调用示例如下:

public class JniDll { 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 main(String[] args) {TscLibDll.INSTANCE.openport("TSC TTP-243E Pro");TscLibDll.INSTANCE.sendcommand("REM ***** This is a test by JAVA. *****");TscLibDll.INSTANCE.setup("100", "100", "5", "8", "0", "0", "0");TscLibDll.INSTANCE.clearbuffer();TscLibDll.INSTANCE.printerfont ("100", "10", "3", "0", "1", "1", "(JAVA) DLL Test!!");TscLibDll.INSTANCE.barcode("100", "40", "128", "50", "1", "0", "2", "2", "123456789");TscLibDll.INSTANCE.windowsfont(400, 200, 48, 0, 3, 1, "arial", "DEG 0");TscLibDll.INSTANCE.windowsfont(400, 200, 48, 90, 3, 1, "arial", "DEG 90");TscLibDll.INSTANCE.windowsfont(400, 200, 48, 180, 3, 1, "arial", "DEG 180");TscLibDll.INSTANCE.windowsfont(400, 200, 48, 270, 3, 1, "arial", "DEG 270");TscLibDll.INSTANCE.printlabel("1", "1");TscLibDll.INSTANCE.closeport();}}

如果在运行的过程中提示找不到文件需要做如下配置

第一步

第二步设置OK运行

根据自己的业务来进行调整以下是调用代码

try {if(CollectionUtil.isEmpty(printList)){return R.failed("打印的数据为空,不能打印");}TscPrintUtil.printLOTUS("105", "105", printList,"arial");}catch (Exception e) {throw new OmsBusinessException(ErrorCodeEnum.E910001.code, StrUtil.format("打印服务异常"));}@Slf4jpublic class TscPrintUtil {/**** 加载库文件*/private static final String LOAD_LIBRARY = "TSCLIB";/**** 设置 打印机名称(LOTUS)*/private static final String PRINTER_NAME_LOTUS = "TSC MA3400P";/**** LOTUS打印标签** @param setupWidth 设置纸张宽度* @param setupHeigth 设置纸张高度* @param printList 打印参数* @param fontType 字体类型 (宋体)*/public static void printLOTUS(String setupWidth, String setupHeigth, List<AsnLinePrintVo> printList,String fontType) {for (AsnLinePrintVo list : printList) {// 加载驱动System.loadLibrary(LOAD_LIBRARY);// 解决中文乱码System.setProperty("jna.encoding", "GBK");// 打印机型号JniDll.TscLibDll.INSTANCE.openport(PRINTER_NAME_LOTUS);// 设置标签的寬度、高度、列印速度、列印浓度、感应器类别、gap/black mark 垂直间距(标签纸 的间距)、gap/black mark 偏移距离)JniDll.TscLibDll.INSTANCE.setup(setupWidth, setupHeigth, "5", "8", "0", "3", "0");JniDll.TscLibDll.INSTANCE.clearbuffer();//var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';// 打印二维码的参数和内容String partNumber ="QRCODE 300,820,Q,10,A,0,M2,S7,\"" + list.getPartNumber()+"\"";// 传送指令JniDll.TscLibDll.INSTANCE.sendcommand(partNumber);//设置文本(位置(x,y)、大小、旋转角度、文字X方向放大倍率,1~8 、文字Y方向放大倍率,1~8 字 体arial、内容)JniDll.TscLibDll.INSTANCE.windowsfont(900, 100, 70, 270, 2, 0, fontType,list.getPartNumber());//如果Sku的中文名称不为空则打印if(StringUtils.isNotBlank(list.getNameCN())){if(list.getNameCN().length()>8){JniDll.TscLibDll.INSTANCE.windowsfont(800, 100, 70, 270, 2, 0, fontType,list.getNameCN().substring(0,8));JniDll.TscLibDll.INSTANCE.windowsfont(700, 100, 70, 270, 2, 0, fontType,list.getNameCN().substring(9,list.getNameCN().length()));} else{JniDll.TscLibDll.INSTANCE.windowsfont(800, 100, 70, 270, 2, 0, fontType,list.getNameCN());}}if(StringUtils.isNotBlank(list.getNameEN())){if(list.getNameEN().length()>31){JniDll.TscLibDll.INSTANCE.windowsfont(600, 100, 70, 270, 2, 0, fontType,list.getNameEN().substring(0,15));JniDll.TscLibDll.INSTANCE.windowsfont(500, 100, 70, 270, 2, 0, fontType,list.getNameEN().substring(16,30));JniDll.TscLibDll.INSTANCE.windowsfont(400, 100, 70, 270, 2, 0, fontType,list.getNameEN().substring(31,list.getNameEN().length()));}else if(list.getNameEN().length()>15 && list.getNameEN().length()<31) {JniDll.TscLibDll.INSTANCE.windowsfont(600, 100, 70, 270, 2, 0, fontType,list.getNameEN().substring(0,15));JniDll.TscLibDll.INSTANCE.windowsfont(500, 100, 70, 270, 2, 0, fontType,list.getNameEN().substring(16,list.getNameEN().length()));} else {JniDll.TscLibDll.INSTANCE.windowsfont(600, 100, 70, 270, 2, 0, fontType,list.getNameEN());}}JniDll.TscLibDll.INSTANCE.windowsfont(900, 820, 70, 270, 2, 0, fontType,"Qty:"+String.valueOf(list.getNum()));//打印的页数JniDll.TscLibDll.INSTANCE.printlabel("1", String.valueOf(list.getNum()));// 关闭程序JniDll.TscLibDll.INSTANCE.closeport();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。