TSC打印机,使用java打印二维码

本文介绍如何使用Java和TSC打印机驱动实现二维码及文字内容的打印功能,包括必要的依赖库引入、DLL文件配置及核心代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TSC打印机,使用java打印二维码,左右布局。

效果图:
在这里插入图片描述

1、安装打印机驱动。
驱动下载

2、引用的jar包

<dependency>
	<groupId>net.java.dev.jna</groupId>
	<artifactId>jna</artifactId>
	<version>3.2.5</version>
</dependency>

2、引用的dll,将dll文件拷贝到项目根目录下,是项目根目录。

dll文件下载

3、代码类

public class TscPrintUtils {

    /**
     * 格式化 listData 数据
     * @param qrCode
     * @param qrContent
     * @param setupWidth
     * @param setupHeigth
     * @param listData
     * @param fontheigth
     * @param szfaceName
     */
    public static void formatPrint(String pirnterName,String qrCode,String qrContent,String setupWidth,String setupHeigth,List<String> listData,Integer fontX,Integer fontheigth,String szfaceName){

        List<String> list = new ArrayList<>();

//      每行限制 10位字,防止打印出边界
        if(CollectionUtils.isNotEmpty(listData)){

            for (String str : listData){

                int maxStr = str.length()/10;
                if((str.length()%10)!=0){
                   maxStr = maxStr+1;
                }
                for (int i=0;i<maxStr;i++){
                    if(i==maxStr-1){
                        list.add(str.substring(i*10));
                    }else {
                        list.add(str.substring(i*10,i*10+10));
                    }

                }
            }
        }

        print( pirnterName, qrCode, qrContent, setupWidth, setupHeigth, list, fontX, fontheigth, szfaceName);

    }

    public static void print(String pirnterName,String qrCode,String qrContent,String setupWidth,String setupHeigth,List<String> listData,Integer fontX,Integer fontheigth,String szfaceName){

        System.setProperty("jna.encoding", "GBK");// 支持中文
        TscLibDll.INSTANCE.openport(pirnterName);//打印机型号
        TscLibDll.INSTANCE.setup(setupWidth,setupHeigth,"5","8","0","0","0");
        TscLibDll.INSTANCE.clearbuffer();
        //var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';
        String command = qrCode+"\"" + qrContent+"\""; //打印二维码的参数和内容
        TscLibDll.INSTANCE.sendcommand(command); //传送指令

        if(CollectionUtils.isNotEmpty(listData)){
            if(StringUtils.isBlank(szfaceName)){
                szfaceName = "宋体";
            }

//          根据自己的纸张,计算平均行间距
//          X 360中间点
            Integer firstX = fontX;
//            Y高度0-360
            Integer firstY = 360/listData.size();
            Integer oneY = 60;//行间距60
            for(String str : listData){
                TscLibDll.INSTANCE.windowsfont(firstX, firstY, fontheigth, 0, 2, 0, szfaceName, str);
                firstY = firstY + oneY;
            }
        }

        TscLibDll.INSTANCE.printlabel("1", "1");
        TscLibDll.INSTANCE.closeport();
    }



    public interface TscLibDll extends Library {
        // 此处默认读取项目根路径下的TSCLIB.dll,也可以填写绝对路径
        TscPrintUtils.TscLibDll INSTANCE = (TscPrintUtils.TscLibDll) Native.loadLibrary ("TSCLIB", TscPrintUtils.TscLibDll.class);

        // 以下为dll函数库支持的方法,方法的作用与参数说明见附件【】
        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);
    }

}

4、测试

public class PrintLabelMain {

    public static void main(String[] args){

        TscPrintUtils utils = new TscPrintUtils();
        List<String> list = new ArrayList<>();
        list.add("单位:单位名称");
        list.add("设备类型:设备名称");
        list.add("编号:E0005");
        list.add("位置:#8号楼8单元8层8008室");

        utils.formatPrint("TSC TE344","QRCODE 10,55,Q,12,A,0,M2,S7,","张张智能科技有限公司","60","40",list,340,33,"宋体");

    }

}

留个记录!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值