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

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,"宋体");

    }

}

留个记录!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: UniApp是一种跨平台的前端开发框架,允许开发使用HTML、CSS和JavaScript来构建应用程序。而"tsc"指令是TypeScript编译器的命令,用于将TypeScript代码编译为JavaScript代码。在UniApp中,我们通常使用Vue来构建应用程序,而不是直接使用TypeScript。 要在UniApp中打印二维码,我们可以使用第三方插件或组件来实现。UniApp提供了一些可以在不同平台上生成二维码的插件或组件,例如uni-qr-code。 首先,我们需要在UniApp的项目中安装并导入uni-qr-code插件或组件。可以在插件市场或开发社区中找到该插件的相关文档使用示例。 安装并导入插件或组件后,我们可以在Vue文件中使用插件或组件的API来生成二维码。通常,我们需要提供要转换为二维码的数据,例如链接或文本。插件或组件会根据提供的数据生成相应的二维码图片。 我们还可以通过设置插件或组件的属性来自定义二维码的外观和功能,例如颜色、大小、错误纠正级别等。可以根据具体需求调整这些属性。 最后,我们可以在Vue文件中使用<img>标签来显示生成的二维码图片。将插件或组件生成的二维码图片的路径赋值给<img>标签的src属性即可。 总之,要在UniApp中打印二维码,我们需要安装并导入一个适用的插件或组件,通过设置属性和数据生成二维码图片,然后将生成的图片显示在页面中。 ### 回答2: Uniapp是一款跨平台应用开发框架,可以使用Vue.js开发移动应用程序。TSC是TypeScript Compiler的缩写,用于将TypeScript代码编译为可执行的JavaScript代码。 如果在Uniapp中使用TSC指令无法打印二维码,可能是由于以下几个原因导致的。 首先,确保TSC工具已正确安装并配置。可以尝试在命令行中运行tsc命令,查看是否能够成功执行。如果无法执行,则需要重新安装并配置TSC。 其次,检查项目中是否正确引入了二维码打印所需的依赖库。Uniapp可以使用多种插件来实现二维码打印功能,如qrcode.js等。需要使用npm或yarn等包管理工具安装相关依赖,并在代码中正确引入。确保依赖库已正确安装和引入。 另外,还需要确认是否使用了正确的API和参数来生成并打印二维码。根据具体需求,可能需要传递二维码的数据、尺寸、背景色、前景色等参数。需要查看具体的文档和示例,确保使用了正确的API和参数。 最后,如果以上步骤都没有解决问题,可能是Uniapp本身的兼容性或Bug导致。可以尝试更新Uniapp版本或咨询Uniapp的官方支持,获取更多帮助和解决方案。 综上所述,解决Uniapp中使用TSC指令打印二维码不能用的问题,需要确保TSC工具正确安装和配置、引入了正确的依赖库、使用正确的API和参数,并排除Uniapp本身的兼容性或Bug等因素。 ### 回答3: 使用Uniapp开发框架时,如果尝试使用tsc指令打印二维码,可能会出现无法正常打印的问题。这是因为tsc指令主要是用于TypeScript代码编译的工具,而不是用于打印二维码的功能。 如果我们想在Uniapp中实现打印二维码的功能,可以使用其他适用的方法。一种常见的方法是通过引入第三方的二维码生成库来实现。Uniapp中有很多可用的二维码生成库,如qrcode.js或zxing.js等。我们可以在项目中引入这些库,并根据需求的不同,使用库中提供的函数来生成和展示二维码。 具体实现的步骤如下: 1. 首先,在项目中引入所需的二维码生成库,可以通过npm安装或者直接下载相应的库文件。 2. 在需要生成二维码的页面中,引入库文件并通过调用相应的函数生成二维码图片。 3. 根据需求,将生成的二维码图片展示在页面中的合适的位置,可以是一个img标签或者使用Canvas等方式。 通过上述方法,我们可以在Uniapp中轻松实现生成和展示二维码的功能,而不必使用tsc指令来尝试打印二维码。需要注意的是,根据使用二维码生成库的不同,具体的实现方式可能会有所差异,建议查阅对应库的文档或示例代码以获得更详细的实现信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值