Модуль удаленной печати на Java

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

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

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

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

Есть идеи?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
0
4 394
2

Ответы 2

Я делал что-то подобное через пару лет. тому назад. Но в моем случае сервер и компьютер находятся в одной локальной сети. Ваш 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) { 
    }
}

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

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

OscarRyz 01.10.2008 05:42

Другие вопросы по теме