null

О печати в windows

Некоторое время назад один наш заказчик обратился с проблемой массовой долгой печати pdf документов через принт-сервер.  Пришлось разбираться с устройством системы печати в Windows 

Данная статья позволит разобраться в основных параметрах и компонентах спулера и диспетчера печати windows.

Схематично компоненты и последовательность хода задания печати изображены на рисунке ниже.

Клиентская сторона

Отправляя документ на печать, клиентская машина вызывает GDI (Graphics device interface), который совместно с драйвером принтера (1) порождает задание для печати.

Полученное задание для печати направляется в спулер (2). Спулер на клиентской стороне направляет задание в Удаленный провайдер печати(3) (Remote Print Provider - является частью клиентской стороне процесса печати, посылающий серверу задание на печать ).

 

Серверная сторона

Поступающее на принт-сервер задание поступает в первый компонент диспетчера очереди печати — роутер (Print Router)

Print Router принимает поступившее задание и размещает его в доступный провайдер печати (print provider) (4).

 

Локальный провайдер печати (Local print Provider) – часть сервера печати, записывающая задание в файл очереди (что гарантирует сохранность задания, даже в случае дальнейшей недоступности принтеров) и опрашивающая процессор печати (print processor).
Включает в себя процессор печати (Print processor) и процессор разделительных страниц (Page separator processor).

 

Процессор печати получает задание на печать (5) и конвертирует задание в соответствии с типом данных (6) .

Всего существует 3 основных типа данных процессора печати :

  1. RAW — формат по умолчанию, не вносящий изменений в задание.
  2. Text — ANSI текст. Печать будет производится стандартным шрифтом устройства.
  3. EMF(Ennhanced MetaFile) – векторный формат графических файлов Windows, как правило более компактен чем RAW

 

Многие (если не все) производители поставляют вместе с пакетами программного обеспечения своих принтеров свои процессоры печати. Наглядно это видно на скриншоте окна выбора процессора печати и типа данных.

 

 

 

 

 

 

 

Более подробно о типах данных можно посмотреть здесь.

 

Процессор разделительных страниц (Page separator processor) добавляет разделительные страницы между заданиями, если разделители заданы.

Задается в Advanced свойствах устройства

 

После этого локальный провайдер печати (Local print Provider) передает уже обработанное задание на соответствующий порт монитора печати (7), контролирующим порты по которым подключены принтеры, и далее задание преобразуется в соответствующий для принтера формат (например PCL) и отправляется на устройство (8).

 

По умолчанию в windows server 2008R2 и старших есть только два типа портов :

  1. Local port
  2. Standard TCP/IP port

Для работы по LPR протоколу требуется сконфигурировать TCP/IP порт.

В windows server 2003 и ниже LPR порт был отдельным типом портов.

 

P.S. В нашем случае было решение было включением render print jobs on client computers, сменой процессора печати (Print Processor) с процессора печати вендора на winprint и сменой типа данных процессора печать с RAW на EMF.

К сожалению, в большинстве случаев подобных проблем поможет эмпирический поиск неисправностей, с последовательным перебором определенных параметров.