Java远程打印模块

Java远程打印模块,java,printing,Java,Printing,我正在开发一个应用程序,它将运行一个基于web的销售点界面 销售点PC(目前我不确定它是否会在Linux或Windows上运行)必须附带一台财政打印机,但与任何web应用程序一样,它是处理所有内容的服务器。服务器和PoS机都位于同一局域网上 我必须通过使用串行端口的财政打印机实时发送销售数据,因此打印PDF甚至网页都不是一个选项 有人告诉我,我可以让一个小应用程序监听客户端上的web服务,这反过来会与打印机而不是服务器或浏览器进行对话,但却不知道如何做。此外,我很可能需要听取任何打印机反馈(例如

我正在开发一个应用程序,它将运行一个基于web的销售点界面

销售点PC(目前我不确定它是否会在Linux或Windows上运行)必须附带一台财政打印机,但与任何web应用程序一样,它是处理所有内容的服务器。服务器和PoS机都位于同一局域网上

我必须通过使用串行端口的财政打印机实时发送销售数据,因此打印PDF甚至网页都不是一个选项

有人告诉我,我可以让一个小应用程序监听客户端上的web服务,这反过来会与打印机而不是服务器或浏览器进行对话,但却不知道如何做。此外,我很可能需要听取任何打印机反馈(例如,打印机生成的优惠券编号),然后将其返回给服务器


有什么想法吗?

几年前我做了类似的事情。但在我的例子中,服务器和PC在同一局域网中。您的PoS机在局域网内吗?如果是这样,我会向你解释的

同时,如果您有“小应用程序”,您可以查看以下内容:

打印服务有一种方法来发现在其运行的机器中注册的打印机。因此,当您在应用程序上收到来自服务器的消息后,您只需执行与上面链接中显示的代码类似的操作:

摘自


这就是为什么你有小程序。但小程序运行在安全沙箱中。但是,如果为在webapp中运行的小程序授予了正确的权限,则它可以打开套接字、写入文件、写入串行端口等。

实际上不是这样,因为小程序所在的网页应该始终打开。使用Web服务的后台独立应用程序可以完成这项工作。
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) { 
    }
}