2008-10-01 5 views
2

Я работаю над приложением, которое будет заниматься веб-интерфейсом точки продажи.Удаленный модуль печати в Java

Пункт продажи ПК (я не уверен, на данный момент, будет ли он работать в Linux или Windows) должен иметь к нему фискальный принтер, но, как и любое веб-приложение, сервер обрабатывает все. Оба сервера и устройства PoS находятся в одной локальной сети.

Я должен отправить данные о продажах в режиме реального времени и через финансовый принтер, который использует последовательный порт, поэтому печать PDF или даже веб-страницы не является вариантом.

Мне сказали, что у меня может быть небольшое приложение, слушающее веб-службы на клиенте, которое, в свою очередь, разговаривает с принтером, а не с сервером или браузером, но не имеет понятия, как это сделать. Кроме того, я, скорее всего, буду слушать любую обратную связь с принтером (например, номер купона, который генерируется принтером) и передать его обратно на сервер.

Любые идеи?

ответ

1

Я сделал что-то похожее на это пару лет. тому назад. Но в моем случае сервер и ПК, где на одном и том же компьютере. Является ли ваш PoS в пределах lan? Если так, я объясню это вам.

В то же время, если у вас есть «небольшое приложение» охватывает вы можете посмотреть по следующему адресу:

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/PrintService.html

Служба печати есть способ открыть для принтеров, зарегистрированных в машине он работает. Таким образом, после получения сообщения от сервера в приложение, которое вы просто должны сделать что-то похожее на код, показанный в приведенной выше ссылке:

Taked из, 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, он может открывать сокет, записывать в файлы, записывать в последовательный порт и т. Д.

+0

Не совсем так, потому что веб-страница, на которой хранится апплет, должна всегда открываться. Фоновое автономное приложение, использующее веб-сервис, может выполнять эту работу. – OscarRyz 2008-10-01 01:42:28