Каким будет наиболее надежный способ захвата заданий печати по сети?

Я работаю в розничном магазине в маленьком городке. У нас есть счета для рабочих и водителей грузовиков, которые могут прийти, получить то, что они хотят, подписать бумаги и вернуться к работе. На самом деле это не проблема, но мой босс хотел, чтобы на прилавках были установлены планшеты для подписи, чтобы им приходилось подписывать только один раз, а не 4-6 раз за поездку. Я подумал и прочитал об этом, и я решил, что это будет не так уж сложно, поэтому я уговорил своего босса позволить мне попробовать запустить его. У меня был опыт работы с C # и AutoHotKey в прошлом, но почти не было опыта работы с сетью.

У меня сейчас работает большая часть моей программы, но она очень скудная и не очень эффективная, потому что я использую довольно ненадежный способ получения подписей. У меня в офисе есть компьютер с Linux, подключенный к коммутатору. На том же коммутаторе у меня есть старый принтер, на котором коммутатор зеркалирует пакеты и отправляет их на компьютер Linux. Tcpflow в Linux, который настроен на автоматический запуск и запуск 24/7, захватывает эти пакеты и сохраняет их в общей папке в сети. Сохраненные пакетные файлы могут быть легко преобразованы с помощью ghostscript из Postscript в формат PDF для подписи.

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

Иногда общий сетевой ресурс из Linux в Windows отключается в Linux, но это не совсем то, что я ищу в этом вопросе.

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

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

1
задан 23 March 2019 в 15:56
1 ответ

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

Фрагмент конфигурации Samba может выглядеть как

[PDFprinter]
        comment = Samba Virtual PDF Printer
        printing = LPRNG
        path = /var/spool/samba
        printable = Yes
        lpq command =
        lprm command =
        print command = /usr/local/bin/print2pdf /var/spool/samba/%s /home/%U

А простой PDF-принтер, который помещает выходные данные в пользовательский $HOME - вы можете изменить это, чтобы делать всевозможные вещи, и вы можете использовать любой язык сценариев, который может принимать входные/исходные документы из stdin - %s - это поток печати PS-данных, %U - это пользователь, который распечатал в общий доступ.

#!/bin/bash

bn=`date +%s`
ps2pdf "$1" "$2"/print_$bn.pdf

exit 0

Установите принтер, используя любой PostScript-драйвер принтера - мне нравятся драйверы HP color laserjet, выберите достаточно старую модель, и драйвер будет встроен в любую ОС, из которой вы его используете (я специально использую Color LaserJet 5/5m или 2500 series, Apple Color LaserWriter был хорош еще во времена XP. ...)

Я использовал подобную настройку печати для PHP-скрипта, который будет хранить PDF в дб в виде капли, посылать электронное письмо пользователю со ссылкой на веб-форму для сбора информации о титульном листе, посылать и получать факсы по hylafax и хранить входящие факсы в БД. На Pentium 200 w 32mb барабан, отправленный и полученный факс 75k в год для 30 человек страхового агентства.

Если IP & Share Name не будет работать и вам просто нужен чистый IP, то установите CUPS на Linux box и установите его собственный общий принтер, а затем повторно используйте его через CUPS - думаю, это позволит вам сделать простой IP и, возможно, номер порта, чтобы указать принтер для использования.

.
1
ответ дан 3 December 2019 в 23:06

Теги

Похожие вопросы