Web端调用本地打印机-JS实现

大概步骤:

1.安装打印机驱动,连接打印机

2.下载并部署TSCActiveX,下载地址 https://download.csdn.net/download/u010188178/10642451

3.编写JS代码(见页面下方)

存在不足:

1.仅支持IE浏览器

2.代码仅是尝试技术上的实现,并未根据业务进行优化,比如很多数据需要从后台获取并以参数的形式进行传入,目前是写死的数据

核心代码:

function printCode() {

var TSCObj;

TSCObj = new ActiveXObject("TSCActiveX.TSCLIB");//打印机使用的dll

//TSCObj.ActiveXabout(); // 打印机信息

TSCObj.ActiveXopenport("TSC TTP-247");//打印机名称,不能写错

//TSCObj.ActiveXdownloadpcx ("D:/myeclipseproject/filesManager/trunk/doc/02-参考资料/03-二维码打印机/01-开发帮助/PHP调用范例/TSCActiveX.DLL-PHP-Example/","123.PCX");

TSCObj.ActiveXsetup("80.6", "201", "4", "2", "1", "2.5", "0");//打印机设置

//TSCObj.ActiveXsetup("标签宽度","标签高度","打印速度","打印浓度(0-15)","感应器类别字串型,0 表示使用垂直間距感測器(gap sensor), 1 表示使用黑標感測器(black mark senso)","Gap/Black mark垂直间距(mm)","Gap/Black mark偏移距离(mm)");

//TSCObj.ActiveXformfeed();

//TSCObj.ActiveXnobackfeed();

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:字符串类型,打印文字内容。

*/

var now = new Date();

TSCObj

.ActiveXwindowsfont(200, 1300, 48, 90, 0, 0, "Arial",

"音乐节音乐节音乐节");

TSCObj.ActiveXwindowsfont(250, 1300, 48, 90, 0, 0, "Arial",

"时间:2018年9月3日" + now.toLocaleString());

TSCObj.ActiveXwindowsfont(300, 1300, 48, 90, 0, 0, "Arial", "场地:杭州体育馆");

TSCObj.ActiveXwindowsfont(350, 1300, 48, 90, 0, 0, "Arial",

"票价:¥10000.00");

/*

纠错级别:L、M、Q、H

*/

//var cmd = 'QRCODE 条码X方向起始点,条码Y方向起始点,纠错级别,二维码高度,A(A和M),旋转角度,M2(分为类型1和类型2),S1 (s1-s8,默认s7),\"1231你好2421341325454353\"';

//var cmd = 'QRCODE 60,30,H,7,A,0,M2,S1,\"\u7f16\u7801\"';

var cmd = 'QRCODE 200,600,H,7,A,0,M2,S1,\"码维二\"';

TSCObj.ActiveXsendcommand(cmd);

TSCObj.ActiveXprintlabel("1", "1");//(打印份数,每页打印张数)

TSCObj.ActiveXclearbuffer();//清除

TSCObj.ActiveXcloseport();//关闭打印端口

}

猜你喜欢

转载自blog.csdn.net/u010188178/article/details/82456780