2008-10-01 39 views
2

我正在研究一個將運行基於Web的銷售點界面的應用程序。Java中的遠程打印模塊

銷售點PC(我不確定它現在是否會在Linux或Windows上運行)必須附帶財務打印機,但與任何Web應用程序一樣,它是處理所有內容的服務器。服務器和PoS機器都在同一個LAN上。

我必須實時發送銷售數據,並通過使用串行端口的財務打印機發送,因此打印PDF或甚至網頁不是一種選擇。

我被告知我可以有一個應用程序在客戶端上監聽Web服務,然後與打印機而不是服務器或瀏覽器交談,但是不知道如何去做。此外,我很可能需要聽取任何打印機反饋(例如打印機生成的優惠券號碼)並將其交回服務器。

任何想法?

回答

1

我做了一些類似於這個幾年的東西。前。但在我的情況下,在同一局域網中的服務器和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) { 
    } 
} 
0

這就是爲什麼你的小程序。但小程序在安全沙箱中運行。但是,如果給運行在webapp上的applet賦予適當的權限,它可以打開套接字,寫入文件,寫入串行端口等。

+0

不是真的,因爲小程序所在的網頁應該總是打開。使用Web服務的後臺獨立應用程序可以完成這項工作。 – OscarRyz 2008-10-01 01:42:28