zoukankan      html  css  js  c++  java
  • Zebra 打印机模板实现模板标签打印

    好久没有这么专注的研究过一个东西了,当研究出来后久违的满足感!

    最近项目中需要用到标签打印,虽然与打印机的接口由其他设备外包商承接,但打印机型号的采购还是需要我们自己选择,且承包商也不愿做复杂的通讯接口,所以才有了后来的研究, 项目为了保险起见,我们还是需要验证一下技术实现方式和实现难度。

    当然由其他家各种品牌标签打印机,其中不乏特别简单通讯方式的,但最终选择了斑马的型号,原因很简单:便宜!

    此次测试的打印机型号为GK888t(虽不是最终项目上要用的型号,但据说斑马的通讯方式都一样)。

    现状:一台GK888t打印机(之前出现问题就是打印的不清晰,换了纸也不行,最终找到原因电源适配器小了,原来打印机很久没用,这次测试就随便找了个能用的适配器插上了,结果证明还是原装的靠谱啊)

        标签打印纸:若干;

        在这之前已实现两种打印方式:

            1. html模板直接打印。

            2. 另一就是程序中引用.nlbl模板,替换其中变量后发送至打印机实现带模板的打印。

        现在要实现: 将模板下载至打印机存储(可以断点保持),打印时直接向打印机发送模板中变量的值实现套用模板打印。

    1. 首先肯定是找供应商要相关资料:

          ZPLII语言.rar

      看完资料后发现两种方式可以实现我的诉求:1- GRF或PNG格式的标签模板(虽然zebra designer导出的是.lbl或.nlbl格式,这个目前还没弄明白怎么转换称这种格式)。2-格式标签的方式实现(本文描述该实现方式)。

    2. 准备实现

      首先看下文档中的描述:

      

      很清晰,但就是看不明白这一串串的指令是什么意思,先看图:

     

     接下来就现根据自己的一知半解解释一番:

    开头:^XA ;结尾:^XZ ;这是固定格式。

    ^DFR:FORMAT^FS 中DF为download format 即:下载保存格式的意思,就是下载格式到打印机,下载到打印机的什么位置呢? 看下图:

    这就明白了,然后冒号后面的FORMAT为这次下载的标签格式的名称(调用时要用),最后的^FS为指令域的结束符。

    然后下一句:^LH30,30 什么意思呢? 继续看图:

     这就很清晰了,其中FN1、FN2为参数名(调用时会用到)。

    好了,保存完模板,我们就该调用了!

    ^XFR:为调用模板,下载位置需要与保存位置相同,名称等一致。

    然后需要编辑参数与参数值的对应关系,其中参数FN1、FN2赋值时需加FD。

    现在为止,已经完成标签保存和调用了。但实际应用过程中发现。。。变量打印中文乱码。。。

    3. 解决标签格式打印中文变量乱码的问题

    首先看下当前打印机中都有哪些字体?

    发送命令:^XA^WD*:*.FNT*^XZ  则会打印出该打印机上保存的所有可用字体如下图

    发现,咦,有SIMSUN.FNT。据说这个可以打印中文。那就不用再下载字体了,且已经有标号1(如果没有,可通过命令^XA^CWM,E:SIMSUN.FNT^XZ 赋值,标号可自定义子母或数字(猜的)),如果需要下载字体可以参考:http://www.chongshang.com.cn/manual/ZPL_font.shtml 

    那么开始打印吧,从网上查找资料时发现如下信息:顿时如获至宝:

    ^XA
    
    
    ^CI26  //ASCII Transparency和多字节亚洲编码
    
    
    ^SEE:GB18030.DAT  //码表
    
    
    ^CW1,E:SIMSUN.FNT  //字体(宋体)
    
    
    ^FO200,200^A1N,48,48^FD中文^FS //打印文字
    
    
    ^FT448,288^BQ2,2,10^A1N,48,48^FD中文^FS  //打印二维码
    
    
    ^XZ

    那么就有了,改造一下模板命令试试吧:

    最终得到新模板命令如下

    ^XA
    ^DFE:FORMAT^FS                  // 下载保存模板
    ^LH0,0                       //原点
    ^FO12,121^GB643,0,1^FS             // 分割线
    ^FO12,173^GB643,0,1^FS
    ^CI26                       //ASCII Transparency和多字节亚洲编码
    ^SEE:GB18030.DAT                //码表
    ^CW1,E:SIMSUN.FNT                //字体(宋体)
    ^FO300,45^A1N,25,25^CI26^FD打印人:^FS    //其中A1N 表示使用标号为1的字体,后面的25,25 代表字体大小
    ^FO300,89^A1N,25,25^CI26^FD打印日期:^FS
    ^FO27,143^A1N,25,25^CI26^FD门店信息:^FS
    ^FO43,253^A1N,25,25^CI26^FD起始巷道:^FS
    ^FO43,199^A1N,25,25^CI26^FD订单编号:^FS
    ^FO18,40^A1N,33,25^FN1^FS
    ^FO39,102^A1N,35,35^FN2^FS
    ^FO420,45^A1N,33,33^FN3^FS
    ^FO149,148^A1N,30,30^FN4^FS
    ^FO356,148^A1N,30,30^FN5^FS
    ^BY2,3,120^FT37,429^BCN,,Y,N,,A
    ^FN6^FS
    ^FO210,254^A1N,28,28^FN7^FS
    ^FO210,200^A1N,28,28^FN8^FS
    ^FO420,200^A1N,28,28^FN9^FS
    ^FO420,93^A1N,28,25^FN10^FS
    ^PQ1,,,Y
    ^XZ

    调用一下试试: 

    ^XA
    ^XFE:FORMAT^FS
    ^FN1^FD首打^FS
    ^FN2^FD箱拣标签^FS
    ^FN3^FD吕笑笑^FS
    ^FN4^FD20126^FS
    ^FN5^FD京东2号店^FS
    ^FN6^FD202010291437001^FS
    ^FN7^FDSRM03^FS
    ^FN8^FD20201029001^FS
    ^FN9^FD2/9-36/60^FS
    ^FN10^FD2020-10-29 16:12^FS
    ^XZ

    成了:

    最后附上几个常用命令:

    删除标签模板 :^XA^IDE:FORMAT.ZPL^FS^XZ 

  • 相关阅读:
    Gitblit搭建及Git协作开发流程
    Windows平台使用Gitblit搭建Git服务器图文教程
    gitblit搭建git服务器
    IntelliJ IDEA手动配置连接MySQL数据库
    如何去掉Intellij IDEA过多的警告 设置警告级别
    修改和重置WAMP的phpMyAdmin密码
    phpMyAdmin中config.inc.php设置密码和修改密码的方法
    Oracle、Mysql、SqlServer创建表和给表和字段加注释
    java注释规范
    JAVA基础补漏--static
  • 原文地址:https://www.cnblogs.com/xiaoerlang90/p/13897951.html
Copyright © 2011-2022 走看看