Модуль удаленной печати на Java - PullRequest
2 голосов
/ 01 октября 2008

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

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

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

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

Есть идеи?

Ответы [ 2 ]

1 голос
/ 01 октября 2008

Я сделал нечто похожее на это пару лет. тому назад. Но в моём случае сервер и ПК где в одной локальной сети. Ваш 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 голосов
/ 01 октября 2008

Вот почему у вас есть апплеты. Но апплеты запускаются в песочнице безопасности. Тем не менее, если апплету, работающему в веб-приложении, предоставлены необходимые привилегии, он может открывать сокет, записывать в файлы, записывать в последовательный порт и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...