博思得打印机qx/300二次开发js实例

安装

安装只需要打印机驱动和对方提供的服务器软件,不需要配置其他

描述:

此方法是用js+对方提供的服务器软件(由js中 http://127.0.0.1:888/postek/print访问,打印时软件要启动才行)实现的,不需要设置浏览器activeX权限。实现跳转到打印页,点击打印
在这里插入图片描述

代码

index.html

<button onclick="openwinbutton()">跳转打印</button><br/>
function openwinbutton(){
 		$.ajax({   
 	         type: "POST",   
 	         url: 'http://localhost:8080/printbutton',   
 	         contentType:"application/json",
 	         data: '[{"pch":"00001","cpyt":"测试用","gg":"规格1","sl":"10","productdate":"2018-01-24"}]',   
 	         success: function(str_response) { 
 	         //实现新窗口展示打印页
 	        	var obj = window.open ("about:blank", "newwindow", "height=600, width=800, toolbar=no, menubar=no, scrollbars=no, resizable=no, location=no, status=no")
 	        	obj.document.write(str_response); //POST获取的返回写入新页面对象 
 	        	obj.focus(); 
 	        	obj.document.close() 
 	         }    
 	     });
 	}

http://localhost:8080/printbutton controller返回一个HTML页面

controller

@RequestMapping(value = "/printbutton",consumes = "application/json")
	public String doprintbutton(@RequestBody List<Map<String,String>> list , Model model,HttpServletResponse response) {
		System.out.println(list.toString());
		System.out.println(list.get(0).get("pch"));
		response.setHeader("Access-Control-Allow-Origin", "*");
        //map.put("hello", "欢迎进入HTML页面");
		model.addAttribute("list",list);
		return "printpage";
	}

printpage.html 用springboot的thymeleaf

	<script th:inline="javascript" type="text/javascript">
    	function doPrint(){
    		var listmap = [[${list}]];
    		for(i in listmap){
    			var map = listmap[i];
    			//alert("pch="+map.pch+",productdate="+map.productdate);
    			printNormalA(map);
    		}
    	}
function printNormalA(datamap){
	//alert("pch=//"+datamap.pch+",productdate=//"+datamap.productdate);
	var data = {};
	data.printlabel = "一般实验标签";
	data.reqParam = "1";
	data.lang = "zh";
	var arr = new Array();
	var printparamsJsonArray  = {};
	printparamsJsonArray.OpenPort = "255";
	printparamsJsonArray.PTK_ClearBuffer = "";
	printparamsJsonArray.PTK_SetPrintSpeed = "4";
 	printparamsJsonArray.PTK_SetDarkness = "10";
 	printparamsJsonArray.PTK_SetDirection="B";
	printparamsJsonArray.PTK_SetLabelWidth = "1200";
	//printparamsJsonArray.PTK_SetLabelHeight = "600,16,0,false";
	printparamsJsonArray.PTK_DrawRectangle ="50,40,5,1150,680";
	printparamsJsonArray.PTK_DrawTextEx = "80,30,0,3,1,1,N,打印第一个,0";
	arr.push(printparamsJsonArray);
	arr.push({"PTK_DrawLineOr":"50,168,1100,5"});
	arr.push({"PTK_DrawLineOr":"50,296,1100,5"});
	arr.push({"PTK_DrawLineOr":"50,424,1100,5"});
	arr.push({"PTK_DrawLineOr":"50,552,1100,5"});
	arr.push({"PTK_DrawLineOr":"400,40,5,640"});
	//'[{"pch":"00001","cpyt":"测试用","gg":"规格1","sl":"10","productdate":"2018-01-24"}]',   
	arr.push({"PTK_DrawTextEx":"70,60,0,6,3,3,N,AAA,0"})
	arr.push({"PTK_DrawTextEx":"70,188,0,6,3,3,N,AAA,0"})
	arr.push({"PTK_DrawTextEx":"70,316,0,6,3,3,N,AAA,0"})
	arr.push({"PTK_DrawTextEx":"70,444,0,6,3,3,N,AAA,0"})
	arr.push({"PTK_DrawTextEx":"70,572,0,6,3,3,N,AAA,0"})
	arr.push({"PTK_DrawTextEx":"420,60,0,6,3,3,N,"+datamap.pch+",0"})
	arr.push({"PTK_DrawTextEx":"420,188,0,6,3,3,N,"+datamap.cpyt+",0"})
	arr.push({"PTK_DrawTextEx":"420,316,0,6,3,3,N,"+datamap.gg+",0"})
	arr.push({"PTK_DrawTextEx":"420,444,0,6,3,3,N,"+datamap.sl+",0"})
	arr.push({"PTK_DrawTextEx":"420,572,0,6,3,3,N,"+datamap.productdate+",0"})
	arr.push({"PTK_PrintLabel":"1,1","ClosePort":""})
	//data.printparams = '['+JSON.stringify( printparamsJsonArray )+','+JSON.stringify( printparamsJsonArray2 )+']';
	data.printparams = JSON.stringify( arr );
	console.log(data.printparams);
	$.ajax({
		type: "POST",
		url: url,
		async:false,
		data:data,
		dataType:"json",
        timeout:5000, // in milliseconds
        success:function(result){
    		//var retdata = JSON.parse (result);
    		if (result.retval == '0') {
    			alert("发送成功");
                $("#printBtn").text("打印");
                $("#printBtn").removeAttr("disabled");
                numa++;
            } else {
            	alert("发送失败,返回结果:"+result.msg);
                $("#printBtn").text("打印");
                $("#printBtn").removeAttr("disabled");
            }
    	  },
    	 error:function(request, status, err) { 
    		 debugger;
			  alert("请求失败,请重试");
	          $("#printBtn").text("打印");
	          $("#printBtn").removeAttr("disabled");
		 }
	});
	
}
</script>

以下是thymeleaf实现的两列展示打印信息预览
<div th:text="${list.size()}"/>
<!-- <tbody th:each="article1,articlepa1 : ${#numbers.sequence(0,list.size()%2 == 0 ? list.size()/2 : list.size()/2+1)}"> -->
<tbody th:each="article1,articlepa1 : ${#numbers.sequence(0,(list.size()-1)/2)}">
<table border="1" >
	<tr>
		
			<td>
				<div th:each="article,articlepa : ${list}" th:if="${articlepa1.index*2} eq ${articlepa.index}">
					<table border="1" th:if="${articlepa1.index*2} eq ${articlepa.index}" >
						<tr>
							<td>AAA</td>
							<td th:text="${article.pch}" width="200px"> </td>
						</tr>
						<tr>
							<td>BBB</td>
							<td th:text="${article.cpyt}"></td>
						</tr>
						<tr>
							<td>CCC</td>
							<td th:text="${article.sl}"> </td>
						</tr>
						<tr>
							<td>DDD</td>
							<td th:text="${article.productdate}"> </td>
						</tr>
					</table>
				</div>
			</td>
			<td>
				<div th:each="article,articlepa : ${list}" th:if="${articlepa1.index*2+1} eq ${articlepa.index}">
					<table border="1" th:if="${articlepa1.index*2+1} eq ${articlepa.index}">
						<tr>
							<td>批次号</td>
							<td th:text="${article.pch}" width="200px"> </td>
						</tr>
						<tr>
							<td>产品用途</td>
							<td th:text="${article.cpyt}"></td>
						</tr>
						<tr>
							<td>数量</td>
							<td th:text="${article.sl}"> </td>
						</tr>
						<tr>
							<td>生产日期</td>
							<td th:text="${article.productdate}"> </td>
						</tr>
					</table>
				</div>
			</td>
		
	</tr>
	
</table>
<br/>

</tbody>
<button id="printBtn">打印</button>

效果预览
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值