Все приглашаются улучшить эту страницу, потому что я пишу пока чисто теоретически на основе сведений из Google.
Когда в очередной раз я задумался о том, как бы на тонком клиенте (который у нас сделан в виде обычной системы на основе Сизифа, загружаемой по сети или с локального диска) обеспечить предоставление подключенных к нему устройств печати в сеть, и в очередной раз поборолся со связкой Samba+CUPS+Ghostscript, занимающей кучу места и имеющей кучу возможности глючить, то выяснилось, что в LTSP, к примеру, тихо и преспокойно используется простая и надёжная технология – предоставление устройств печати по протоколу Socket API (Jet Direct?).
Существующие протоколы печати можно поделить на две части, в зависимости от того, располагается очередь печати на стороне клиента или принтера (серверы печати). К первым относятся LPD, Jet Direct?, App Socket? (по сути просто предоставляющие порт принтера в сеть), ко вторым – IPP (CUPS) и SAMBA (сложные программные продукты, осуществляющие буферизацию заданий, их перенаправление, учёт и пр.).
Для сети Jet Direct? – это устройство, имеющее IP-адрес и предоставляющее порт принтера по протоколу TCP/IP на порту 9100.
Преимущества перед IPP
Минусы:
Индустриальный стандарт Socket API, под названием Jet Direct? используется компанией HP в своих устройствах.
В CUPS настраивается через указание адреса принтера "socket://host:9100".
В Windows – через создание локального порта Stardart TCP/IP (Стандартный TCP/IP), выбрать HP Jet Direct?.
В первую очередь это используется в продукции HP – по протоколу Jet Print? работают её принт-серверы, которые могут быть как встроенные в принтер, так и внешние, допускающие подключение любого принтера к сети.
lp_server – программа, которая ожидает задания на порту 9100/TCP и перенаправляет их в порт принтера напрямую (параллельный порт /dev/lp0), без буфера.
Разрабатывается в рамках проекта LPRng.
Поддерживает параллельные (USB тоже?) и последовательные принтеры и запускается как сервис.
Пример запуска:
http://etherboot.sourceforge.net/p910nd/
p910nd может быть настроен для запуска через xinetd. Поддерживает только параллельный интерфейс (и USB?)
Использует port 9100 + n, получаемые задания направляет в порт напрямую, без буфера.
В CUPS настраивается как App Socket? protocol, адрес принтера указывается как socket://host:9100.
Настройка cups-принтера в Windows.
При настройке сетевого принтера указывается путь к принтеру в виде http://server:631/printers/название или http://server:631/classes/название, в зависимости от того, используются
ли классы принтеров. Посмотреть точный путь лучше через веб-интерфейс, перейдя на конкретный принтер.
Драйвер принтера выбрать HP Laser Jet? 1200 Series PS (MS), либо для своего принтера, но тогда нужно разрешать raw-режим в CUPS, раскомментировав в /etc/cups/mime.types строку
и в /etc/cups/mime.convs
Это действительно для CUPS до версии 1.4.
В свойствах принтера «Дополнительные параметры», нужно отключить внутренние шрифты принтера.
Пример использования с помощью программы netcat:
Часто используемый TCP/IP протокол, описанный в RFC 1179. Краткое описание:
Большой проблемой является невозможность узнать состояние принтера в процессе печати. Чтобы получить информацию об ошибке, необходимо установить повторное соединение.
Поддерживается Tektronix и некоторыми другими производителями. Он похож на Socket API, с некоторыми отличиями:
Ссылок на эту страницу нет