我正在开发一个具有基于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) {
}
}