关于web 服务打印

现有一个餐饮社区团购,团长使用浏览器打开线上商城登录自己的账户,当该团长有新订单时则打印订单,一个收银打印机,一个后厨打印机

web 打印一直是一个比较尴尬的问题,不过好在有很多第三方产品可供选择,至于哪一款更好相信每个人都有属于自己的“车”。

在解决问题过程中,本人选择了 Lodop 打印。这款插件完全满足以上需求 [ 除了水印之外 ]

设备及软件

Lodop:Lodop综合版(Lodop6.226+CLodop3.083) [ 2019-05-23 目前官网是这个 ]

打印机:Xprinter 80-c 网络打印机 [ 设置IP 的那种,-c是自动切纸 ]【 USB打印机不考虑,后厨可能会很远 】

Xprinter 查看打印机信息:先关机->按住FEED键不要松->开机->松开FEED键,则会打印打印机的相关信息
打印机默认端口:9100。
打印机默认IP:192.168.0.xxx
可以去Xprinter 官网下载测试工具
如果修改不了的话,就设置一下路由器LAN口与打印机相同,然后浏览器登录打印机IP进行设置,设置完成后再将路由器LAN口修改回来
eg:打印机默认IP:192.168.0.100
eg:路由器LAN口:192.168.1.1
eg:则需要将路由器LAN 口设置为:192.168.0.1
eg:设置完成后访问打印机IP 192.168.0.100 则可以看到设置页面类似下图:

需要解决的问题:

服务器端如何连接线下的打印机

解决方案:

web 服务器端:

1.下载 Lodop 软件
2.在web 服务器安装Lodop软件
3.将Lodop 的代码部署到web 项目首页页面 [ 方便监听订单 ]
4.在web项目首页页面编写打印票据的格式

Lodop 格式打印设计

5.写循环监听订单函数[ 当然是只监听登录商户的了 ]
6.服务端选择本地打印机序号进行定向输出打印 [ 虽然是在服务器写的代码,但这里的本地,指的是商户端 ]

获得打印设备和选择打印机输出
参考以上地址,发现 Lodop 可以获取本地打印机的个数以及打印机序号。那我们使用打印机序号进行定向输出打印就可以了。

团长端:

1.安装与web服务器同样的 Lodop 软件
2.安装打印机控件
3.设置打印机IP
4.设置好后,可尝试打印测试页进行校验是否连接正常
5.此时可以查看本地打印机的序号,参考服务器端第 6 步链接

以上步骤完成后,当团长在浏览器访问web 服务器地址时,因在web服务器页面引入 Lodop 控件,而团长本地也安装了打印机和Lodop 插件,所以当有新订单时,Lodop 会根据服务器端设置的团长端打印机序号选择团长端打印机进行定向输出打印

服务器端代码

Html 页面引入 [ head 头内 ]

    <script src="{__STATIC_PATH}Lop/LodopFuncs.js"></script><object id="LODOP_OB" classid="clsid:2105C259-1E0C-4534-8141-A753534CB4CA" width=0 height=0><embed id="LODOP_EM" type="application/x-print-lodop" width=0 height=0></embed></object>

Html 脚本 Script 内

 var LODOP;//团长端打印机序号var strPrinterName = [0,1];/*** 打印函数* @param printerPointer 打印机列表* @param data 数据* @constructor*/function PrintByPrinterName(printerPointer,data) {//遍历打印机序号for (var i = 0; i < printerPointer.length; i++) {//设置当前打印机 SET_PRINTER_INDEXAif (LODOP.SET_PRINTER_INDEXA(printerPointer[i])) {//遍历数据生成打印内容for(var j=0;j<data.length;j++){CreatePrintPage(data[j]);LODOP.PRINT();}}}}/*** 生成打印内容* @param item 数据item* @constructor*/function CreatePrintPage(item) {LODOP = getLodop();LODOP.SET_PRINT_MODE("PROGRAM_CONTENT_BYVAR",true);LODOP.SET_PRINT_PAGESIZE(3,700,45,'CreateCustomPage');//3高度自适应,700纸宽,45底部空白,CreateCustomPage自定义纸张类型LODOP.ADD_PRINT_TEXT(6,107,96,25,"故宫");LODOP.SET_PRINT_STYLEA(0,"FontSize",17);LODOP.SET_PRINT_STYLEA(0,"Horient",2);LODOP.ADD_PRINT_LINE(43,4,42,378,4,1);LODOP.ADD_PRINT_TEXT(56,29,58,33,"单号:");LODOP.ADD_PRINT_TEXT(56,63,310,33,item.order_id);LODOP.ADD_PRINT_TEXT(74,29,58,33,"日期:");LODOP.ADD_PRINT_TEXT(74,63,310,33,item.pay_time);LODOP.ADD_PRINT_TEXT(95,29,75,33,"名称");LODOP.ADD_PRINT_TEXT(95,119,75,33,"价格");LODOP.ADD_PRINT_TEXT(95,204,75,33,"数量");var marginTop=0;for(var k=0;k<item.detail.length;k++){//产品与产品间隙marginTop=k*20;LODOP.ADD_PRINT_TEXT(120+marginTop,29,75,33,item.detail[k].store_name);LODOP.ADD_PRINT_TEXT(120+marginTop,119,75,33,item.detail[k].price);LODOP.ADD_PRINT_TEXT(120+marginTop,204,75,33,item.detail[k].cart_num);}LODOP.ADD_PRINT_TEXT(145+marginTop,29,75,20,"总数量:");LODOP.ADD_PRINT_TEXT(145+marginTop,119,75,20,item.total_num);LODOP.ADD_PRINT_TEXT(211+marginTop,29,75,20,"支付方式:");LODOP.ADD_PRINT_TEXT(211+marginTop,88,100,20,item.pay_type_name);LODOP.ADD_PRINT_TEXT(167+marginTop,29,75,20,"应收:");LODOP.ADD_PRINT_TEXT(167+marginTop,119,100,20,item.total_price);LODOP.ADD_PRINT_TEXT(190+marginTop,29,75,20,"实收:");LODOP.ADD_PRINT_TEXT(190+marginTop,119,100,20,item.pay_price);LODOP.ADD_PRINT_TEXT(233+marginTop,29,75,20,"配送社区:");LODOP.ADD_PRINT_TEXT(233+marginTop,88,273,20,item.user_address);LODOP.ADD_PRINT_TEXT(273+marginTop,29,75,20,"联系方式:");LODOP.ADD_PRINT_TEXT(273+marginTop,88,273,20,item.user_phone);LODOP.ADD_PRINT_TEXT(294+marginTop,29,75,20,"联系人:");LODOP.ADD_PRINT_TEXT(294+marginTop,88,273,20,item.real_name);}/*** 监听新订单*/function listenNewOrder() {$.post("{:Url('listenOrder')}", {kid: {$kid}}, function (res) {var result = JSON.parse(res);if (result.code !==400) {var data=result.data,list=[];for(var i=0;i<data.length;i++){var idxData=data[i];var temp={pay_time:idxData.pay_time,order_id:idxData.order_id,pay_price:idxData.pay_price,pay_type_name:idxData.pay_type_name,total_num:idxData.total_num,total_price:idxData.total_price,pay_time:idxData.pay_time,user_address:idxData.user_address,user_phone:idxData.user_phone,real_name:idxData.real_name,pay_time:idxData.pay_time,pay_time:idxData.pay_time,detail:[]}var info=idxData._info;for(var j=0;j<info.length;j++){var product=info[j].cart_info.productInfo;var proInfo={cart_num:info[j].cart_info.cart_num,store_name:product.store_name,price:product.price}temp.detail.push(proInfo);}list.push(temp);}PrintByPrinterName(strPrinterName,list);}})}function checkKid(){var kid = {$kid};if (kid > 0) {setInterval("listenNewOrder()",5000)}}checkKid();

关于web 服务打印相关推荐

  1. Web Print打印服务

    Web Print打印服务 题目 一.安装打印服务 二.配置相关的打印机 三.配置证书并添加到打印机里 1.RouterSrv 2.IspSrv 提示:若需要单独全套笔记可私信我咨询 题目 Web P ...

  2. lvs服务器需要开启web服务么_Nginx+Keepalived实现web服务器高可用

    1.Nginx 业务背景 现公司需求快速搭建web服务器,对外提供给用户web服务. 需求拆分 需要基于http协议的软件,搭建服务实现 介绍 常见用法: 1) web服务器软件 httpd http ...

  3. soapui工具_基于开源的API测试工具!不再为web服务负载测试而发愁

    通过一个可视化.拖拽式的界面,LoadUI允许您实时.交互式地创建.配置和重分配负载测试.在单一测试环境下,LoadUI提供完整的测试覆盖,支持所有标准的协议和技术.它功能强大,能从任意数量的本地和远 ...

  4. 《深入Python》-11. HTTP Web 服务

    <深入Python>-11. HTTP Web 服务 11. HTTP Web 服务 出处: http://www.woodpecker.org.cn/diveintopython/htt ...

  5. WSE3.0构建Web服务安全(3):WSE3.0策略配置、证书、签名、与实例开发

    继WSE3.0构建Web服务安全(1):WSE3.0安全机制与实例开发和WSE3.0构建Web服务安全(2):非对称加密.公钥.密钥.证书.签名的区别和联系以及X.509 证书的获得和管理之后,今天我 ...

  6. golang 简单web服务

    1.golang print输入 package mainimport "fmt"func main() {fmt.Printf("Hello World!\n" ...

  7. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

    MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...

  8. 用TLS实现安全TCP传输及配置和访问https的web服务(转)

    tls相关 大致原理 为了让两个之间实现安全传输,(我们把服务端统一叫做TcpServer,客户端统一叫做TcpClient),TcpServer在listen完了accept之后要用一个证书来声明自 ...

  9. 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务

    http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/ 使用 Jersey 和 Apache Tomcat 构建 RESTful Web 服务 Y ...

最新文章

  1. 12月16日文章排行点评及编辑部训练
  2. 决策树和随机森林(下)
  3. sass玩转颜色总结笔记
  4. Postgresql ALTER语句常用操作小结
  5. 支付宝区块链授权专利212件 位居全球第一!
  6. 这是我的第一个博客,以后遇到问题一起解决
  7. 《5》CentOS7.0+OpenStack+kvm云平台部署—配置Horizon
  8. 《Cocos2D权威指南》——1.6 本章小结
  9. 6. PHP bcompiler
  10. Django中使用MySQL
  11. Linux基础——Web(三)Nginx反向代理2
  12. 信息系统安全等级保护 备案表
  13. 图片轮播插件slideBox
  14. 2021-2027全球与中国气溶胶粒径谱仪市场现状及未来发展趋势
  15. 腾讯云手游安全MTP怎么样?腾讯云手游安全MTP值得入手吗?
  16. php匹配地址中的省市区,php 正则匹配省市区
  17. 计算机原理探究第一部分教案,高中信息技术《计算机结构原理初步》教案
  18. 英语口语笔记B1-Unit7.交通出行-04-Train travel in Europe
  19. Unity Shader学习:SSAO屏幕环境光遮蔽
  20. VS--安装VS2010出现VC9.0 Runtime问题的解决方法

热门文章

  1. mysql errcode13_MySQL开启慢查询日志时报Errcode: 13 的解决方法
  2. 提高高职文学鉴赏课教学效果的途径
  3. 全分布式集群搭建流程(超详细)
  4. canvas操作图片 设置背景
  5. 云博览会虚拟线上展厅,数字经济下的产物
  6. 分布式系统慎用@Transactional注解
  7. 品牌咨询服务为公司定制策划:为品牌找准定位!
  8. 携手共进——再答丁又专老师
  9. C# PtrToStructure 封装C/C++动态库出现的问题
  10. 广东高中生多少人_18岁中国小伙单场70分,号称广东最强高中生