Печать через интернет
Добавлено: 29 Апрель 2020, 19:27
Когда работаем в терминальном доступе через интернет, настройка печати на локальный принтер задача не очень простая. Тем более, если работа ведется через промежуточный компьютер и основной сервер не имеет вообще прямого выхода в интернет.
Давно хотел посмотреть эту тему, сегодня размялся. Идея известная. Сохраняем печатную форму в файл, перекидываем файл с сервера на удаленный компьютер, там печатаем. Сразу уточню, что речь идет про печатные формы (report структуру). При работе в офисных пакетах (Excel, Word или аналоги) обычно хватает буфера обмена. А вот оператору нужна печать.
Реализация получилась такая. В приложении для конкретного пользователя задаем признак печати через интернет и указываем каталог, в который скидывать файл, как на первом скриншоте. Когда этот пользователь формирует форму для печати, то в окне выбора принтера активируется кнопка печати через интернет. Это на втором скриншоте. Если нажать на нее, то программа молча сформирует файл. Я пока оставил doc файл, так как молчаливое объединение wmf страниц в doc уже было в наличии. Можно и на другой формат со временем переключиться. Причем пользователь сохраняет возможность печати и на серверном принтере, что тоже иногда надо бывает. Я подрихтовал шаблоны, чтобы данная возможность автоматически появилась во всех мастер процедурах используемых дизайнеров бланков.
Дальше работает небольшая утилита ФинСофт:Принтер. Она на третьем скриншоте. Одна копия ее запускается на сервере, вторая на удаленном компьютере. В принципе, для отладки можно закольцевать на один экземпляр. Со стороны сервера файлы отправляются на хостинг по ftp протоколу. А со стороны удаленного компьютера работа по http протоколу. Везде поставил таймер опроса раз в 5 сек.
На удаленном компьютере пингуется небольшой скрипт printer.php, лежаший на хостинге. Если есть что печатать, он возвращает имя первого найденного файла в каталоге для данного удаленного рабочего места. Файл скачивается и зачищается на хостинге. Затем посылается на печать. Для печати можно использовать OpenOffice. Там просто указывается опция -p в командной строке.
Сегодня немного погонял решение на свой принтер. Результат вполне приемлемый. Печать работает быстро. Субъективно, не медленнее, чем в локальной сети. Правда, печатные формы небольшие, обычные счета и накладные.
Давно хотел посмотреть эту тему, сегодня размялся. Идея известная. Сохраняем печатную форму в файл, перекидываем файл с сервера на удаленный компьютер, там печатаем. Сразу уточню, что речь идет про печатные формы (report структуру). При работе в офисных пакетах (Excel, Word или аналоги) обычно хватает буфера обмена. А вот оператору нужна печать.
Реализация получилась такая. В приложении для конкретного пользователя задаем признак печати через интернет и указываем каталог, в который скидывать файл, как на первом скриншоте. Когда этот пользователь формирует форму для печати, то в окне выбора принтера активируется кнопка печати через интернет. Это на втором скриншоте. Если нажать на нее, то программа молча сформирует файл. Я пока оставил doc файл, так как молчаливое объединение wmf страниц в doc уже было в наличии. Можно и на другой формат со временем переключиться. Причем пользователь сохраняет возможность печати и на серверном принтере, что тоже иногда надо бывает. Я подрихтовал шаблоны, чтобы данная возможность автоматически появилась во всех мастер процедурах используемых дизайнеров бланков.
Дальше работает небольшая утилита ФинСофт:Принтер. Она на третьем скриншоте. Одна копия ее запускается на сервере, вторая на удаленном компьютере. В принципе, для отладки можно закольцевать на один экземпляр. Со стороны сервера файлы отправляются на хостинг по ftp протоколу. А со стороны удаленного компьютера работа по http протоколу. Везде поставил таймер опроса раз в 5 сек.
На удаленном компьютере пингуется небольшой скрипт printer.php, лежаший на хостинге. Если есть что печатать, он возвращает имя первого найденного файла в каталоге для данного удаленного рабочего места. Файл скачивается и зачищается на хостинге. Затем посылается на печать. Для печати можно использовать OpenOffice. Там просто указывается опция -p в командной строке.
Сегодня немного погонял решение на свой принтер. Результат вполне приемлемый. Печать работает быстро. Субъективно, не медленнее, чем в локальной сети. Правда, печатные формы небольшие, обычные счета и накладные.