web打印的最佳方案

web打印的痛点

winform打印的方案比较多,实现也比较容易,而且效果也非常炫;但现在越来越多的系统是web系统,甚至是移动端。网上也有非常的web打印方案,但各式各样的问题非常多,比如js兼容性,稳定性等一直缠绕着众多的程序员,或者就是web 打印需要浏览器安装 ActiveX 组件,ActiveX安装不容易成功等等问题。Lodop等插件还是收费的。

新的解决方案

对各种方案分析之后,对web在重业务场景的打印需求(比如直接打印,无预览直接打印,特定格式打印)梳理之后,确定了一个生产环节最佳的WEB打印方案,纯JS通过post提交数据到打印伺服器的方案。

  1. js可以脱离语言环境更通用,不管你是java,还是php,甚至只是个前端都毫无障碍;
  2. 使用http协议 psot模式更简单,门槛更低,几行代码搞定;其实使用webSocket协议也可以,但是在不需要长连接的情况下没有必要。

方案web页面实现源代码,源码

<html>
<head>
<title>宇田web打印demo</title>
<meta http-equiv="content-Type" content="text/html;charset=UTF-8"/>
</head>
<body>
<script>
function webprint(){
    
     
	var key1=document.getElementById('key1').value;
	var key2=document.getElementById('key2').value;
	var params = {
    
    "key1":key1,"key2":key2}; 
	httpPost("http://127.0.0.1:6555",params); 
}
function httpPost(URL,PARAMS) {
    
     
	var temp = document.createElement("form"); 
	temp.action = URL; 
	temp.method = "post"; 
	temp.style.display = "none"; 
	for (var x in PARAMS) {
    
     
		var opt = document.createElement("textarea"); 
		opt.name = x; 
		opt.value = PARAMS[x]; 
		temp.appendChild(opt); 
		} 
		document.body.appendChild(temp); 
		temp.submit(); 
		return temp; 
	}
</script>
宇田web打印demo<br>
webprint demo
<input  style="width:160px" id="key1">
<input style="width:160px" id="key2" >
<input type="button" id="button" value="打印" onclick="webprint()" />
</body>
</html>

打印伺服器demo及原理

打印伺服器demo下载
打印伺服器只需要监听上面代码中的端口6555,然后解析出打印参数就可以和桌面软件一样方便灵活可定制打印

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zyqytsoft/article/details/83905226