摘要
本期带给大家分享的是阿笨在实际工作中遇到的真实业务场景,请跟随阿笨的视角去如何一步步解决WEB网页快速批量打印,如果您对本期的教程内容感兴趣,那么请允许让阿笨带着大家一起学习吧!
废话不多说,直接上干货,我们不生产干货,我们只是干货的搬运工。
你准备好了吗,老夫要开始撸了
一、需求背景介绍
大概是2年以前工作中碰到的一个实际项目,在仓储物流系统中,打印是一个很频繁的操作环节,仓库每天经常需要大批量的在WEB网页上打印功能。比如内部HTML标签、邮递标签(10x10,10x16.5,10x20)、发货清单(A5)以及电池信和发票(A4)以及物流商返回的PDF格式的邮递标签文件,所以打印环节的快慢直接影响仓库操作人员的操作便捷性和仓库的发货效率。
1.1、大家都知道WEB网页上打印的过程:
一般分为:1、扫描包裹条形码后点击打印按钮=>2、在线弹出打印对话框=>3、选择对应的打印这三个步骤。
如果同时打印知识,假如一次性批量打印不同种类的SKU产品条码这种方式极大的繁琐给客户带来不友好的体验。
因此我们当时考虑将WEB网页打印方式能不能调整为桌面客户端打印实现,但是为了更好的与现有WEB网页业务系统集成,故又不想重新独立开发出一套客户端打印系统,那么我们能不能开发出一套打印组件,完全与业务逻辑分离只接管打印工作呢?
答案是:肯定OK!
1.2、WEB网页和WinForm桌面客户端打印的优缺点
WEB网页打印方式存在的缺陷:
1)、大批量打印SKU产品条码,会经常出现走纸偏移的问题,需要经常人工校验打印走纸;
2)、不能同时一次性打印不同规格的纸张,只能单个规格类型的进行打印;
等等。。。
WinForm桌面客户端打印优势:
1)、可以动态的切换本地默认打印机,实现根据配置文件自动匹配打印机无需人工选择,直接将打印默认文件发送指定的打印机;
2)、无需像浏览器一样安装单独PDF在线浏览插件,C#有程序的组件专门针对PDF文件格式打印;
等等。。。
1.3、那么我们今天要解决的问题可以总结为下面的一句话:
如何让WEB网页端和桌面客户端进行交互通讯?
二、实现原理图
草稿图
原理图
三、涉及覆盖的知识点
.NET WebService基本使用技巧;
WinForm中如何使用WebBroswer浏览器控件进行HTML页面的打印;
TCP/IP通讯组件SuperSocket实现服务端向指定的客户端推送(push)消息;
服务端crash或者重启后客户端如何实现自动断线重连;
Redis消息队列存储用户离线数据实现消息的持久化;
四、源代码在线演示和解读
在线观看地址:跟着阿笨一起玩NET
微信公众号:ABenDotNet