Некоторое время назад один наш заказчик обратился с проблемой массовой долгой печати 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 основных типа данных процессора печати :
- RAW — формат по умолчанию, не вносящий изменений в задание.
- Text — ANSI текст. Печать будет производится стандартным шрифтом устройства.
- EMF(Ennhanced MetaFile) – векторный формат графических файлов Windows, как правило более компактен чем RAW
Многие (если не все) производители поставляют вместе с пакетами программного обеспечения своих принтеров свои процессоры печати. Наглядно это видно на скриншоте окна выбора процессора печати и типа данных.

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

После этого локальный провайдер печати (Local print Provider) передает уже обработанное задание на соответствующий порт монитора печати (7), контролирующим порты по которым подключены принтеры, и далее задание преобразуется в соответствующий для принтера формат (например PCL) и отправляется на устройство (8).
По умолчанию в windows server 2008R2 и старших есть только два типа портов :
- Local port
- Standard TCP/IP port

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

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