TSC 打印机开发TSPL黑底白字的打印以及一些问题

因公司需要实现产品标签批量打印,用的TSC TTP-244 Pro打印机;“黑底白字”的打印一直困扰着我,这次不管老板多爱惜标签纸又重复测试了之前的命令,得到“黑底白字”的效果;此文写给和我有同样需求的新人们。

TSC 是源自宝岛台湾的打印机,官方文档外文或繁体的,很难找到简体中文的(即时找到简体中文的,也可能是用工具将繁体转简体,大陆“数据类型”,繁体中文作“型别” 初次接触还难以理解);

废话不多说,先重点说问题如何解决的:

TSPL 命令有这样一个命令“REVERSE”:将指定区域反相打印。对就是用这条命令打印的;代码如下:

TSCObj.ActiveXwindowsfont (10, 660, 30, 0, 0, 0, "simhei", "质检合格");//
TSCObj.ActiveXwindowsfont (180, 660, 30, 0, 0, 0, "simhei", "\u68c0\u9a8c\u5458\u003a"+d.user);//检验员 //js我没有试过直接打印utf8的简中文是否可以打印,我用的是Unicode 汉子编码
TSCObj.ActiveXsendcommand('REVERSE 0,640,400,380');//反相打印

//前面两条都是字体字符打印命令
//利用最后一条反相打印命令就实现 黑底白字  的打印;要特别坐标位置和宽高尺寸要包含文字(如果想要实现黑白相间也可调整坐标和尺寸)

TSC 打印机开发TSPL黑底白字的打印以及一些问题_第1张图片

 

相关文档和方案:

TSC简体中文的文档也是相当紧缺,导致很多平台的上传者都要收费下载,在此替TSC感到可惜(他们放弃了特大的大陆市场);为了解决和我有阅读英文障碍类似的朋友的难题,整理粘贴出我做开发期间看到的文档网址和一些解决方案文章网址,如下:

TSPL简体中文文档(下载需要RMB但好在可以在线看):https://max.book118.com/html/2017/1203/142607214.shtm?k=overwrite

TSCLIB.DLL简体中文文档(曾看到一份官方网站繁体中文的比较全面,但是地址找不到了,知道的朋友欢迎分享出来):https://wenku.baidu.com/view/96f7978b680203d8ce2f2417.html?sxts=1547266637100

js调用TSC 的文章:https://blog.csdn.net/u010121228/article/details/72866417

TSCActiveX.dll和TSCLIB.dll 在哪里下载?(不要去踩那些收费的坑,官网有js需要的这两个文件我是在 PHP里下载的):http://www.chinatsc.cn/SC/support/support_download/TTP-244%20Pro#

 

我曾尝试用python 来做TSC 打印机的开发,但不熟悉python,卡在 “简体中文”的打印(打印不出中文),放弃了python的开发转用js。有知道的朋友欢迎帮忙解决!

我的demo:

(保留个手稿便于自己以后查阅)

/**
 * 标签打印
 * @param  {String} printerName 打印机名或网络路径 本机名:"TSC TTP-244 Pro";局域网路径:"\\\\ACER-PC\\TSC_TTP-244_Pro"
 * @param  {array}  data        打印的数据组:一次 最多传入量个组,两个组的时候代表平 同时打印两张标签
 * @return {[type]}             [description]
 */
function printQRcode_1(printerName,d){
    
    var TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//打印机使用的dll
    TSCObj.ActiveXopenport (printerName);//打印机名称,不能写错
    TSCObj.ActiveXsetup("100","90","4","8","0","2.5","0");//打印机设置
    //TSCObj.ActiveXsetup("标签宽度","标签高度","打印速度","打印浓度(0-15)","感应器类别字串型,0 表示使用垂直間距感測器(gap sensor), 1 表示使用黑標感測器(black mark senso)","Gap/Black mark垂直间距(mm)","Gap/Black mark偏移距离(mm)");
    
    TSCObj.ActiveXsendcommand("DIRECTION 1");  //设置标签方向 ,DIRECTION 1 左上角 (x,y)={0,0};DIRECTION 0 右下角 (x,y)={0,0};
    TSCObj.ActiveXsendcommand ("SET TEAR ON");
    TSCObj.ActiveXclearbuffer();
    //TSCObj.ActiveXsendcommand ("PUTPCX 0,0,\"123.PCX\"");
    /*
    1、ActiveXprinterfont采用机器内置编码通常用来打英文。
    2、ActiveXwindowsfont可以输出汉字,但是必须是系统中存在的字体。
    TSCObj.ActiveXprinterfont ("a","b","c","d","e","f","g");
    a:字符串,文字X方向起始点,以点表示。
    b:字符串,文字Y方向起始点,以点表示。
    c:內建字型名称,共12种(1: 8*12 dots 2: 12*20 dots 3: 16*24 dots 4: 24*32 dots 5: 32*48 dots TST24.BF2: 繁體中文 24*24 TST16.BF2: 繁體中文 16*16 TTT24.BF2: 繁體中文 24*24 (電信碼) TSS24.BF2: 簡體中文 24*24 TSS16.BF2: 簡體中文 16*16 K: 韓文 24*24 L: 韓文 16*16 )
    d:字符串,旋转角度
    e:字符串,X方向放大倍率1-8
    f:字符串,Y方向放大倍率1-8
    g:字符串,打印内容
    ActiveXwindowsfont(a,b,c,d,e,f,g,h)
    说明:使用Windows TTF字体打印文字。
    参数:
    a:整数类型,文字X方向起始点,以点表示。
    b:整数类型,文字Y方向起始点,以点表示。
    c:整数类型,字体高度,以点表示。
    d:整数类型,旋转角度,逆时针方向旋转。0-旋转0°,90-旋转90°,180-旋转180°,270-旋转270°。
    e:整数类型,字体外形。0:标签;1:斜体;2:粗体;3:粗斜体。
    f:整数类型,下划线,0:无下划线;1:加下划线。
    g:字符串类型,字体名称。如:Arial,Times new Roman。
    h:字符串类型,打印文字内容。
    */
    TSCObj.ActiveXwindowsfont (20, 30, 50, 0, 0, 0, "simhei", d.name);//产品名
    TSCObj.ActiveXwindowsfont (10, 100, 30, 0, 0, 0, "simhei", d.model);//
    TSCObj.ActiveXwindowsfont (140,100, 30, 0, 0, 0, "simhei", "\u51c0\u91cd\u003a"+d.specification+d.unit);//
    TSCObj.ActiveXwindowsfont (10, 160, 30, 0, 0, 0, "simhei", "\u6279\u53f7\u003a"+d.number);//
    TSCObj.ActiveXwindowsfont (10, 200, 30, 0, 0, 0, "simhei", "\u751f\u4ea7\u65e5\u671f\u003a"+d.dateManufacture);//
    if (d.criterion.length>1) {
        var h = 240;
        for (var i = 0; i < d.criterion.length; i++) {
            if (i<4) {
                if (i==0) {
                    TSCObj.ActiveXwindowsfont (10, h, 30, 0, 0, 0, "simhei", "\u6267\u884c\u6807\u51c6\u003a"+d.criterion[i]);//
                }else{
                    TSCObj.ActiveXwindowsfont (80, h, 30, 0, 0, 0, "simhei", d.criterion[i]);
                }
            }
            h = h+40;
        }
    } else if(d.criterion.length==1) {
        TSCObj.ActiveXwindowsfont (10, 240, 30, 0, 0, 0, "simhei", "\u6267\u884c\u6807\u51c6\u003a"+d.criterion[0]);
    }
    var cmd = 'QRCODE 90,360,H,5,A,0,M2,S5,\"'+d.url+'\"';//二维码的数据
 
    TSCObj.ActiveXsendcommand(cmd);
    
    
    TSCObj.ActiveXwindowsfont (10, 600, 30, 0, 0, 0, "simhei", "\u7ba1\u7406\u7801\u003a"+d.coding);//管理码

    TSCObj.ActiveXwindowsfont (10, 660, 30, 0, 0, 0, "simhei", "\u8d28\u68c0\u5408\u683c");//质检合格
    TSCObj.ActiveXwindowsfont (180, 660, 30, 0, 0, 0, "simhei", "\u68c0\u9a8c\u5458\u003a"+d.user);//检验员
    TSCObj.ActiveXsendcommand('REVERSE 0,640,400,380');//反向打印

    TSCObj.ActiveXprintlabel ("1","1");//(打印份数,每页打印张数)//debug 关闭打印
    TSCObj.ActiveXclearbuffer();//清除
    TSCObj.ActiveXcloseport();//关闭打印端口
}

 

你可能感兴趣的:(打印机二次开发)