четверг, 8 августа 2013 г.

Печать из терминального сервера на Host Based принтера. (HP 1120 MFP; HP 1132 MFP)


К поиску данного решения сподвигла поблема с печатью из терминального сервера Windows Server 2008 r2.
При использовании родных драйверов от принтеров, установленных на терминальный сервер, мы сталкивались с постоянным зависанием и отпадением спулера, что приводило к исчезновению принтеров у клиентов. Переход на easy print решает проблему со спулером, но возникает новая, некоторые принтеры не печатают через esyprint.

Задача:
Убрать зверинец драйверов с сервера.
Настроить печать через easy print, что бы исключить проблемы связанные с драйверами установленными на сервере.
Выводить печать на принтера, которые не работают с easy print​.
Итак, что надо для того что бы работал easy print:
 - .Net 3.0 Sp1 или выше, установленный на клиенте;
 - обновленный клиент РДП на компьютере пользователя;
 - установленный  XPS принетер на компьютере пользователя;

Описание основных настроек печати в терменале можно прочитать тут http://technet.microsoft.com/ru-ru/library/cc772270(v=ws.10).aspx
Как работает easy print http://blogs.technet.com/b/askperf/archive/2008/02/17/ws2008-terminal-services-printing.aspx​
Из нашего парка не печатают принтера HP 1132 MFP и HP 1120 MFP, их много, поэтому покупать другую модель не выгодно и дорого.
Из чтения статей, пришли к выводу, что данные принтера не содержать поддерживаемые языки печати, а являются Host Based принтерами. Полный перечень таких моделей можно увидеть по ссылке http://www-01.ibm.com/support/docview.wss?uid=nas1ba0863cfa6463903862569c10078c903. Из за отсутствия какого либо языка печати, XPS writer не может отправить задание на принтер. 
Для печати из терминального сервера на проблемные принтера решили воспользоваться  виртуальным принтером, с поддержкой языка Post Script, который будет перенаправлять печать на локальный принтер.
Есть достаточно старая статья, как настроить печать подобным образом. Основную идею  для реализации решения подчерпнули из нее. http://www.stat.tamu.edu/~henrik/GSPSprinter/GSPSprinter.html
Рецепт:
Для настройки нам потребуется:
GSPrint, являеться чатью GSView и его можно скачать с сайта http://pages.cs.wisc.edu/~ghost/gsview/
RedMon http://pages.cs.wisc.edu/~ghost/redmon/ - утилита для перенаправления портов.
Радует что все версии достаточно свежие, и поддерживают windows 7.
1.    Устанавливаем RedMon, GSPrintGSScript. Установка простая, Next-Next-OK
2.  настройкой привидеться немного повозиться. Для WinXp  нет никаких сложностей, для Win7 необходимо  будет обойти UAC.  Все действия по настройке выполняться с административными правами.




Что нам надо сделать, нам надо установить локальный принтер на новый порт RPT1. Для этого в окне установки локального принтера, выбираем создать новый порт Redirect Port
Если в Win7 вываливаться ошибка с кодом 0x0000001 при создании порта, значит у вас не выключен UAC. Для того  чтобы не выключать  контроль пользователей,  переходим в Панель управления, Администрирование и запускаем управление печати «Run As Administrator» и уже тут создаем новый порт.


      
 Далее выбираем драйвер принтера, нам нужен драйвер принтера с поддержкой postscript,  например HP LaserJet 5100 PS. В итоге мы получаем виртуальный принтер.

3.    Настраиваем конфигурационный файл GSPrint. В каталоге, где установлена программа создаем файл с именем gsprint.cfg и следующим содержимым
-noquery
-printer
\\tkachenko-os\HP LaserJet Professional M1132 MFP
-ghostscript
C:\gs\gs9.07\bin\gswin32c.exe -sDEVICE=mswinpr2 -dBATCH -dNoCancel -dNOPAUSE -dSAFER -sPAPERSIZE=a4 -sOutputFile="%1" –
Имя принтера  на который будет перенаправляться печать указывается без кавычек со всеми пробелами. Если принтер сетевой то указывается не имя принтера, прописанное в свойства принтера в общем доступа, а реальное имя принтера на компьютере.
C:\gs\gs9.07\bin\gswin32c.exe – путь к программе GSScript. Во многих статьях кроме пути к программе, никакие другие параметры не указываються, на одном из компьютеров  без них не работало,  выскакивало окно с предложением выбрать принтер. Так что тут методом подбора.
4.    Настраиваем порт.
В свойствах порта виртуального принтера необходимо прописать путь к программе GSPrint, выбрать способ вывода Program handles outputВ Arguments ставим - . Если у вас Winне забываем ставить галочку Run as User.
                        
                                
               Данных настроек обычно достаточно для успешной локальной печати и печати из терминального сервера.
Если во время отладки у вас в логах появляется ошибка Can't open Windows GDI printer driver скопируйте ветку реестра текущего пользователя  [HKLU\Software\Microsoft\Windows NT\CurrentVersion\Devices] в  ветку реестра [HKEY_USERS\.DEFAULT\Software\Microsoft\Windows NT\CurrentVersion\Devices].
При корректной настройке у вас должно печать локально через виртуальный принтер и на терминальном сервере через проброшенный виртуальный принтер.















Комментариев нет: