web打印的最佳方案
- web打印的痛点
- 新的解决方案
- 方案web页面实现源代码,源码
- 打印伺服器demo及原理
web打印的痛点
winform打印的方案比较多,实现也比较容易,而且效果也非常炫;但现在越来越多的系统是web系统,甚至是移动端。网上也有非常的web打印方案,但各式各样的问题非常多,比如js兼容性,稳定性等一直缠绕着众多的程序员,或者就是web 打印需要浏览器安装 ActiveX 组件,ActiveX安装不容易成功等等问题。Lodop等插件还是收费的。
新的解决方案
对各种方案分析之后,对web在重业务场景的打印需求(比如直接打印,无预览直接打印,特定格式打印)梳理之后,确定了一个生产环节最佳的WEB打印方案,纯JS通过post提交数据到打印伺服器的方案。
- js可以脱离语言环境更通用,不管你是java,还是php,甚至只是个前端都毫无障碍;
- 使用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,然后解析出打印参数就可以和桌面软件一样方便灵活可定制打印