web打印的最佳方案
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,然后解析出打印参数就可以和桌面软件一样方便灵活可定制打印