Java中的远程打印模块
时间:2020-03-06 14:57:21 来源:igfitidea点击:
我正在开发一个基于Web的销售点界面的应用程序。
销售点PC(到目前为止,我尚不确定它是否将在Linux或者Windows上运行)必须添加有财务打印机,但是像任何Web应用程序一样,它是处理所有内容的服务器。服务器和PoS机器都在同一LAN上。
我必须通过使用串行端口的财务打印机实时发送销售数据,因此无法打印PDF甚至是网页。
有人告诉我,我可以有一个小应用程序来监听客户端上的Web服务,该应用程序进而与打印机而不是服务器或者浏览器进行通信,但是不知道如何进行操作。另外,我极有可能需要听取打印机的任何反馈(例如,由打印机生成的优惠券编号)并将其交还给服务器。
有任何想法吗?
解决方案
我做了几年类似的事情。前。但是在我的情况下,服务器和PC在同一局域网中。PoS是否在局域网内?如果是这样,我会向我们解释。
同时,如果我们涵盖了"小应用程序",则可以查看以下内容:
http://java.sun.com/j2se/1.4.2/docs/api/javax/print/PrintService.html
打印服务具有一种方法,可以发现正在其上运行的计算机中注册的打印机。因此,从应用程序服务器上收到消息后,我们只需执行与上面链接中显示的代码类似的操作即可:
摘自http://java.sun.com/j2se/1.4.2/docs/api/javax/print/PrintService.html
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT; PrintRequestAttributeSet aset = new HashPrintRequestHashAttributeSet(); aset.add(MediaSizeName.ISO_A4); PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, aset); if (pservices.length > 0) { DocPrintJob pj = pservices[0].createPrintJob(); // InputStreamDoc is an implementation of the Doc interface // Doc doc = new InputStreamDoc("test.ps", flavor); try { pj.print(doc, aset); } catch (PrintException e) { } }
这就是为什么有小程序。但是小程序在安全沙箱中运行。但是,如果为在Webapp中运行的applet赋予了正确的特权,则它可以打开套接字,写入文件,写入串行端口等。