Инженерная мысль не останавливалась ни на секунду; с момента появления первого печатающего устройства опробована и введена в эксплуатацию масса новых технологий. На данный момент наиболее распространены следующие технологии печати:
Матричные принтеры постепенно доживают свой век, но, обладая удивительной простотой и надёжностью, продолжают ещё использоваться. С настройкой этого типа принтеров, за редкими исключениями, проблем не должно возникать.
Лазерные принтеры обладают высокой скоростью печати, незаменимы в офисах организаций всех типов. Моделей существует множество, но, к счастью, для большинства можно найти «родной» драйвер или подобрать совместимый.
Главный лозунг струйных принтеров «дёшево и в цвете». Так как в этой индустрии не появилось
явного лидера, то процветает множество стандартов и
существует вероятность иметь очень экзотический с точки
зрения Linux
принтер.
«Дёшево любой ценой». Используют компьютер вместо того, чтобы всё делать самим. Проблемы очень вероятны, так как протокол работы зачастую закрыт. К счастью, существует несколько моделей, напоминающих по интерфейсу полноценные принтеры, что позволяет всё-таки производить печать с низким разрешением.
Если вам доводилось работать в Microsoft Windows
, то вы прекрасно
знаете, что в комплекте с каждым принтером поставляется дискета
или компакт-диск с драйвером для настройки печати. К великому
сожалению, в мире UNIX
/Linux
пока так и не
договорились о едином стандарте драйверов. В настоящее время
стандартом де-факто является пакет ghostscript фирмы
Aladdin Software.
Ghostscript (далее GS) — это программа перевода
из векторного формата в растровый (RIP). На
вход программы подаётся документ в формате PostScript или
PDF, а на выходе получается документ на языке, понятном
конкретной модели принтера или графическое изображение
страницы. Большинство программ Linux
формируют документ в
формате PostScript, поэтому оказывается, что применения GS
вполне достаточно для обеспечения печати из приложений.
PostScript — это самый настоящий язык программирования,
который используется для того, чтобы описать содержимое
страницы. Например, пишутся такие серии команд: переместиться
туда-то, напечатать слово такое-то, сменить шрифт на
такой-то. Существуют модели принтеров, непосредственно
понимающие PostScript, для всех остальных требуется посредник,
и GS успешно с этим справляется. Вы спросите, как он
поддерживает столько принтеров? Дело в том, что количество
языков принтеров намного меньше количества существующих моделей. Например,
известные всем HP LaserJet
4
, 4L
,
5
, 5L
,
6
, 6L
,
1100
, 2100
«понимают» один и тот же язык
PCL5. Если вы не страшитесь этих слов и вам
любопытно посмотреть, какие драйверы языков поддерживает ваш
GS — дайте команду gs
--help
. Так, например,
ljet4 как раз и обслуживает вышеупомянутую
линейку моделей принтеров.
Итак, теперь понятно, как устроена печать в любом
дистрибутиве Linux
: программа формирует документ на языке PostScript, GS
переводит его на язык принтера, установленного в вашей системе, и
передаёт эстафету принтеру.
Но это ещё далеко не всё. А что если вам надо послать документ на принтер, установленный на другой машине, или напечатать сразу несколько документов и нет времени ждать, пока каждый из них будет обслужен ghostscript и уступит место следующему? Для этого существует так называемый сервер печати или спулер (от англ. spooler), обслуживающий очереди печати. Последний термин более точно отражает суть, поэтому им мы и будем пользоваться и писать дальше просто «спулер». В ALT Linux в качестве спулера работает современная система печати CUPS (Common UNIX Printing System), которая является фактическим стандартом среди спулеров.
В ALT Linux 3.0 у пользователя есть несколько способов настроить систему печати. Модуль настройки принтеров из ALT Linux Control Center предназначен для добавления/удаления принтеров (в том числе сетевых). Во многих случаях он позволяет определить тип принтера автоматически, а если это не удаётся, предлагает большой список поддерживаемых моделей. Чтобы произвести более тонкую настройку параметров печати, можно воспользоваться стандартными средствами CUPS. Есть также альтернативные способы добавления и удаления принтеров, например, средствами того же CUPS или foomatic. Дальше будет рассказано обо всём этом подробнее.
Запустите свой любимый броузер и откройте страницу http://localhost:631 — вы увидите интерфейс настройки CUPS. Выберите раздел
«Manage Printers», далее раздел «Add Printer». Затем у вас спросят имя и пароль
администратора CUPS; по умолчанию это администратор системы
(root
).
Появится первый диалог — достаточно указать имя (Name) принтера, описание (Description) носит вспомогательный характер, а местоположение (Location) нужно только в том случае, если у вас настроена сложная система разграничения доступа в CUPS. В следующем диалоге производится выбор устройства, к которому подключён принтер. Два последующих — выбор модели и производителя принтера. Напоследок можно заказать печать пробной страницы.
Конфигурационные файлы CUPS находятся в каталоге
/etc/cups
. Файл
/etc/cups/cupsd.conf
содержит описание
главных параметров сервера, каждый из которых сопровождается
подробным описанием. Приведём некоторые наиболее часто
используемые параметры:
Уровень подробности протоколирования. По умолчанию значение
равно info
. Если у вас какие-то
проблемы с CUPS, а в протоколе нет ничего информативного, можете поднять уровень до максимального — debug2
.
TCP-порт, по которому сервер будет
ожидать обращений клиентов. По умолчанию это
631
(зарезервированное для протокола
IPP).
Серия директив, аналогичных имеющимся в web-сервере
Apache. Order
— порядок просмотра значений Allow
и Deny
, Allow
—
адреса, с которых разрешён доступ, Deny
— адреса, с которых доступ запрещён. Пример:
<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 </Location>
Это означает, что сначала сервер будет смотреть, запрещён ли доступ с машины (здесь запрещено для всех), а потом — разрешён ли (здесь разрешён доступ только с самого сервера). Последний параметр понадобится для организации одного CUPS-сервера на всю локальную сеть. Организация доступа может быть устроена сколь угодно сложно благодаря поддержке концепции классов.
Файл /etc/cups/client.conf
содержит настройки для клиентской части. В нём указываются всего два параметра — местоположение сервера и защищённость
соединения. Скорее всего, вам не придётся там что-либо менять.
Файл /etc/cups/printers.conf
содержит
описание принтеров. Формат записи интуитивно понятен и похож
на XML. Ниже приведён пример настройки для
локального принтера.
<DefaultPrinter printer> DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>
Существенными параметрами являются Accepting
(принимает ли принтер задания) и DeviceURI
(специальное описание местоположения принтера). О том как
правильно составлять URI, будет рассказано
ниже, когда речь пойдёт о foomatic.
Описание каждого установленного принтера (соответствующий
PPD-файл) находится в
/etc/cups/ppd/
. При
каждом старте сервер проверяет, не появились ли в каталоге
имя_принтера
.ppd/usr/share/cups/model
новые описания принтеров (PPD-файлов) и
проверяет последовательные и параллельные порты компьютера. В
связи с этим запуск занимает некоторое время.
Сложно дать краткое описание того, что же такое foomatiс. Это и база описаний моделей принтеров, и интерфейс настройки одновременно. Более того, foomatic умеет настраивать практически все известные на сегодняшний день спулеры, в частности CUPS.
Процедуру настройки лучше всего рассмотреть на конкретном
примере. Пусть мы хотим настроить printer HP LaserJet 1100, расположенный на Microsoft Windows
-машине
somehost
в рабочей
группе somegroup
под именем someprinter
.
Сформируем URI, описывающее расположение
принтера. Общий формат:
.
Местоположение зависит от протокола.
протокол
://местоположение
Если принтер подключён локально, то URI — file://
, в
частности может быть указан файл-устройство (например,
путь_к_файлу
/dev/lp0
.
Если удалённый сервер работает под управлением Microsoft Windows
(наш случай), то URI —
smb://user:password@somegroup/somehost/someprinter
.
Некоторые поля в описании могут отсутствовать.
Наконец, в случае Netware-сервера URI —
ncp://user:password@server/printer
.
Посмотрим доступные описания моделей принтеров. Для этого запустим команду foomatic-configure -O | less. Описание будет выведено на экран в формате XML. Выделим подходящее описание:
<printer> <id>62816</id> <make>HP</make> <model>LaserJet 1100</model> <functionality>A</functionality> <autodetect> <parallel> <commandset>MLC,PCL,PJL</commandset> <description>HP LaserJet 1100 Printer</description> <manufacturer>Hewlett-Packard</manufacturer> <model>HP LaserJet 1100</model> </parallel> </autodetect> <drivers> <driver>ljet4</driver> <driver>stp</driver> </drivers> </printer>
Нас прежде всего интересует идентификатор-описание, заключённый в теги <id> — в нашем случае это 62816. Выберем также драйвер ghostscript — выбор того или иного драйвера дело опыта и вкуса. Мы остановимся на ljet4 — основной рабочей лошадке всего этого семейства принтеров.
Мы собрали теперь достаточно информации для того чтобы
произвести конфигурацию принтера. Это делается одной командой
foomatic-configure. Мы укажем
желаемый спулер (параметр -s
), имя принтера
(параметр -n
) идентификатор описания, драйвер
и URI.
# foomatic-configure -s cups -n Laser_Jet -p 62816 -d ljet4 -c smb://user:password@somegroup/somehost/someprinter
Вот и готово. Настройки можете посмотреть непосредственно в конфигурационных файлах спулера или при помощи команды foomatic-configure -Q.
<queues> <defaultqueue>printer</defaultqueue> <queue foomatic="1" spooler="cups"> <name>Laser_Jet</name> <printer>62816</printer> <driver>ljet4</driver> <connect>smb://user
:password
@somegroup
/somehost
/someprinter
</connect> <description>HP LaserJet 1100</description> </queue> <queue foomatic="0" spooler="cups"> <name>lexmark</name> <connect>file:/dev/lp0</connect> </queue> <queue foomatic="1" spooler="cups"> <name>printer</name> <printer>62368</printer> <driver>ljet4</driver> <connect>file:/dev/lp0</connect> </queue> </queues>
Если вы слишком увлеклись настройками и теперь путаетесь между десятком заведённых принтеров, то самое время удалить лишние.
Удаление можно производить вручную, удалив описания из
конфигурационных файлов спулера
(/etc/cups/printers.conf
). Для CUPS
можно вновь воспользоваться Web-интерфейсом. Если вы использовали
foomatic, то полезно знать
команду
# foomatic-configure -sтип_спулера
-nимя_принтера
-R
где тип_спулера
— CUPS.