前端调用打印机打印条码、二维码(一些坑)
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>