大概步骤:
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();//关闭打印端口
}