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

09-10 02:03
查看更多