前端调用打印机打印条码、二维码(一些坑)

时间:2024-02-21 19:10:13

1、首先电脑需要安装TSCActiveX控件;TSCActiveX.dll,TSCLIB.dll放入系统盘里(32和64)(我的打印机型号是TSC TTP-244 Pro);使用regsvr32去注册;

2、安装打印机的驱动程序;(网上很多)

3、ActiveX控件方法只支持IE浏览器;并且要设置浏览器对Activex的启用(默认是关闭的),否则会报AutoMation的错误;

4、实现打印二维码、条码的功能的代码:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script type="text/javascript">

        function TestFun() {
            
            var TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");
            TSCObj.ActiveXopenport("TSC TTP-244 Pro");
            TSCObj.ActiveXsetup("70", "40", "4", "15", "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 (500, 200, 48, 90, 0, 0, "Arial", "\u7f16\u7801");
            TSCObj.ActiveXwindowsfont(50,50,40,0,2,0,"Arial","商品名称:苹果");
            // TSCObj.ActiveXwindowsfont(50,120,40,0,2,0,"Arial","商品编码:12345678907456" );
            TSCObj.ActiveXbarcode("100","195","128","95","2","0","3","2",12345678907456); //条码
            //var cmd = \'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"\';
            var cmd = \'QRCODE 80,80,H,7,A,0,M2,S1,\"\'+"123456789"+\'\"\';
            TSCObj.ActiveXsendcommand(cmd);//二维码
            TSCObj.ActiveXprintlabel("1", "1");//(打印份数,每页打印张数)
            TSCObj.ActiveXclearbuffer();//清除
            TSCObj.ActiveXcloseport();//关闭打印端口
        }
    </script>
</head>

<body>
    <button onclick=\'TestFun()\'>测试</button> 
</body>

</html>