JAVA使用springboot整合佳博标签打印机(一)_佳博打印机生成并打印条形码java对接-程序员宅基地

技术标签: 佳博打印机  java  dll  springboot  

呕心沥血啊,这个打印机真好玩(反话)!
佳博打印机官网:http://cn.gainscha.com/gjxz.html

在这里插入图片描述
在这里插入图片描述

1.标题打印机品牌:佳博打印机

佳博有个官网,二次开发文件可以去管网下载,需要注意的是,他的示例只有一个条形码打印示例(不带下面的编号)

2.标签纸规格

左边条形码标签纸规格:10mm40mm
右边二维码标签纸规格:20mm
30mm

废话不多说直接上代码

TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary(“E:\佳博打印机GP1134T\SDK_PC_IOS_WX\SDK(开发包)适用于PC,安卓,IOS,微信小程序\Java\TscJava\TscJava\lib\TSCLIB.dll”

文件路径记得修改为自己的文件路径

package com.shiro.shirodemo.utils;

import com.sun.jna.Library;
import com.sun.jna.Native;

public class Gprinter
{
    

    public interface TscLibDll extends Library
    {
    
        TscLibDll INSTANCE = (TscLibDll) Native.loadLibrary("E:\\佳博打印机GP1134T\\SDK_PC_IOS_WX\\SDK(开发包)适用于PC,安卓,IOS,微信小程序\\Java\\TscJava\\TscJava\\lib\\TSCLIB.dll", TscLibDll.class);
        int about ();
        int openport (String pirnterName);
        int closeport ();
        int sendcommand (String printerCommand);
        int sendBinaryData (byte[] printerCommand, int CommandLength);
        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 windowsfont (int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, String content);
        int windowsfontUnicode(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, byte[] content);
        int windowsfontUnicodeLengh(int x, int y, int fontheight, int rotation, int fontstyle, int fontunderline, String szFaceName, byte[] content, int length);
        int QRCODE (String x,String y,String ECC,String cell,String mode,String rotation,String data);
        byte usbportqueryprinter();

    }
    public static void BARCODE(String printerName,String barCode,String quantity)
    {
    
        byte status = TscLibDll.INSTANCE.usbportqueryprinter();//0 = idle, 1 = head open, 16 = pause, following <ESC>!? command of TSPL manual
        TscLibDll.INSTANCE.openport(printerName-修改为自己的打印机驱动名称-----------------));
        TscLibDll.INSTANCE.sendcommand("SIZE 40 mm, 15 mm");
        //该指令用于控制打印速度
        TscLibDll.INSTANCE.sendcommand("SPEED 2");
        //该指令用于控制打印时的浓度
        TscLibDll.INSTANCE.sendcommand("DENSITY 8");
        //该指令用于定义打印时出纸和打印字体的方向
        TscLibDll.INSTANCE.sendcommand("DIRECTION 1");
        //此命令是用来启用/禁用撕纸位置走到撕纸处,此设置关掉电源后将保存在打印机内
        TscLibDll.INSTANCE.sendcommand("SET TEAR ON");
        //该指令用于选择对应的国际代码页
        TscLibDll.INSTANCE.sendcommand("CODEPAGE UTF-8");
        TscLibDll.INSTANCE.clearbuffer();
        //BARCODE x 左上角水平坐标起点,y 左上角垂直坐标起点,"code type" 加密类型,height 条形码高度,human readable 0 表示人眼不可识,1 表示人眼可识,
        //rotation 条形码旋转角度,顺时针方向,narrow 窄 bar 宽度,以点(dot)表示,wide 宽 bar 宽度,以点(dot)表示,"content"
        TscLibDll.INSTANCE.barcode("80", "60", "128", "75", "0", "0", "2", "2", barCode);
        //打印条形码下方字体
        TscLibDll.INSTANCE.windowsfont(130, 140, 35, 0, 0, 0, "Arial", barCode);
        //设置打印三张一列
        TscLibDll.INSTANCE.printlabel(quantity, "1");
        TscLibDll.INSTANCE.closeport();
    }
    /**
     * 绘制二维码指令
     * 功能:繪製QRCODE二維條碼
     * 語法:
     * QRCODE X, Y, ECC Level, cell width, mode, rotation, [model, mask,]"Data string”
     * 參數說明
     * X QRCODE條碼左上角X座標
     * Y QRCODE條碼左上角Y座標
     * ECC level 錯誤糾正能力等級
     * L 7%
     * M 15%
     * Q 25%
     * H 30%
     * cell width    1~10
     * mode  自動生成編碼/手動生成編碼
     * A Auto
     * M Manual
     * rotation  順時針旋轉角度
     * 0 不旋轉
     * 90    順時針旋轉90度
     * 180   順時針旋轉180度
     * 270   順時針旋轉270度
     * model 條碼生成樣式
     * 1 (預設), 原始版本
     * 2 擴大版本
     * mask  範圍:0~8,預設7
     * Data string   條碼資料內容
     */
    public static String CMD_QRCODE_FROMT(String barCode){
    
        StringBuffer sb = new StringBuffer("QRCODE");
        sb.append(" ");
        sb.append("55,");//X QRCODE條碼左上角X座標
        sb.append("45,");//Y QRCODE條碼左上角Y座標
        sb.append("L,");//ECC level 錯誤糾正能力等級 L 7% M 15% Q 25% H 30%
        sb.append("7,");//cell width    1~10 二维码宽度 1-10
        sb.append("A,");//mode  自動生成編碼/手動生成編碼 A Auto M Manual
        sb.append("0,");//rotation  順時針旋轉角度 0 不旋轉 90    順時針旋轉90度 180   順時針旋轉180度 270   順時針旋轉270度
        sb.append("1,");//model 條碼生成樣式 1 (預設), 原始版本 2 擴大版本
        sb.append("7,");//mask  範圍:0~8,預設7
        sb.append("\"");
        sb.append(barCode);//Data string   二维码內容
        sb.append("\"");
        return sb.toString();
    }
    /**
     * 调用GP-1134T打印二维码
     * Author
     * @param barCode 二维码内容
     */
    public static void QRCODE(String printerName,String barCode,String quantity){
    
        byte status = TscLibDll.INSTANCE.usbportqueryprinter();//0 = idle, 1 = head open, 16 = pause, following <ESC>!? command of TSPL manual
        TscLibDll.INSTANCE.openport(printerName-修改为自己的打印机驱动名称-----------------);
        //打印二维码
        TscLibDll.INSTANCE.setup("20", "20", "3", "10", "0", "3", "0");
        TscLibDll.INSTANCE.clearbuffer();// 清除缓冲信息
        TscLibDll.INSTANCE.sendcommand("GAP 2 mm,0");// 设置 打印的方向.
        TscLibDll.INSTANCE.sendcommand("DIRECTION 1");// 设置 打印的方向.
        TscLibDll.INSTANCE.sendcommand("CODEPAGE UTF-8");
        TscLibDll.INSTANCE.sendcommand(CMD_QRCODE_FROMT(barCode));
        //打印二维码下方字体
        TscLibDll.INSTANCE.windowsfont(20, 205, 35, 0, 0, 0, "Arial", barCode);
        TscLibDll.INSTANCE.printlabel(quantity, "1");
        TscLibDll.INSTANCE.clearbuffer();// 清除缓冲信息
        TscLibDll.INSTANCE.closeport();
    }


}


pom.xml文件
<!--佳博打印机-->
		<dependency>
			<groupId>com.sun.jna</groupId>
			<artifactId>jna</artifactId>
			<version>3.0.9</version>
		</dependency>

注意:

  1. 如果你的标签和我的一样小,千万千万千万不要用一排三列的,我也打不出
  2. 最好一定一定一定用一排一列的标签纸(标签可以定制),能花钱解决的事不要伤害自己
  3. 打印机如果你修改了打印机驱动名称,千万不要轻易移动打印机,驱动名称可能会变,不要问我为什么知道
  4. 如果专门的码专门的打印机打这样是最好的,不要跟换大小不一样的标签纸,打印出来的数据可能会偏移 千万不要使用那种图像化打印界面,没用!
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xuexi_gan/article/details/117662941

智能推荐

解决win10/win8/8.1 64位操作系统MT65xx preloader线刷驱动无法安装_mt65驱动-程序员宅基地

文章浏览阅读1.3w次。转载自 http://www.miui.com/thread-2003672-1-1.html 当手机在刷错包或者误修改删除系统文件后会出现无法开机或者是移动定制(联通合约机)版想刷标准版,这时就会用到线刷,首先就是安装线刷驱动。 在XP和win7上线刷是比较方便的,用那个驱动自动安装版,直接就可以安装好,完成线刷。不过现在也有好多机友换成了win8/8.1系统,再使用这个_mt65驱动

SonarQube简介及客户端集成_sonar的客户端区别-程序员宅基地

文章浏览阅读1k次。SonarQube是一个代码质量管理平台,可以扫描监测代码并给出质量评价及修改建议,通过插件机制支持25+中开发语言,可以很容易与gradle\maven\jenkins等工具进行集成,是非常流行的代码质量管控平台。通CheckStyle、findbugs等工具定位不同,SonarQube定位于平台,有完善的管理机制及强大的管理页面,并通过插件支持checkstyle及findbugs等既有的流..._sonar的客户端区别

元学习系列(六):神经图灵机详细分析_神经图灵机方法改进-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏27次。神经图灵机是LSTM、GRU的改进版本,本质上依然包含一个外部记忆结构、可对记忆进行读写操作,主要针对读写操作进行了改进,或者说提出了一种新的读写操作思路。神经图灵机之所以叫这个名字是因为它通过深度学习模型模拟了图灵机,但是我觉得如果先去介绍图灵机的概念,就会搞得很混乱,所以这里主要从神经图灵机改进了LSTM的哪些方面入手进行讲解,同时,由于模型的结构比较复杂,为了让思路更清晰,这次也会分开几..._神经图灵机方法改进

【机器学习】机器学习模型迭代方法(Python)-程序员宅基地

文章浏览阅读2.8k次。一、模型迭代方法机器学习模型在实际应用的场景,通常要根据新增的数据下进行模型的迭代,常见的模型迭代方法有以下几种:1、全量数据重新训练一个模型,直接合并历史训练数据与新增的数据,模型直接离线学习全量数据,学习得到一个全新的模型。优缺点:这也是实际最为常见的模型迭代方式,通常模型效果也是最好的,但这样模型迭代比较耗时,资源耗费比较多,实时性较差,特别是在大数据场景更为困难;2、模型融合的方法,将旧模..._模型迭代

base64图片打成Zip包上传,以及服务端解压的简单实现_base64可以装换zip吗-程序员宅基地

文章浏览阅读2.3k次。1、前言上传图片一般采用异步上传的方式,但是异步上传带来不好的地方,就如果图片有改变或者删除,图片服务器端就会造成浪费。所以有时候就会和参数同步提交。笔者喜欢base64图片一起上传,但是图片过多时就会出现数据丢失等异常。因为tomcat的post请求默认是2M的长度限制。2、解决办法有两种:① 修改tomcat的servel.xml的配置文件,设置 maxPostSize=..._base64可以装换zip吗

Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字-程序员宅基地

文章浏览阅读1k次,点赞17次,收藏22次。Opencv自然场景文本识别系统(源码&教程)_opencv自然场景实时识别文字

随便推点

ESXi 快速复制虚拟机脚本_exsi6.7快速克隆centos-程序员宅基地

文章浏览阅读1.3k次。拷贝虚拟机文件时间比较长,因为虚拟机 flat 文件很大,所以要等。脚本完成后,以复制虚拟机文件夹。将以下脚本内容写入文件。_exsi6.7快速克隆centos

好友推荐—基于关系的java和spark代码实现_本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。-程序员宅基地

文章浏览阅读2k次。本文主要实现基于二度好友的推荐。数学公式参考于:http://blog.csdn.net/qq_14950717/article/details/52197565测试数据为自己随手画的关系图把图片整理成文本信息如下:a b c d e f yb c a f gc a b dd c a e h q re f h d af e a b gg h f bh e g i di j m n ..._本关任务:使用 spark core 知识完成 " 好友推荐 " 的程序。

南京大学-高级程序设计复习总结_南京大学高级程序设计-程序员宅基地

文章浏览阅读367次。南京大学高级程序设计期末复习总结,c++面向对象编程_南京大学高级程序设计

4.朴素贝叶斯分类器实现-matlab_朴素贝叶斯 matlab训练和测试输出-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏12次。实现朴素贝叶斯分类器,并且根据李航《统计机器学习》第四章提供的数据训练与测试,结果与书中一致分别实现了朴素贝叶斯以及带有laplace平滑的朴素贝叶斯%书中例题实现朴素贝叶斯%特征1的取值集合A1=[1;2;3];%特征2的取值集合A2=[4;5;6];%S M LAValues={A1;A2};%Y的取值集合YValue=[-1;1];%数据集和T=[ 1,4,-1;..._朴素贝叶斯 matlab训练和测试输出

Markdown 文本换行_markdowntext 换行-程序员宅基地

文章浏览阅读1.6k次。Markdown 文本换行_markdowntext 换行

错误:0xC0000022 在运行 Microsoft Windows 非核心版本的计算机上,运行”slui.exe 0x2a 0xC0000022″以显示错误文本_错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行-程序员宅基地

文章浏览阅读6.7w次,点赞2次,收藏37次。win10 2016长期服务版激活错误解决方法:打开“注册表编辑器”;(Windows + R然后输入Regedit)修改SkipRearm的值为1:(在HKEY_LOCAL_MACHINE–》SOFTWARE–》Microsoft–》Windows NT–》CurrentVersion–》SoftwareProtectionPlatform里面,将SkipRearm的值修改为1)重..._错误: 0xc0000022 在运行 microsoft windows 非核心版本的计算机上,运行“slui.ex