Можно ли с помощью Microsoft POS .NET отобразить вывод на сервере и просто отправить байты клиенту для печати?

Используя Microsoft POS.NET с печатью чеков Epson, можно ли создать чек для печати на сервере (на сервере установлены драйверы POS.NET и Epson, но нет подключенного принтера) путем записи байтов, которые должны были бы пойти на принтер в файл?

После этого мы хотели бы иметь возможность передавать их на клиентскую машину, на которой ДЕЙСТВИТЕЛЬНО установлен принтер, и все, что он делает, это поток байтов на принтер.

Все, что у нас есть до сих пор, это пример кода Epson, работающий на машине разработчика, я не вижу очевидного способа сделать «Печать в файл» или перехватить байты.


person RoboJ1M    schedule 10.01.2013    source источник


Ответы (1)


К сожалению для вас, OPOS изначально не предлагает эту функциональность. Ближайшим из них является «Режим страницы», когда вы устанавливаете принтер чеков или квитанций OPOS в состояние режима страницы, а затем все ваши команды печати буферизуются внутри объекта службы. Затем вы запускаете команду OPOS pageModePrint() для отправки всей квитанции на принтер позднее. Но OPOS не предлагает доступ к буферу, и поставщик может реализовать его любым способом (в том числе вообще не реализовывать эту возможность).

Чтобы решить вашу проблему, самым простым решением, которое я могу придумать, было бы проверить ваш сервисный объект, чтобы узнать, поддерживает ли он сетевую печать. Возможно, объект службы уже способен печатать на подключенном к сети принтере или на другом компьютере, на котором установлен принтер. Поставщик может предложить доступ к буферу Page Mode через команды DirectIO. Поставщик вашего принтера может предлагать их в качестве дополнительных (платных) функций, или он может предложить вам написать их по индивидуальному заказу. Если поставщик уже предлагает коммуникационную плату Ethernet для вашего принтера, скорее всего, у него уже есть все, что вам нужно. Спросить не помешает.

Если нет, вы, безусловно, можете написать свой собственный объект службы, чтобы выполнить задачу буферизации данных и сделать их доступными для вашего приложения. Конечно, нет ничего невозможного в том, чтобы вставить пользовательский объект службы в качестве «клина» между общими элементами управления и объектом службы, предоставляемым поставщиком, и разрешить пользовательский элемент управления с помощью метода DirectIO(). Однажды я сделал именно это, чтобы добавить функциональность буфера сканера, но я никогда не делал этого для чего-то столь же сложного, как принтер.

person John Deters    schedule 11.01.2013
comment
Спасибо, это слишком много работы для нехватки времени, мы собираемся сделать это на стороне клиента. Все это происходит в элементе управления ActiveX, который будет запускаться из IE, поэтому я хотел, чтобы там было как можно меньше, но такова жизнь! - person RoboJ1M; 14.01.2013
comment
Не удается получить объект сетевого принтера от поставщика? Можно ли сменить поставщика принтера, или оборудование уже развернуто? - person John Deters; 14.01.2013
comment
Уже развернут серийный номер Epson U950. Скорее бесполезно, они купили нам параллельную версию для разработки :( - person RoboJ1M; 18.01.2013
comment
Кроме того, все используют все в браузере, поэтому HTTP будет единственным разрешенным соединением. - person RoboJ1M; 18.01.2013