| 
					
				 | 
			
			
				@@ -0,0 +1,224 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import encodeToGb2312 from '@/utils/print-js/encodeToGb2312.min' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import {hexStringToByteArray} from '@/utils/print-js/function' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+export function createNew () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  var jpPrinter = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  var data = '' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  var command = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.name = '标签模式' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.init = function () { } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.addCommand = function (content) {  // 将指令转成数组装起 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let printData = encodeToGb2312(content) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    let code = hexStringToByteArray(printData) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (var i = 0; i < code.length; ++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      command.push(code[i]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   设置标签大小 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   pageWidght 标签宽度(单位毫米) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   pageHeight 标签高度(单位毫米) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setSize = function (pageWidght, pageHeight) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'SIZE ' + pageWidght.toString() + ' mm' + ',' + pageHeight.toString() + ' mm' + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 设置打印速度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // printSpeed 速度值(范围1-6) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setSpeed = function (printSpeed) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'SPEED ' + printSpeed.toString() + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setDensity = function (printDensity) { // 设置打印机浓度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'DENSITY ' + printDensity.toString() + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setGap = function (printGap) { // 传感器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'GAP ' + printGap.toString() + ' mm\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setCountry = function (country) { // 选择国际字符集 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      001:USA 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      002:French 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      003:Latin America 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      034:Spanish 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      039:Italian 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      044:United Kingdom 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      046:Swedish 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      047:Norwegian 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      049:German 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'COUNTRY ' + country + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setCodepage = function (codepage) { // 选择国际代码页 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      /* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      8-bit codepage 字符集代表 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      437:United States 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      850:Multilingual 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      852:Slavic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      860:Portuguese 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      863:Canadian/French 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      865:Nordic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Windows code page 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1250:Central Europe 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1252:Latin I 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1253:Greek 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1254:Turkish 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      以下代码页仅限于 12×24 dot 英数字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      WestEurope:WestEurope 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Greek:Greek 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Hebrew:Hebrew 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      EastEurope:EastEurope 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Iran:Iran 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      IranII:IranII 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Latvian:Latvian 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Arabic:Arabic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Vietnam:Vietnam 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Uygur:Uygur 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Thai:Thai 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1252:Latin I 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1257:WPC1257 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1251:WPC1251 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      866:Cyrillic 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      858:PC858 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      747:PC747 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      864:PC864 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      1001:PC100 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'CODEPAGE ' + codepage + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setCls = function () { // 清除打印机缓存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'CLS' + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setFeed = function (feed) { // 将纸向前推出n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'FEED ' + feed + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setBackFeed = function (backup) { // 将纸向后回拉n 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'BACKFEED ' + backup + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setDirection = function (direction) { // 设置打印方向,参考编程手册 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'DIRECTION ' + direction + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setReference = function (x, y) { // 设置坐标原点,与打印方向有关 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'REFERENCE ' + x + ',' + y + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setFromfeed = function () { // 根据Size进一张标签纸 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'FORMFEED \r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setHome = function () { // 根据Size找到下一张标签纸的位置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'HOME \r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setSound = function (level, interval) { // 控制蜂鸣器 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'SOUND ' + level + ',' + interval + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setLimitfeed = function (limit) { // 检测垂直间距 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'LIMITFEED ' + limit + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setBar = function (x, y, width, height) { // 绘制线条 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'BAR ' + x + ',' + y + ',' + width + ',' + height + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setBox = function (x_start, y_start, x_end, y_end, thickness) { // 绘制方框 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'BOX ' + x_start + ',' + y_start + ',' + x_end + ',' + y_end + ',' + thickness + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setErase = function (x_start, y_start, x_width, y_height) { // 清除指定区域的数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'ERASE ' + x_start + ',' + y_start + ',' + x_width + ',' + y_height + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setReverse = function (x_start, y_start, x_width, y_height) { // 将指定的区域反相打印 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'REVERSE ' + x_start + ',' + y_start + ',' + x_width + ',' + y_height + '\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setText = function (x, y, font, x_, y_, str) { // 打印文字 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'TEXT ' + x + ',' + y + ',"' + font + '",' + 0 + ',' + x_ + ',' + y_ + ',' + '"' + str + '"\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setQR = function (x, y, level, width, mode, content) { // 打印二维码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'QRCODE ' + x + ',' + y + ',' + level + ',' + width + ',' + mode + ',' + 0 + ',"' + content + '"\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setBar = function (x, y, codetype, height, readable, narrow, wide, content) { // 打印条形码 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'BARCODE ' + x + ',' + y + ',"' + codetype + '",' + height + ',' + readable + ',' + 0 + ',' + narrow + ',' + wide + ',"' + content + '"\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setBitmap = function (x, y, mode, res) {  // 添加图片,res为画布参数 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var width = parseInt((res.width + 7) / 8 * 8 / 8) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var height = res.height 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var time = 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var temp = res.data.length - width * 32 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var pointList = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    console.log(width + '--' + height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'BITMAP ' + x + ',' + y + ',' + width + ',' + height + ',' + mode + ',' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (var i = 0; i < height; ++i) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      console.log(temp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      for (var j = 0; j < width; ++j) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (var k = 0; k < 32; k += 4) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if (res.data[temp] == 0 && res.data[temp + 1] == 0 && res.data[temp + 2] == 0 && res.data[temp + 3] == 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pointList.push(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            pointList.push(0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          temp += 4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      time++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      temp = res.data.length - width * 32 * time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for (var i = 0; i < pointList.length; i += 8) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      var p = pointList[i] * 128 + pointList[i + 1] * 64 + pointList[i + 2] * 32 + pointList[i + 3] * 16 + pointList[i + 4] * 8 + pointList[i + 5] * 4 + pointList[i + 6] * 2 + pointList[i + 7] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      command.push(p) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.setPagePrint = function () { // 打印页面 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    data = 'PRINT 1,1\r\n' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    jpPrinter.addCommand(data) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 获取打印数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  jpPrinter.getData = function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return command 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return jpPrinter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |