Copyright © 2001 Курт Пфайфле
Разрешается копировать, распространять и/или изменять этот документ на условиях лицензии GNU для свободной документации, версии 1.1 или более поздней, опубликованной Фондом Free Software Foundation; без неизменямых разделов, без текста на первой странице, без текста на последней странице. Копия лицензии находится здесь the section entitled "GNU Free Documentation License".
В данном руководстве описывается система печати KDE - KDEPrint. С помощью KDEPrint приложения могут выводить документы на печать вне зависимости от того, какая низкоуровневая система печати используется в вашей системе.
Содержание
Список примеров
В данном руководстве описывается система печати KDE - KDEPrint. С помощью KDEPrint приложения могут выводить документы на печать вне зависимости от того, какая низкоуровневая система печати используется в вашей системе.
Следует отметить, что из всех систем печати наиболее подробно будет описана система CUPS. Автор знаком с ней лучше, чем с другими системами, она лучше других документирована, и KDEPrint лучше всего поддерживает именно её.
Последующие версии KDEPrint будут поддерживать также и другие системы, что будет отражаться и в данном руководстве.
Тем не менее, даже если используемая вами система описана недостаточно полно, вы можете воспользоваться модулем Диспетчер печати Центра управления KDE, который позволяет настроить параметры печати вне зависимости от используемой системы.
Lauri Watts, редактор документации KDE
Чтобы задать нужную вам систему печати из Центра управления KDE, выберите в нём пункт Система+Диспетчер печати и укажите систему, которую следует использовать. KDEPrint также может определить нужную систему автоматически.
Настройка системы печати из Центра управления KDE
Цель этой главы - дать технический обзор KDEPrint, которым могли бы пользоваться не только программисты.
KDEPrint - новый, революционный инструмент, обеспечивающий простой доступ к возможностям печати как для пользователей, так и для разработчиков KDE.
Вы можете получить доступ к функциям KDEPrint различными способами: через Диспетчер печати Центра управления KDE, через команду kprinter или через диалог, который выводится перед печатью документа.
KDEPrint - это не замена собственнно подсистемы печати, поэтому KDEPrint не обеспечивает использование демона печати и не осуществляет операции над данными, предназначенными для печати, такими как данные PostScript®.
KDEPrint является промежуточным слоем между демоном и установленной подсистемой печати и приложениями, использующими печать. KDEPrint обеспечивает общий интерфейс разнообразных поддерживаемых подсистем печати для пользователей и разработчиков KDE. В то же время приложение поддаётся широкой настройке.
KDEPrint прост в использовании как для разработчиков, так и для конечных пользователей KDE. Разработчики могут переносить свои приложения, с минимальными изменениями, для использования KDEPrint вместо старой «системы» печати Qt™. Пользователи могут легко выбирать и настраивать подсистему печати.
К сведению новых пользователей KDE: Qt™ - это основная библиотека и графический набор инструментов, используемый всеми приложениями KDE. Qt™ был создан норвежской компанией программного обеспечения TrollTech.
KDEPrint выглядит по-разному для разных людей.
KDEPrint предоставляет пользователям и/или администраторам, в зависимости от их прав, доступ к подсистемам печати (CUPS, LPD, RLPR, LPRng и т. д. ) через графический интерфейс KDE (GUI). Используя KDEPrint, они могут распечатывать документы, управлять заданиями принтера и демоном печати, и всё это - удобным способом.
Опытным пользователям понравится возможность подключать любой работающий фильтр для данных, предназначенных на печать, между выходными данными приложения и входными данными подсистемы печати.
Если приложению KDE необходим доступ к принтеру, разработчику не надо программировать функции печати. Версии KDE 2.2 и более ранние предоставляли этот сервис через класс QPrinter
библиотеки Qt™. Класс QPrinter
основан на «демоне печати» (LPD). Библиотека KDEPrint основана на более современной системе Common UNIX® Printing System (CUPS), в то же время она совместима с LPD и другими устаревшими системами печати. Она также «оставляет открытыми двери» для будущих разработок.
Чтобы использовать новый класс KDEPrint в приложениях, разработчикам KDE надо внести минимальные изменения в код программы: следует просто изменить название класса QPrinter
на KPrinter
. Стоит изменить один (!) символ в нескольких частях кода, и всё готово: приложение способно использовать все средства библиотеки KDEPrint.
Более амбициозные или более требовательные разработчики могут сделать большее: несмотря на то, что окно KDEPrint богато опциями настройки, они могут изменить диалоговое окно печати, добавив к нему дополнительную «закладку», где их расширения к стандартному KDEPrint будут чувствовать себя как дома.
Это последнее свойство в KDE не использовалось широко, так как разработчики не полностью сознают мощность KDEPrint. В ближайшем будущем ожидается нечто большее. Один пример я открыл для себя в приложении KCron. Оно позволяет вам редактировать задания системы через графический интерфейс. Разработчики реализовали свойство печати, позволяющее вам (или root
) выбрать, будут ли выполнены все задания печати из списка (для всех пользователей) или только отмеченные. Вы можете видеть возможности KDEPrint на следующих снимках.
На этом снимке показан пример окна утилиты KCron.
Диалоговое окно настройки опций печати KCron: дополнительная закладка, озаглавленная Опции Cron, которая относится к KCron, а не к KDEPrint; это специальное расширение, внесённое разработчиками KCron для удобства печати,
дополнение KCron к диалоговому окну KDEPrint.
Лёгкий в использовании интерфейс KDEPrint для всех поддерживаемых подсистем печати, конечно же, не снимает традиционные недостатки некоторых из этих систем. Но он сглаживает некоторые острые углы. Разные пользователи могут использовать разные системы печати в одном окне. Пользователь может переключаться «на лету», с помощью диалогового окна печати, между подсистемами печати, используемыми для разных заданий. (Это возможно, если различные установленные подсистемы печати не «перекрывают друг другу дорогу».)
Большинство пользователей UNIX® используют систему печати LPD. LPD обеспечивает только основные функции печати, является очень негибкой системой и не использует многие возможности, предоставляемые более современными системами печати, такими как CUPS. В то же время при работе с удалённой системой (например, с использованием протокола, основанного на TCP/IP), LPD не обеспечивает обратную связь, авторизацию, контроль доступа и поддержку шифрования.
KDEPrint может использовать CUPS для поддержки:
Опроса доступных принтеров, входящих в локальную сеть,
Использования всех видов авторизации,
Контроля доступа, основанного на IP-адресах, сетевых адресах, масках сети, именах хоста и доменных именах,
128-битном TLS- или SSL3-шифровании данных, предназначенных на печать, чтобы предотвратить нелегальный доступ к ним, или, как минимум, сделать это как можно более трудным.
Всё это делает KDEPrint намного более устойчивым и надёжным решением, чем использование почтенного LPD.
Вы можете запустить KDEPrint, или его части, различными способами:
через ваши приложения: вы можете вызвать диалог печати через пункт меню Файл+Печать... или нажав кнопку с изображением принтера; при этом выводится диалог печати.
по вводу команды kprinter в терминале или через окно командной строки: это также вызывает диалоговое окно печати.
нажав кнопку , запускающую KControl, и затем выбрав модуль Система+Диспетчер печати. При этом запускается модуль управления KDEPrint, который является частью Центра управления. Он предоставляет вам возможность перейти на другие части Центра управления.
набрав в командной строке (в Konsole или другом эмуляторе терминала) команду kcmshell
. При этом запустится модуль Центра управления, позволяющий вам изменить параметры printmgr
Запуск диалогового окна kprinter через окно Выполнить команду...
Вот снимок диалогового окна kprinter, каким оно появляется после запуска Kivio... Вы можете добавить новый принтер, нажав на маленькую кнопку Мастер (на этом изображении - красно-жёлтая).
Запущенный диалог kprinter (черновое изображение Kivio)
Новая система KDEPrint содержит много новых и приятных возможностей. С каждой новой версией программы с ней становится всё легче работать, она становится гибче в настройках.
«Мастер добавления принтера» позволяет легко добавлять и настраивать новые принтеры. Но если вам не нужна лёгкость и простота, вы всегда сможете сделать это вручную.
KDEPrint делает «обнаружение» принтеров совсем простым. Он может сканировать различные среды и очереди. В частности, будут доступны принтеры по протоколам TCP (AppSocket, или HP® JetDirect®, или IPP), SMB/Samba («разделяемые ресурсы» Windows®), а также через параллельный, последовательный или USB порты.
Этот мастер поможет вам быстро установить драйверы для принтера. Выбор, настройка и тестирование их будет лёгким как никогда на любой Linux® подобной системе.
Диспетчер заданий печати запускается kprinter автоматически. Его значок можно встроить в системный лоток KDE. Он позволяет также выполнять разнообразные действия над заданиями, если это доступно в используемой системе печати.
Вы можете:
Приостанавливать и возобновлять задания,
Перемещать незаконченные задания на другой принтер,
Отменять выполняющиеся задания.
Окно диспетчера заданий KDEPrint содержит следующую информацию: ID (номер) задания, целевой принтер, имя, владелец, состояние и размер задания, а также число страниц (которое подсчитывается CUPS - подробнее об этом см. в разделе об управлении страницами).
Диспетчер заданий печати KDEPrint
Эту информацию (и возможность управления заданиями) вы можете получить через KDE Control Center - Периферия+Принтеры. Если вы не видите панели с информацией о принтере под списком принтеров, выберите в контекстном меню Показать/Убрать описание принтера. Затем перейдите на вкладку Задания:
KDEPrint использует разные модули для реализации интерфейса с системами печати. Вот список систем печати, для которых есть готовые модули, которые могут быть ещё не полностью завершены:
LPD (в стиле BSD)
LPRng (Red Hat®, если вы используете его стиль BSD),
RLPR (консольная утилита LPR, которой не требуется файл printcap
.
«внешние» команды печати (Netscape® и пр.).
Наиболее полно реализована поддержка CUPS. Модули для других систем, таких как PLP, PPR и PDQ, возможно, будут доступны позже.
KDEPrint делает KDE более гибким. Она даёт свободу пользователям KDE. Теперь новые системы печати будут тесно интегрироваться с CUPS.
Некоторые возможности KDEPrint зависят от выбранной системы печати. KDEPrint выступает лишь посредником между приложениями KDE и системой печати. Некоторые возможности могут отсутствовать потому, что они ещё не реализованы командой разработчиков KDEPrint, однако это временно.
Некоторые преимущества KDEPrint не зависят от системы печати, например «специальные» или «виртуальные» принтеры, а также «фильтры».
В диалоге печати вы можете выбрать просмотр. Для этого печатаемый файл проходит через некоторые фильтры, которые позволяют его просмотреть в KGhostView.
Особенностью KDEPrint является возможность использования «специальных» или «виртуальных» принтеров:
Их возможности:
Конвертация документов в файлы PDF с помощью внешней программы.
Отправка письма с приложением в виде файла PDF.
Сохранение документа в формате PostScript®.
Отправка документа по факсу, используя внешнюю программу, такую как Hylafax.
«Специальные» принтеры находятся в списке «обычных» принтеров в диалоге печати. Принтеры настраиваются для каждого пользователя отдельно.
В KDEPrint содержатся необходимые возможности для определения и настройки ваших «фильтров». Они применяются перед передачей в систему печати, но после создания печатаемых файлов (PostScript®, текст и пр.) программой, из которой ведётся печать.
Есть несколько предустановленных фильтров:
«несколько страниц на листе»,
текстовый фильтр «Подсветка»,
и три фильтра для брошюр.
Вы можете создать фильтры любой программой, которая может обрабатывать файлы PostScript®, текстовые или изображения, и выдавать результат в одном из этих форматов.
Файлы настроек фильтров имеют формат XML, что делает лёгким правку последних опытными пользователями, кроме того их можно настроить через интуитивный графический интерфейс.
Это предустановленный фильтр KDEPrint. Вы можете распечатать с помощью него 1, 2 или 4 логических страниц на одном листе бумаги (в уменьшенном виде).
Это предустановленный фильтр KDEPrint. С помощью него можно создавать выход PostScript® с подсветкой синтаксиса (напр. для листингов кода), легко настраивать заголовки страниц.
Если ваш принтер может печатать с двух сторон, используя однопроходную или двухпроходную технологию, вы можете использовать «брошюрные» фильтры.
Убедитесь,.что принтер печатает точно вмещаясь в края страницы, напечатайте и согните листы точно пополам. Вы получите красивые брошюры.
Если у вас нет такого принтера, можете использовать два специальных фильтра и несколько действий.
В зависимости от модели, сначала используйте фильтр для печати «нечётных» страниц, затем вставьте бумагу обратно в правильном порядке и напечатайте чётные.
KDEPrint содержит модуль для работы с CUPS. CUPS - «Common UNIX® Printing System» (http://www.cups.org/), наиболее продвинутая, мощная и гибкая из всех систем печати в UNIX®-системах. Она базируется на протоколе IPP (Internet Printing Protocol), новом стандарте сетевой печати. Очевидно, что CUPS - система печати по умолчанию у Michael Goffioul, ведущего разработчика KDEPrint.
Опытные пользователи KDE могут быть знакомы с его утилитами qtcups и kups (разработанных вместе с Jean-Eric Cuendet). Это были графические интерфейсы для CUPS, особенно хорошо работавшие в KDE.
Пояснения для тех, кто не знаком с этими утилитами.
qtcups был графическим интерфейсом для командlp или lpr. При запуске qtcups открывался диалог, где вы могли выбрать принтер и параметры очереди. qtcups работал из командной строки, или взаимодействуя с приложениями.
kups выполнял задачи администрирования сервера и демона CUPS в графическом режиме CUPS. Вы могли добавлять, удалять, изменять, настраивать, запускать и останавливать принтеры, отменять, удалять, перемещать, останавливать и восстанавливать задания печати, изменять настройки демона, запускать, останавливать и перезапускать его.
Модуль CUPS в KDEPrint содержит все (и даже больше) функции qtcups и kups предыдущих версий KDE.
Вместо qtcups вы можете использовать команду kprinter. А вместо kups - kcmshell printers.
Модуль CUPS обеспечивает администрирование системы печати, как это раньше делал kups. Вы можете запускать, останавливать и настраивать демон CUPS, запускать, останавливать, добавлять и удалять «принтеры» (т.е. очереди принтеров - несколько очередей с разными настройками могут использовать один и тот же принтер).
Модуль CUPS обеспечивает доступ к «графической печати», как qtcups.
Вы можете использовать kprinter в любой программе, даже не для-KDE. Например: Netscape®, StarOffice, программы KDE после версии 2.2.
Иллюстрация использования команды kprinter вместо lpr... При этом путь к kprinter должен быть занесён в переменную окружения $PATH
, иначе введите полный путь к программе. Netscape® сохранит эти настройки, и в следующий раз вы сможете указывать параметры печати, вызванные из Netscape®, через диалог печати kprinter.
Вы также можете использовать kprinter из командной строки, при этом отобразится диалог с параметрами печати:
Не забудьте указать имя файла для печати: kprinter
. Это передаст CUPS Software Administrator Manual на kprinter./usr/share/doc/packages/cups/sam.pdf
Чтобы определит принтер по умолчанию, используйте параметр -d
: kprinter
. При этом вы всё равно сможете изменить принтер в диалоге.-d DANKAcolorC2000
/home/kurt/linuxtag2001-paper.ps
Вы можете не указывать файлы для печати в командной строке. При этом вы сможете выбрать таковые в открывшемся диалоге (кнопка Развернуть).
С kprinter вы можете использовать все возможности вашего принтера. Вам понадобится файл PPD (PostScript® Printer Description). Подробнее об этом читайте в разделе «Возможности печати, зависящие от устройств».
Уже сейчас KDEPrint - это простая, мощная и гибкая в использовании утилита печати, которая вполне способна сравниться по удобству с печатью в Microsoft® Windows®.
KDEPrint станет ещё лучше. Улучшится система поиска установленных систем печати.
Также будет доработан модуль LPRng.
Пишите разработчику - Michael Goffioul (kdeprint AT swing.be)
- если у вас есть предложения по улучшению системы печати.
Цель этой главы - введение в основы печати в целом и особенно в CUPS. Если вам это не нужно, то имеет смысл пропустить эту главу и сразу перейти к следующей. Вероятность того, что вы вернётесь обратно к этой главе, всё-таки существует, потому что иногда без дополнительных знаний не получается решить практическую проблему.
Печать - это один из наиболее сложных аспектов в информационных технологиях.
Было время, когда каждому разработчику программы, которая могла выводить данные на печать, приходилось писать свои собственные драйвера для принтера. Это было довольно сложно, так как разные программы имеют разный формат файлов. Даже программы с одинаковым предназначением, например, программы для обработки текста, часто не понимают форматов друг друга. Также не было общего интерфейса ко всем принтерам, и программисты обычно осуществляли поддержку только нескольких выбранных моделей.
Новое устройство, появляющееся на рынке, заставляло программистов писать новый драйвер, если они хотели, чтобы их программа поддерживала это устройство. Также для производителей было невозможно узнать точно, поддерживается ли их устройство какой-нибудь из известных программ в мире (хотя таковых было намного меньше, чем сегодня).
Поддержка десяти приложений и дюжины принтеров означала, что системному администратору приходилось иметь дело с 120 драйверами. Поэтому развитие унифицированных интерфейсов между программами и принтерами стало неотложной задачей.
Появление «языков описания страниц», общим образом описывающих графическое отображение чернил и тонера на листах бумаги (или на других устройствах вывода, таких как мониторы, фотолисты для печати и т.д.), было продвижением, которое начало заполнять этот большой пробел.
Одним из этих достижений явился PostScript®, созданный Adobe. Это означало, что программист мог сосредоточить усилия на написании программы, генерирующей языковое описание PostScript® страницы, отправляемой на печать этой программой, в то время как разработчики устройств могли уже создавать устройства, понимающие PostScript®.
Конечно, со временем появились и другие методы описания. Самыеважные соперники PostScript® - это PCL («язык управления печатью»), созданный Hewlett-Packard®, «ESC/P» от Epson и GDI, «графический интерфейс устройств» от Microsoft®.
Появление этих языков описания страниц во многом облегчило жизнь и способствовало дальнейшим разработкам. Хотя тот факт, что ещё остаются другие, несовместимые и конкурирующие друг с другом языки описания страниц, делает жизнь пользователей, администраторов, разработчиков и производителей достаточно сложной.
PostScript® больше всего используется в профессиональной печатной среде, такой как PrePress и др. В UNIX® и Linux® PostScript® - преобладающий стандарт PDL. Почти каждая программа генерирует PostScript®-образ страниц, когда вы нажимаете кнопку «Печать». Давайте взглянем на простой пример (самодельного) кода PostScript®. Ниже приведены описания двух простых рисунков.
Пример 4.1. Код PostScript®
%!PS 100 100 moveto 0 50 rlineto 50 0 rlineto 0 -50 rlineto closepath .7 setgray fill % first box over; next 160 100 moveto 0 60 rlineto 45 10 rlineto 0 -40 rlineto closepath .2 setgray fill
Это команды, управляющие воображаемым PostScript®-пером: провести линию определенной формы и заполнить фигуру разными оттенками серого. Первая часть переводится в на более понятный язык так: «Перейти к координате (100,100), нарисовать линию вверх, длиной 50, затем оттуда направо, потом вниз, и закрыть оставшуюся часть. Теперь заполнить нарисованную фигуру 70% серым цветом.»
Конечно, PostScript® намного сложнее, чем этот простенький пример. Это развитой язык со множеством операторов и функций. Вы можете даже заставить программы на PostScript® сосчитать число пи, отформатировать жесткий диск или сделать запись в файл. Однако главная ценность и сила PostScript® - это описание расположения графических объектов на странице. Он также может масштабировать, зеркально отразить, перевести, трансформировать, повернуть и исказить всё что вы можете себе представить на кусочке бумаги - символы разных шрифтов, фигуры, контуры, тени, цвета, линии, точки, растровые изображения...
Файл PostScript® - это представление одной или более страниц, которые нужно напечатать, в более или менее абстрактном виде. В идеале он должен был бы описывать страницы независимо от устройства отображения. PostScript® сам ничего не отображает - он существует на жёстких дисках и в памяти как код будущего отпечатка.
То, что вы видите на бумаге, это почти всегда «растровое изображение». Даже если ваш мозг предполагает, что ваши глаза видят линию: возьмите увеличительное стекло, и вы обнаружите множество маленьких точек... (в отличие от линий, которые были нарисованы с помощью пера на графопостроителях). И это единственное, что сейчас могут делать картриджи в современных принтерах на бумаге: просто ставить точки разных цветов, размеров, и разрешения, чтобы создать полный рисунок, созданный из разных узоров растровых рисунков.
Разные принтеры создают разные растровые рисунки. Если говорить про струйные принтеры, то, в зависимости от разрешения, количества используемых чернил (а хорошим принтерам надо семь разных цветов чернил, в то время как более дешевые обходятся только тремя), количества доступных форсунок (на некоторых головках их может быть более 100!), распыляющих чернила одновременно, «алгоритма размытия» и многих других факторов, конкретный формат растра и порядок передачи на картридж очень сильно зависит от конкретной модели используемого принтера.
Во времена LPD принтеры были аппаратами, которые «отбивали» ряды ASCII текста на длинной бумажной ленте, сложенной в зигзагообразную змею, которую принтер вытягивал из коробки под столом. Как все изменилось!
Перед тем, как окончательные растровые изображения лягут на бумагу, они высчитываются из абстрактного представления PostScript®. Этот процесс требует значительных компьютерных вычислений и называется растрированием, «Raster Imaging Process», или «RIP».
При работе с PostScript®-принтерами растрирование осуществляется самим устройством. Вы просто посылаете ему файл, а RIP-процессор принтера отвечает за правильное преобразование PostScript®-описаний страниц и нанесение их растровых изображений на бумагу.
Небольшие PostScript®-устройства имеют встроенный RIP-процессор, выполненный на специальном чипе. Часто в больших профессиональных принтерах есть RIP, реализованный программно внутри быстрой машины на основе Unix, обычно это машины на базе Sun SPARC Solaris или SGI™ IRIX®.
Но что будет, если у вас нет PostScript®-принтера?
Перед тем как посылать данные на печатающее устройство, вам надо будет сделать растрирование самим. При этом надо будет преобразовать PostScript®, сгенерированный вашей программой, в формат растра принтера. Для этого надо знать точный формат растра принтера, на котором вы собираетесь печатать.
Другими словами, вы не можете положиться на принтер в преобразовании PostScript®, и обработка становится более сложной. Для решения этой задачи вам нужно иметь программное обеспечение.
Именно этим и занимается пакет ghostscript, который присутствует на всех машинах с Linux®, *BSD и другими UNIX®, которые должны печатать на принтеры, не поддерживающие PostScript®: ghostscript - это интерпретатор PostScript®, программный RIP-эмулятор, способный осуществлять преобразование для различных устройств.
Для создания растровых рисунков из PostScript® ghostscript использует так называемые «фильтры». Таких фильтров существует уже довольно много, причём некоторые из них cпециально сделаны для конкретных моделей принтеров.Фильтр, специализирующийся на конкретном устройстве, часто развивался безсогласия или поддержки изготовителя. Не имея доступа к техническимтребованиям и документации, это было сделать довольно сложно, требовалось заново воспроизвести протоколы и форматы данных.
Не все фильтры ghostscript работают одинаково хорошо для своих принтеров. Всё же некоторые из более новых, подобно фильтру stp из проекта печати Gimp, дают превосходные результаты, приводящие к фотографическому качеству на одном уровне или даже лучшему, чем их аналоги - драйверы . Windows® Microsoft®
PostScript® - это вывод большинства прикладных программ для печати в UNIX® и Linux®. Фильтры-это настоящие рабочие лошадки в любой системе печати. По существу они создают правильные растровые рисунки из любого ввода для не-PostScript® принтеров и других устройств.
CUPS использует собственные фильтры, хотя они в целом основаны на ghostscript. Именно, фильтры pstoraster и imagetoraster прямо опираются на код из ghostscript. Все части этого старого кода в CUPS были реорганизованы в стройную систему модулей.
Следующий рисунок (сделанный при помощи Kivio) дает общий обзор фильтров и движков в CUPS. Пройдёмся по нему снизу вверх. Движки - это особые фильтры, они не преобразуют данные в другие форматы, а посылают готовые файлы на принтер. Для разных низкоуровневых протоколов существуют соответственно разные движки.
Помимо того, чтобы сгенерировать растровый рисунок, готовый к печати, что уже есть довольно сложная задача, любой программе необходимо использовать механизм спулинга (помещения в очередь) для того, чтобы выстроить по порядку разные задачи пользователей для различных принтеров и фильтров и послать их соответственно по назначению. Демон печати как раз этим и занимается.
Этот демон следит за порядком: он также контролирует исполнение заданий: даёт право пользователям отменить, остановить, перезапустить свои задания (но не задания других пользователей) и так далее.
Теперь, когда вы знаете как язык PostScript® (который описывает вёрстку страниц независимым от конечного устройства способом) преобразуется в растровый рисунок, вы можете спросить: Устройства растрового вывода могут очень сильно отличаться друг от друга: бумага бывает разных размеров, есть много украшений печати - заголовки, двусторонняя печать, поля и пр. Как это подходит к вашей модели принтеро-независимого PostScript®?
Ответ идет вместе с так называемым файлом PostScript® PrinterDescription (PPD). Файл PPD описывает все возможности, зависящие от устройства, которые могут использоваться определенной моделью принтера. Он также содержит кодированные команды, которые должны быть использованы для вызова конкретных возможностей аппарата. Но PPD - не тайные книги, это простые текстовые файлы.
PPD были придуманы фирмой Adobe для того, чтобы производителям было легче реализовывать свои собственные возможности PostScript®-принтеров, и в то же время придерживаться стандартных путей их создания. Формат PPD очень хорошо документирован и описан фирмой Adobe. Их спецификация фактически является открытым стандартом.
Вспомним, что расширенная печать PostScript® была первоначально разработана для использования только на системах Microsoft® Windows® и Apple Mac®. В течение длительного времени все возможности расширенной печати на современных принтерах были в принципе недоступны для Linux® и UNIX®. Использование CUPS всё изменило. CUPS связан с PPD, и поэтому существующие PPD могут быть приспособлены для всех систем, работающих при помощи CUPS.
Используя PPD, изготовители принтеров имели возможность вставить в свою продукцию такие аппаратно-зависимые возможности, как дуплексную печать, брошюрование, поля и т. д. Драйверы подгружают этот файл PPD просто как дополнительный конфигурационный файл. Таким образом, драйвер принтера узнаёт про доступные возможности устройства, и знает, как их вызывать. Драйвер также предоставляет их пользователю в графическом интерфейсе. Этот метод позволяет печатать аппаратно-независимые PostScript®-файлы и указывать возможности, доступные конкретному устройству при выводе на печать.
PPD первоначально не предполагались к использованию в UNIX® и Linux®-системах. Сами разработчики и не предполагали, что они будут использоваться в других системах, кроме как в системах, для которых они были разработаны: Microsoft® Windows® и Mac® OS. Но благодаря блестящему решению по полной поддержке существующей спецификации PPD CUPS сейчас позволяет пользователям Linux® и других Linux®-подобных систем использовать все возможности современных принтеров. Система печати KDE делает это использование даже более удобным, чем предполагали сами разработчики CUPS.
CUPS может использовать родные PPD для Windows®, прилагаемые при покупке PostScript®-принтеров. Обычно за это платить не надо, и они (PPD) могут быть переписаны из любого компьютера с Windows, с предустановленным PostScript® драйвером для конкретной модели принтера, или с диска, который поставляется с принтером. Также есть несколько мест в Интернете, откуда их можно скачать.
Теперь вы знаете, как PostScript®-принтеры могут использовать PPD. Но как обстоит дело с не PostScript®-принтерами? В CUPS есть такая особенность: используя тот же формат и структуру данных как в PPD в сфере PostScript®, она может описывать доступные опции заданий печати и для не -&PostScript; принтеров. Для собственных целей добавлено несколько специальных опций (а именно строка, определяющая фильтр, который нужно использовать для дальнейшей обработки PostScript®-файла).
Поэтому разработчики могли использовать те же программные решения для обработки файлов PPD для всех моделей принтеров. Конечно, авторы CUPS не могли полагаться на то, что все производители не PostScript®-принтеров вдруг выпустят файлы PPD. Им пришлось проделать огромную работу по написанию многих из этих файлов с нуля. Более тысячи таких файлов доступны в коммерческой версии CUPS, называемой ESP PrintPro.
Так или иначе, есть много специально сделанных для CUPS файлов PPD. Даже сейчас большинство этих файлов идёт не от производителей принтеров, а от разработчиков свободного программного обеспечения. CUPS проложила дорогу, и по ней пошли: если пару лет назад печать в Linux® и UNIX® была камнем преткновения, то теперь поддерживается широкий диапазон принтеров, включая 7-цветные струйники для высококачественной фотопечати.
Вы можете найти PPD для работы с CUPS и не PostScript® принтерами в Интернете:
Во-первых, зайдите на www.linuxprinting.org, где прямо в онлайне вы сможете сгенерировать PPD для любого принтера, поддерживаемого ghostscript. Тем самым вы сможете перейти на CUPS с минимальными усилиями. Если ваш принтер и так уже хорошо работал с печатью из ghostscript, то вы сможете подключить этот драйвер к CUPS и взять лучшее из обеих систем.
во-вторых, существуют CUPS PPD более чем для 120 моделей принтеров, которыми может управлять новый универсальный драйвер stp. (происходит от Stylus Photo). Он сейчас разрабатывается проектом gimp-печати, его основал Майк Свит, ведущий разработчик CUPS. Сейчас он доступен на gimp-print.sourceforge.net. Этот драйвер создает полноценное фотокачество на многих современных струйных принтерах, и может быть сконфигурирован на создание 120 CUPS-PPD при компиляции. Поддерживаются модели HP® Laser- и DeskJet, Epson® Stylus и Photo Color, а также Canon® и Lexmark®.
в третьих, есть и коммерческая версия CUPS от авторов CUPS: ESP PrintPro - вместе более чем с 2.300 драйверами принтеров. В неё входят и улучшенные фильтры imagetoraster и pstoraster.
CUPS позволяет производителям легко и недорого поддерживать их принтеры в Linux® и UNIX®. Модульная структура CUPS позволяет просто подключать дополнительный фильтры и использовать всю мощь CUPS.
Подробнее о всех возможностях CUPS можно прочитать в документации CUPS на http://www.cups.org/documentation.html и http://www.danka.de/printpro/faq.html. Страницы http://www.linuxprinting.org/ - это универсальный ключ ко всем вопросам печати в Linux® и UNIX®.
В течение долгого времени у разработчиков копилось неудовольствие на старый добрый LPD. Поэтому, чтобы его улучшить, возникло несколько новых проектов, среди которых самую большую известность завоевал LPRng. Из прочих стоит отметить PDQ, PPR, PLP, GNUlpr и RLPR. Но ни один из этих проектов не смог добиться чего-то заметного; большинство их воплощали возможности того же LPD с некоторыми расширениями, и все они были несовместимы друг с другом.
Пресытившись развитием этих отголосков почтенного BSD-шного LPD, Грант Тэйлор, автор Linux Printing HOWTO, в конце концов воскликнул: LPD Must Die! в своей «кампании по искоренению LPD».
Со стороны компаний также предпринимались попытки преодолеть хорошо известные слабости LPD. Начали возникать расширения LPD, и дело дошло до того, что Hewlett-Packard® попытался придать своему детищу HP® JetDirect статус нового стандарта протокола печати. Результатом явились новые несовместимости.
В конце концов обрела форму инициатива определения нового стандарта, общего для промышленности и IETF. Рабочая группа по печати, включившая в себя представителей производителей оборудования, поставщиков программного обеспечения и операционных систем, подготовила проект «Internet Printing Protocol», IPP. IPP версии 1.1 теперь утвержден как стандарт IETF и пользуется единодушной поддержкой компаний Европы, США и Японии. Большинство современных моделей принтеров имеют встроенную поддержку IPP в добавление к обычным протоколам печати LPR/LPD или JetDirect.
IPP снимает множество проблем, с которыми обычно имеют дело администраторы сети. Ранее в сложных сетевых конфигурациях подчас многие часы уходили на то, чтобы должным образом разрешить проблемы, связанные с печатью.
Создавая единый набор запросов передачи файлов и управления заданиями печати для принтеров и серверов, поддерживающих IPP, IPP является кроссплатформенным протоколом для всех ОС. Его внедрение, конечно, потребует времени, так как всё ещё в работе остаётся много старых принтеров. Поэтому в IPP предусмотрена обратная совместимость со всеми реализациями IPP. CUPS обеспечивает удобство печати по IPP во всех средах.
Особенно впечатляет его интеграция с другими проверенными протоколами IP. Будучи фактически расширением протокола HTTP 1.1 применительно к задачам печати, он очень легко встраивается в другие ныне развиваемые стандарты:
Аутентификация типа Basic, Digest и на основе сертификатов для пользователей сервисов печати.
Шифрование SSL3 и TLS для отправки данных.
Двунаправленное сообщение клиентов с устройствами печати с помощью запросов HTTP/IPP GET и POST.
Сервис каталогов LDAP для поддержания единой базы данных доступных принтеров, их возможностей и стоимости печати, а также доступа по паролю или по спискам доступа и т. д.
Печать по способу «Pull» (в отличие от обычного - «Push»), когда серверу или принтеру нужно лишь сообщить ссылку URL на документ, после чего тот автоматически скачивается из сети и печатается.
Если вы никогда не видели, как CUPS работает в сети, то вы будете очень приятно удивлены богатством открывающихся возможностей.
Допустим, что вы, сисадмин, поставили и настроили машину у себя в сети с KDE и CUPS, прицепив на неё дюжину принтеров и настроив их: PostScript®, лазерных, струйных и прочих. Пользователи KDE на этой машине очень довольны, они могут печатать в своё удовольствие, выжимая всё возможное из каждого принтера. Вы потратили два часа на настройку, чтобы всё заработало... и осталось ещё удовлетворить сотню прочих пользователей вашей сети. По два часа на машину? И так до следующего Нового года?
Нет. Отметьте один флажок в настройках машины с CUPS, чтобы она работала как сервер. Установите CUPS на всех остальных машинах как клиентов. К тому времени, когда вы вернётесь к первой машине, пользователи уже будут играть с настройками вашей дюжины принтеров на сервере. Все эти принтеры волшебным образом стали доступны клиентам на всех машинах.
Пользователи печатают, и при этом ни на одной машине не пришлось устанавливать драйверы и настраивать очереди печати.
Как же всё это так хорошо работает?
Ответ совсем простой.
Сервер CUPS отправляет в сеть широковещательные извещения имен всех доступных принтеров по протоколу UDP на 631 порт. Порт 631 включен в число портов, зарезервированных IANA («Internet Assigning Numbers Authority») для IPP. Все клиенты CUPS слушают сеть на 631 порту, поэтому они узнают о доступных принтерах и путях к этим принтерам.
Используя IPP, по сути - расширение HTTP версии 1.1, CUPS способна находить все объекты системы печати по их адресам - «Universal Resource Locators» или URL. Задания печати можно удалять или перезапускать, можно опрашивать принтеры, выполнять административные задачи на сервере. С помощью IPP CUPS обращается ко всем объектам по их адресам URL. Очень многое в CUPS доступно через веб-интерфейс, например, через Konqueror.
Клиенты имеют возможность «администрировать» и «использовать» все принтеры, которые им доступны, как будто бы они были установлены локально. Конечно, вы можете задавать ограничения в списках контроля доступа, так чтобы не каждый клиент мог распоряжаться принтерами по своему усмотрению.
Клиенты могут печатать, даже если нужный принтер или драйвер не установлены локально.
Как это возможно? Если клиент хочет использовать опции, специфичные для данного принтера, он отправляет запрос CUPS-get-ppd на сервер. Сервер возвращает все сведения о данном принтере, прочитанные из PPD-файла, хранящегося на сервере. Пользователь видит эти опции и выбирает нужные ему. Затем он отправляет файл для печати, как правило, это «сырой» PostScript®, приправленный специфичными опциями данного принтера. При этом используется IPP как транспортный протокол. Вся дальнейшая обработка, в особенности фильтрование для подготовки файла в формате принтера, осуществляется сервером. Все необходимые программы для этого - «драйверы» и «фильтры» - на сервере имеются.
Итак, клиент может печатать даже без локально установленного драйвера.
Обо всех изменениях на сервере, будь то добавление или изменение принтера, клиенты узнают сразу же, при этом никакой перенастройки не требуется.
Среди дополнительных возможностей CUPS стоит отметить способность «перераспределения нагрузки».
Если вы зададите одну и ту же очередь печати для двух или более серверов, клиенты будут отправлять задания не первый откликнувшийся сервер. Это приводит к автоматическому перераспределению нагрузки между серверами. Вы можете отключать от сети серверы для задач администрирования так, что клиенты вообще ничего не заметят.
В этой главе описаны основные возможности настройки KDEPrint. Речь будет идти по большей части о системе CUPS. Во-первых, автор знаком с ней лучше, чем с другими системами, а во-вторых, KDEPrint изначально лучше всего поддерживает именно её. Свежие версии KDEPrint поддерживают также и другие системы печати, что будет отражаться и в данном руководстве.
Перед тем как устанавливать какой-либо принтер, необходимо выбрать систему печати, которую вы собираетесь использовать. Это можно сделать либо из Центра управления (раздел Менеджер печати), либо из окна, которое появляется, когда вы хотите послать документ на печать.
Выберите в меню пункт ->->. Внизу вы увидите кнопку, с помощью которой вы сможете выбрать необходимую систему печати. Вам предлагается следующий выбор:
CUPS (Стандартная система печати UNIX®)
Печать с помощью внешней программы
LPR (Стандартная система печати BSD)
Система печати LPD для UNIX® (по умолчанию)
Система печати RLPR (печать на сервер печати LPD по сети)
Для того, чтобы воспользоваться той или иной системой, необходимо, чтобы на вашем компьютере она была запущена.
При первом запуске KDEPrint попробует автоматически определить используемую систему печати. Этот метод работает только со следующими системами:
CUPS: KDEPrint проверяет, работает ли служба CUPS
LPD: KDEPrint проверяет, работает ли служба LPD, а также существует ли файл printcap
.
Перед тем как выбрать необходимую систему, убедитесь, что соответствующая служба запущена. Автор очень рекомендует использовать именно CUPS.
После того как система печати была определена автоматически или выбрана пользователем, её смогут использовать все приложения KDE. Различные пользователи могут выбирать разные системы печати, если соответствующие службы запущены и совместимы друг с другом. Настройки системы печати индивидуальны для каждого пользователя и обычно хранятся в файле $
.HOME
/.kde/share/config/kdeprintrc
Этот файл не стоит редактировать вручную; все параметры печати доступны из диалогов KDEPrint.
Допускается даже выбор другой системы прямо перед печатью, из окна kprinter.
Выбрав нужную вам систему печати, вы можете работать с ней с помощью KDEPrint.
Выберите пункт меню ->->. В правой части окна вы увидите по крайней мере четыре значка принтеров. Это виртуальные принтеры; о них будет рассказано в других разделах данного руководства. Вы также увидите панель инструментов с тринадцатью значками, а также по крайней мере четыре вкладки внизу окна: Сведения, Задания, Свойства и Экземпляры.
Начните настройку сервера печати (так как вы выбрали CUPS, это эквивалентно настройке сервису CUPS), нажав на соответствующую кнопку. Вы можете найти ее, медленно перемещая мышь над кнопками и читая всплывающие подсказки. Она четырнадцатая слева или седьмая справа, на ней изображен гаечный ключ.
Откроется окно настройки сервера CUPS. Здесь сгруппированы все настройки, относящиеся к сервису CUPS. Файл настройки обычно находится здесь: /etc/cups/cupsd.conf
. Это обычный текстовый файл, используемый в нем синтаксисм очень похож на синтаксис файлов настроек веб-сервера Apache. Хорошей практикой является создание резервной копии этого файла на случай, если что-то пойдет не так:
cp /etc/cups/cupsd.conf
/etc/cups/cupsd.conf.bak
Так как графический пользовательский интерфейс для редактирования файла настройки — совсем новая функция, возможно, время от времени будет полезно заглядывать в исходный файл. Так что сохраните его, пожалуйста.
Это очень полезная новая функция. Если вы нажмете на кнопку с изображением небольшого вопросительного знака (Что это?) в строке заголовка окна, вы увидите, что форма курсора изменится. Теперь щелкните по какому-либо полю параметра cupsd: вы увидите, что значит этот параметр и для чего он нужен. В большинстве случаев вам будет сразу понятно, о чем идет речь, иначе вам придется обратиться к документации к серверу CUPS. Если ваш сервис CUPS уже запущен, вы можете прочитать документации в браузере по адресу http://localhost:631/documentation.html.
Если CUPS не запущен, но установлен в вашей системе, вы можете найти документацию в файловой системе. Точное расположение документации зависит от вашей операционной системы, но в Linux® обычно документация находится в каталоге /usr/share/doc/cups/
или /usr/share/doc/cups/documentation.html
.
Саму полную, подробную и свежую информацию вы всегда можете найти в оригинальной документации к CUPS. CUPS по динамике развития очень похож на KDE. В этот сервер постоянно добавляются новые функции. Некоторое время настроить их использование можно, только напрямую редактируя файлы настроек. Графический интерфейс KDEPrint может просто не успевать за разработкой CUPS.
Если вы захотите взглянуть на эту документацию к CUPS, знайте, что ее файлы обычно находятся в следующих местах.
Это пути для установки по умолчанию. В вашей операционной системе они могут быть другими. Например, может быть префикс /usr/local/
, однако иерархия файлов останется такой же.
/etc/cups/
Каталог с файлами настроек
/etc/cups/cupsd.conf
Файл настроек для сервиса CUPS.
/etc/cups/printers.conf
Файл настроек, содержащий информацию о локально установленных принтерах.
/etc/cups/ppd/
Каталог с файлами PPD для используемых вами принтеров.
Следующие ссылки доступны, только если ваш сервер CUPS уже запущен. Чтобы перейти к документации, введите в строке адреса браузера:
Это страница со ссылками на все остальные документы.
Руководство администратора сервера CUPS в формате HTML (на английском).
Руководство администратора сервера CUPS в формате PDF (на английском).
Онлайн-документация на сайте CUPS.
Следующие файлы — та же документация (но могут отсутствовать пиктограммы и рисунки), они доступны, даже если сервис CUPS не запущен. Однако эта система печати все равно должна быть установлена на вашем компьютере. Кроме того, в некоторых дистрибутивах эти файлы могут находиться в другом месте, вам придется найти их самостоятельно. Итак, документация к CUPS расположена в следующих каталогах файловой системы.
Эта документация доступна, даже если сервис CUPS не запущен, хотя, возможно, в некоторых HTML-файлах пиктограммы и рисунки будут отсутствовать.
Как уже говорилось выше, иерархия файлов не изменится, но в вашей операционной системе вся документация может просто находиться в другом месте.
/usr/share/doc/cups/documentation.html
Это страница со ссылками на все остальные документы.
/usr/share/doc/cups/sam.html
Руководство администратора сервера CUPS в формате HTML (на английском).
/usr/share/doc/cups/sam.pdf
Руководство администратора сервера CUPS в формате PDF (на английском).
Есть также несколько сайтов и конференций, где обсуждается CUPS (и вообще печать в Linux®) и где новички могут рассчитывать на совет:
Сайт CUPS.
LinuxPrinting.org: здесь находится руководство по настройке печати в Linux® и база данных принтеров для Linux®.
Наконец, вы можете посетить сайт KDEPrint, где найдете сопутствующую программе документацию: http://kdeprint.sourceforge.net/.
В следующем разделе вы шаг за шагом пройдете все этапы настройки CUPS с помощью KDEPrint.
Этот раздел еще не завершен.
Иерархический список, пиктограммы и обычный список.
Кнопки панелей инструментов.
Разные шрифты для разных принтеров.
Разные пиктограммы принтеров сообщают о разных свойствах принтеров.
Это окно настройки вашего сервера. Щелкнув по одной из пиктограмм в списке слева, вы откроете соответствующую ей группу настроек.
У каждого параметра есть значение по умолчанию. Эти значения позволяют CUPS работать как клиенту почтового сервера. Клиенты используют порт 631 для получения информации о CUPS-серверах, присутствующих в вашей локальной сети. Используя эту информацию клиенты могут начать печать без установки дополнительных драйверов или настройки принтеров.
Чтобы настроить сервер CUPS (который будет распространять информацию о себе в локальной сети), вам придется изменить некоторые значения.
Окно настройки сервера CUPS: начало работы.
Окно настройки сервера CUPS
Значения по умолчанию, уже введены в соответствующие поля, поэтому вам ничего не нужно делать, чтобы активировать их. Значения параметров изменяются обычным способом.
В конфигурацию сервера входят:
параметры работы с Сетью;
Все эти настройки будут описаны в следующих разделах данного руководства.
Основные настройки сервера сгруппированы в этом окне. Это:
Имя сервера
Администратор сервера
Пользователь (перемещено в Фильтр)
Группа (перемещено в Фильтр)
Имя пользователя - удалённого администратора (перемещено в Безопасность)
Все эти значения вы можете изменить. Нажмите на кнопку Краткая справка, чтобы получить небольшое объяснение того, зачем нужен каждый параметр.
Если вы не уверены в своих действиях, обратитесь к документации CUPS. Если ваш сервер CUPS уже запущен, документацию можно прочитать прямо в Konqueror, введя в строку адреса URL http://localhost:631/documentation.html.
Сначала ознакомьтесь с руководством администратора (на английском языке). Если сервер CUPS еще не запущен, найдите в своей системе каталог с документацией: обычно это /usr/share/doc/cups/
или /usr/share/doc/cups/documentation.html
.
Имя вашего сервера в сети. По умолчанию CUPS использует имя локальной машины. Чтобы изменить имя сервера по умолчанию, отредактируйте файл client.conf
.
Например, введите myhost.domain.com
.
Это имя узла, которым будут пользоваться клиенты. Если у вас возникнут какие-либо странные проблемы при попытке подключиться к серверу, введите сюда IP-адрес. Так вы можете избежать проблем с определением имени узла и упростить поиск других проблем.
Это адрес электронной почты, куда будут направляться сообщения о проблемах. Пл умолчанию может использоваться «root@hostname».
Можете, например, ввести root@myhost.com
.
Хотя краткая справка по этому параметру говорит только об отправке жалоб, по этому адреса можно отправлять и благодарности администратору за хорошую работу.
От чьего имени будет запускаться сервер. Обычно это lp
, но если нужно, вы можете вписать сюда другое имя.
Сначала сервер должен быть запущен от имени суперпользователя, чтобы установить поддержку IPP-порта 631. При запуске внешней программы, пользователь меняется.
Введите, например, lp
.
Это учетная запись пользователя UNIX® для запуска фильтров и CGI-программ. CGI-программы отвечают за веб интерфейс по адресу http://localhost:631/.
Для работы CUPS не нужно делать значением этого поля root
, поэтому никогда не делайте этого: это может быть опасным. Если кто-то обнаружит уязвимости в защите сервера: файловых фильтрах, драйверах принтеров или CGI-программах, он сможет выполнять любые команды в вашей системе с привилегиями суперпользователя. В поле Пользователь всегда вводите имя непривилегированного пользователя.
От имени какой группы будет запускаться сервер. Обычно это sys
, но если нужно, вы можете вписать сюда другое имя.
Введите, например, sys
.
Имя пользователя, которому разрешен доступ с других узлов сети. По умолчанию это remroot
.
Это имя будет появляться в файлах журналах и запросах на выполнение заданий для всех ресурсов сервера CUPS, к которым разрешен доступ без аутентификации. В остальных случаях будут использоваться имена зарегистрировавшихся пользователей.
Основные параметры журналирования сгруппированы в этом окне. Это:
Журнал доступа
Журнал ошибок
Журнал распечатанных заданий
Уровень журналирования
Макс. размер журнала
Эти настройки очень важны. Если у вас возникнут какие-либо проблемы, укажите уровень журналирования «Отладочная информация», перезапустите CUPS и посмотрите сообщения в журнале ошибок, возможно, это упростит понимание проблемы.
Журнал, в который записываются все попытки подключитсья к серверу. Если путь не начинается с наклонной черты (/
), он относителен каталогу сервера.
Вы можете также указать здесь syslog
, чтобы отправлять весь выводу этому сервису.
Введите путь, например,
./var/log/cups/acces_log
Формат этого файла — так называемый общий формат журналов («Common Log Format»). Приложения вроде Webalyzer или другие приложения анализа журналов могут создавать отчеты о загрузке сервера CUPS.
Чтобы включить в название файла журнала имя сервера, используйте %s. Пример:
./var/log/cups/access_log-%s
kurt@transmeta:~ >
tail
/var/log/cups/access_log
127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST /printers/ HTTP/1.1" 200 109 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST /admin/ HTTP/1.1" 401 0 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST / HTTP/1.1" 200 210 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "GET /ppd/DANKA_P450.ppd HTTP/1.1" 200 51021 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST /jobs/ HTTP/1.1" 200 246 10.160.16.45 - - [04/Aug/2001:20:11:39 +0100] "GET /printers/DANKA_P450 HTTP/1.0" 200 0 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST / HTTP/1.1" 200 80 127.0.0.1 - - [04/Aug/2001:20:11:39 +0100] "POST / HTTP/1.1" 200 139 10.160.16.45 - - [04/Aug/2001:20:11:40 +0100] "GET /cups.css HTTP/1.0" 200 198 127.0.0.1 - - [04/Aug/2001:20:11:40 +0100] "POST / HTTP/1.1" 200 139 10.160.16.45 - - [04/Aug/2001:20:11:39 +0100] "GET /printers/DANKA_P450 HTTP/1.0" 200 7319 10.160.16.45 - - [04/Aug/2001:20:11:40 +0100] "GET /images/title-logo.gif HTTP/1.0" 200 5729
Как видите, каждое обращение к серверу записывается на отдельной строке. Информация об обращении: IP-адрес клиента, дата и время обращения, метод обращения (POST или GET), запращиваемый ресурс, версия HTTP, используемого клиентом, код ответа и число переданных байтов. Код ответа 200 значит OK, 401 — авторизация не пройдена, поэтому в доступе к ресурсу было отказано. Более подробное описание этого формата можно найти в руководстве администратора CUPS.
Если путь не начинается с наклонной черты (/
), он относителен каталогу сервера. По умолчанию это /var/log/cups/error_log
.
Вы можете также указать здесь syslog
, чтобы отправлять весь выводу этому сервису.
Введите путь, например,
./var/log/cups/error_log
В части журнала ошибок, приведенной ниже, показана процедура печати тестовой страницы с уровнем журналирования «Общие сведения». Об уровнях журналирования читайте ниже.
kurt@transmeta:~ >
tail
/var/log/cups/error_log
I [04/Aug/2001:23:15:10 +0100] Job 213 queued on 'DANKA_P450' by 'root' I [04/Aug/2001:23:15:10 +0100] Started filter /usr/lib/cups/filter/pstops (PID 18891) for job 213. I [04/Aug/2001:23:15:10 +0100] Started backend /usr/lib/cups/backend/lpd (PID 18892) for job 213.
Если путь не начинается с наклонной черты (/
), он относителен каталогу сервера. По умолчанию это /var/log/cups/page_log
.
Вы можете также указать здесь syslog
, чтобы отправлять весь выводу этому сервису.
Введите путь, например,
./var/log/cups/page_log
В этом журнале каждой странице каждого задания отведена одна строка.
Вот как он может выглядеть:
kurt@transmeta:~ >
tail
/var/log/cups/page_log
GIMP_print_stp_HP kdetest 201 [03/Aug/2001:03:18:03 +0100] 4 1 GIMP_print_stp_HP kdetest 201 [03/Aug/2001:03:18:03 +0100] 5 1 GIMP_print_stp_HP kdetest 202 [03/Aug/2001:11:46:49 +0100] 1 1 GIMP_print_stp_HP kdetest 203 [03/Aug/2001:11:46:54 +0100] 1 1 DANKA_infotec_P450 kurt 204 [04/Aug/2001:03:29:00 +0100] 1 33 DANKA_infotec_P450 kurt 204 [04/Aug/2001:03:29:00 +0100] 2 33 DANKA_infotec_P450 kurt 204 [04/Aug/2001:03:29:00 +0100] 3 33 DANKA_infotec_P450 kurt 204 [04/Aug/2001:03:29:00 +0100] 4 33 DANKA_infotec_P450 root 205 [04/Aug/2001:19:12:34 +0100] 1 14 DANKA_infotec_P450 root 206 [04/Aug/2001:19:15:20 +0100] 1 1
Из этого листинга можно определить имена принтеров (GIMP_print_stp_HP
и DANKA_infotec_P450
), использовавшихся сервером, имена пользователей (kdetest
, kurt
и root
), идентификаторы заданий (от «201» до «205»), время печати, номера страниц и количество копий страниц. Например, в задании 204 было 4 страницы и 33 копии, а в задании 205 было 14 копий всего лишь одной страницы.
В вычислении количества страниц CUPS зависит от PostScript®, точнее, фильтра «pstops» (см. диаграмму в теоретическом разделе). Сам же фильтр pstops зависит от соответствия стандарту структурирования документов (Document Structuring Conventions, разработан Adobe), а за это отвечает клиент, отправивший запрос. В большинстве случаев, эта цепочка работает хорошо.
Однако такой подсчет страниц не ведется для непосредственных запросов к принтеру, так как в этом случае не используется не используются фильтры на стороне сервера и фильтр pstops обходится. Любое задание с непосредственным обращением к принтеру считается за содержащее одну страницу (и, возможно, несколько копий). Это касается, например, заданий отправленных серверу CUPS через Samba клиентами Microsoft® Windows®, так как эти задания уже корректно подготовлены для печати (там используются собственные драйверы принтеров).
Возможно, кто-то напишет удобный инструмент для анализа этого журнала. Такая программа должна создавать отчеты с графическим выводом наподобие Webalizer. Так вы сможете получить статистику использования принтеров, зависимости нагрузки на принтеры от времени суток, дня недели, количества пользователей и т. д. Не хотите этим заняться?
Определяет количество сообщений, записываемых в журнал ошибок. Вам доступны следующие варианты:
Запись любых событий.
Запись почти всех событий.
Запись всех запросов и изменений состояния.
Запись только ошибок и предупреждений.
Запись только ошибок.
Не вести журнал вообще.
Если вам нужно решить какую-то проблему или если вы хотите получше изучить CUPS, выберите один из первых двух вариантов. В журнале ошибок будет появляться гораздо больше записей. чем обычно (не только сообщений об ошибках).
Журнал ошибок можно использовать для наблюдения за тем, что CUPS делает, когда вы отправляете ему задание. Откройте Konsole и введите:
kurt@transmeta:~ >
tail
-f
-n
100
/var/log/cups/error_log
Будут напечатаны последние 100 строк журнала (-n
100
), кроме того, этот вывод будет постоянно обновляться, если будет обновляться файл журнала (-f
). Вот как может выглядеть этот вывод во время печати тестовой страницы (кое-что было удалено ради экономии места):
I [04/Aug/2001:23:15:12 +0100] Job 214 queued on 'DANKA_P450' by 'root'
D [04/Aug/2001:23:15:12 +0100] StartJob(214, 08426fe0)
D [04/Aug/2001:23:15:12 +0100] StartJob() id = 214, file = 0/1
D [04/Aug/2001:23:15:12 +0100] job-sheets=none,none
D [04/Aug/2001:23:15:12 +0100] banner_page = 0
D [04/Aug/2001:23:15:12 +0100] StartJob: argv = "DANKA_P450","214","root","KDE Print Test",
[....]
D [04/Aug/2001:23:15:12 +0100] StartJob: envp = "PATH=/usr/lib/cups/filter:/bin:/usr/bin", [....]
D [04/Aug/2001:23:15:12 +0100] StartJob: statusfds = 5, 6
D [04/Aug/2001:23:15:12 +0100] StartJob: filterfds[1] = 7, -1
D [04/Aug/2001:23:15:12 +0100] StartJob: filter = "/usr/lib/cups/filter/pstops"
D [04/Aug/2001:23:15:12 +0100] StartJob: filterfds[0] = 8, 9
D [04/Aug/2001:23:15:12 +0100] start_process("/usr/lib/cups/filter/pstops", [....]
I [04/Aug/2001:23:15:12 +0100] Started filter /usr/lib/cups/filter/pstops (PID 18991) for job 214.
D [04/Aug/2001:23:15:12 +0100] StartJob: backend = "/usr/lib/cups/backend/lpd"
D [04/Aug/2001:23:15:12 +0100] StartJob: filterfds[1] = -1, 7
D [04/Aug/2001:23:15:12 +0100] start_process("/usr/lib/cups/backend/lpd", [....]
I [04/Aug/2001:23:15:12 +0100] Started backend /usr/lib/cups/backend/lpd (PID 18992) for job 214.
D [04/Aug/2001:23:15:12 +0100] Page = 595x842; 15,16 to 580,833 [....]
Строки с буквой «D» в начале означают, что это отладочное сообщение. Строки с буквой «I» в начале означают, что это информационное сообщение.
Максимальный размер файлов любых журналов, после которого будет выполнено их обновление. По умолчанию 1 Мб. Если вы введете 0, запись будет постоянно производиться в один и тот же файл.
Введите размер в выбранных единицах измерения, например, 1
.
Окно настройки CUPS-сервера. Здесь вы можете задать пути к различным каталогам. Обычно нет необходимости менять эти значения по умолчанию. В случае, если вы хотите использовать особенные шрифты для печати (TrueType, PostScript® или какие-нибудь другие), то здесь вы можете определить их. В настройки этой группы входят:
Исполняемые программы сервера: где расположены исполняемы программы;
Исполняемые программы сервера: где расположены файлы настройки;
Каталог данных: где лежат файлы данных для сервера;
Временные файлы: где будут находиться временные файлы печати;
Каталог запросов: обращения к серверу;
Каталог шрифтов: где лежат шрифты для печати.
Корневой каталог для исполняемых файлов. По умолчанию это /usr/lib/cups
(или /usr/lib32/cups
в IRIX 6.5)
Корневой каталог файлов конфигурации. По умолчанию это /etc/cups
.
Маловероятно, чтобы этот каталог нужно было менять на другой.
Корневой каталог для разных вспомогательных файлов CUPS. По умолчанию это /usr/share/cups
.
В этом каталоге содержатся сведения о титульных страницах, кодировках, драйверах, шрифтах, шаблонах pstoraster и др.
Каталог для хранения временных файлов. Этот каталог должен быть доступен для записи пользователю, указанному в предыдущей группе настроек. По умолчанию это или /var/spool/cups/tmp
, или значение переменной окружения TMPDIR
.
Это каталог, где хранятся запросы. По умолчанию это /var/spool/cups
.
Место, где CUPS-сервер может найти специальные шрифты (TrueType или PostScript®). Шрифты для встраивания в файлы печати CUPS будет искать именно здесь. Сейчас этот параметр влияет только на фильтр pstoraster, а его значение по умолчанию — /usr/share/cups/fonts
.
Чтобы указать несколько каталогов, перечислите их через двоеточия. Например:
/path/to/first/fontdir/:/path/to/second/fontdir/:/path/to/last/fontdir/
Чтобы эта настройка действовала так, как нужно, приложению, которое запрашивает печать, нужно:
или корректно ссылаться на файлы шрифтов в заголовке создаваемого файла PostScript®;
или встраивать шрифты в файл PostScript®.
Ссылаясь на шрифт по его имени, приложение не может гарантировать, что принтер или обработчик растровых изображений действительно будут использовать этот шрифт. Принтер или обработчик будут его использовать, только если он доступен в системе.
В случае принтера PostScript® шрифт должен размещаться в самом принтере. Если у принтера его нет, при печати этот шрифт будет заменен похожим.
Если это не PostScript®-принтер, эти обязанности переходят к CUPS и фильтрам его обработчика растровых изображений. Во время преобразования инструкций PostScript® фильтром pstoraster CUPS попытается найти правильный шрифт в указанном каталоге.
В случае использования устройства, выводящего PostScript® CUPS просто перенаправляет файл (хотя и пропуская его через фильтр pstops), не «работая» над ним. Поэтому если вы владелец PostScript®-принтера, использование какого-либо шрифта зависит от вашего устройства. Шрифт не будет напечатан, если его нет в принтере или если он не встроен в файл PostScript®.
Ниже вы видите снимок окна настройки с параметрами HTTP.
Для сервера CUPS доступны следующие настройки HTTP:
Каталог документов
Язык по умолчанию;
Кодировка по умолчанию.
Корневой каталог документации, доступной по HTTP. По умолчанию это /usr/share/cups/doc
.
Язык по умолчанию, если другой не указан браузером. Если не указан и здесь, используются текущие системные настройки.
Язык задается двухбуквенным кодом, например, en
или ru
.
Кодировка по умолчанию. Если она не указана, используется UTF-8. Это значение может перекрываться в документах HTML.
Это окно параметров защиты сервера CUPS. Доступные вам настройки:
Сертификаты шифрования: файл, содержащий сертификат сервера
Ключ шифрования: файл, содержащий ключ сервера
Файл, содержащий сертификат сервера. По умолчанию /etc/cups/ssl/server.crt
.
Файл, содержащий ключ сервера. По умолчанию /etc/cups/ssl/server.key
.
на снимке ниже показаны разные другие настройки сервера CUPS. Это:
Сохранять историю очереди заданий: сохранять или нет историю очереди заданий для последующего просмотра, перемещено в раздел Задания;
Сохранять очереди заданий: сохранять или нет полностью готовые кпечати файлы для последующей перепечатки, перемещено в раздел Задания;
Файл настройки принтеров: имя и путь к файлу настройки принтеров;
Кэш RIP: размер кэша обработчика растровых изображений, перемещено в раздел Фильтр;
Лимит фильтра: ограничения фильтра, перемещено в раздел Фильтр.
Сохранять или нет историю заданий после их выполнения, отмены или приостановки. По умолчанию этот флажок установлен.
Сохранять или нет полностью готовые к печати файлы после выполнения, отмены или приостановки заданий. По умолчанию этот флажок снят.
Имя файла настройки принтеров и путь к нему. По умолчанию это /etc/printcap
. Если вы оставите это поле пустым, файл создан не будет.
Этот файл нужен только для работы со старыми приложениями, требующими его.
Количество оперативной памяти для хранения растровых изображений, которое может использовать их обработчик. Это значение может быть любым действительным числом влюбых выбранных единицах измерения. По умолчанию — 8 мегабайтов.
Максимальная стоимость всех фильтров задания, которые могут быть запущены единовременно. Значение 0 означает отсутствие проверки лимита. Типичное задание требует лимит фильтра менее 200. Лимит меньше минимума, требуемого для задания, преобразуют статус отдельного задания для печати в любое время. По умолчанию лимит фильтра 0 (без лимита).
Это окно с основными параметрами сервера CUPS для работы в сети. В число этих параметров входят:
Поиск имён узлов
Прослушивать
Макс. размер запроса
Время ожидания данных от пользователя
Использовать или нет определение имен узлов по IP-адресам. По умолчанию Выкл для улучшения производительности.
Нажмите на кнопку справа, чтобы добавить в этот список адреса и порты для прослушивания сервером. По умолчанию это порт 631, зарезервированный для протокола печати в Интернете (Internet Printing Protocol).
Вы можете ввести несколько записей в этот список, чтобы расширить или, наоборот, ограничить доступ к принтеру.
К сожалению, большая часть браузеров не поддерживают расширения TLS или HTTP для использования шифрования. Если вам нужна поддержка шифрования, возможно, стоит указать порт 443, порт протокола HTTPS .
Добавлять и удалять записи можно с помощью соответствующих кнопок справа от списка.
Вы можете ввести и любые другие подходящие вам значения, например, 631
или myhost:80
, или 1.2.3.4:631
.
Максимальный размер HTTP-запросов и файлов для печати. По умолчанию без ограничений.
Период (в секундах), по истечении которого запрос отменяется, если от пользователя не поступило никаких данных. По умолчанию 300 секунд.
Параметры сети для клиента CUPS. Это:
Держать соединение открытым
Время ожидания открытого соединения
Макс. количество клиентов
Поддерживать или нет открытое соединение, даже когда обмен данными не происходит. По умолчанию это флажок установлен.
Период (в секундах) перед автоматическим закрытием соединения, если не происходит нникакого обмена данными. По умолчанию 60 секунд.
Максимальное число обслуживаемых клиентов. По умолчанию 100.
Основные параметры просмотра для сервера CUPS. Это:
Показывать
Показывать краткие имена
Неявные классы
Отправлять или нет широковещательные сообщения с информацией о принтере другим серверам CUPS. По умолчанию этот флажок установлен.
Использовать или нет по возможности «краткие» имена удаленных принтеров (например, printer
вместо printer@host
). По умолчанию этот флажок установлен.
Использовать или нет неявные классы.
Классы принтеров могут быть заданы явно в файле classes.conf
и неявно по доступности их в локальной сети. Можно также комбинировать оба способа.
Если этот флажок установлен, принтеры в локальной сети с одинаковыми именами (например, Acme-LaserPrint-1000
) будут помещены в один класс с таким именем. Так вы можете использовать несколько принтеров без больших затрат на администрирование. Если пользователь отправит запрос на принтер Acme-LaserPrint-1000
, задание будет выполнено на первом доступном принтере.
По умолчанию этот флажок установлен.
Это окно параметров соединения при просмотре. Вам доступны следующие настройки:
Просматривать адреса: адреса, куда отправлять информацию о принтерах и откуда такую информацию получать;
Порт просмотра: порт, используемый для просмотра;
справа от списка Просматривать адреса находятся кнопки редактирования записей списка. Нажав на кнопку Добавить..., вы откроете окно дополнительной настройки.
Нажав на кнопку Добавить..., вы откроете окно дополнительной настройки, в котором можете указать адреса для широковещательной отправки пакетов. Кроме того, там можно указать адреса для получения информации о принтерах.
Этот параметр определяет используемые адреса. По умолчанию широковещание производится на все доступные интерфейсы.
В HP-UX® версии 10.20 и ранее не всегда корректно обрабатывается такой тип трансляции, если у вас не сеть класса A, B, C или D (например, нет поддержки CIDR).
Порт, используемый для широковещательных запросов UDP. По умолчанию это порт сервиса IPP, но вы можете изменить его. Распознается только один порт.
Кроме того, вы можете указать адреса для получения информации о принтерах, адреса маршрутизации и т. д.
Это окно, в котором можно определить, какие пакеты сервер CUPS будет принимать или отклонять.
Позволить
Запретить
Порядок просмотра
Нажав на кнопку справа от списка , вы откроете окно, в котором можно, помимо всего прочего, добавлять адреса, для которых просмотр запрещен или разрешён. Выберите нужный элемент из списка , введите адрес и нажмите .
Вот окно, в котором можно ввести адрес другого сервера CUPS, от которого разрешено получать пакеты.
Выбрав тип Позволить, вы можете указать маску адресов, с которых можно получать входящие пакеты. По умолчанию разрешено получение пакетов со всех адресов.
Выбрав тип Запретить, вы можете указать маску адресов, с которых запрещено получать входящие пакеты. По умолчанию разрешено получение пакетов со всех адресов.
Для обоих этих типов доступна следующая форма записи масок адресов:
All
None
*.domain.com
.domain.com
host.domain.com
nnn.*
nnn.nnn.*
nnn.nnn.nnn.*
nnn.nnn.nnn.nnn
nnn.nnn.nnn.nnn/mmm
nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
Ввод имен узлов или доменов имеет смысл, только если у вас разрешен поиск имен узлов!
Указывает порядок просмотра списков, описанных выше.
Это окно, где можно указать время ожидания и интервал просмотра. Доступны два параметра:
Интервал просмотра
Время ожидания просмотра
Время между обновлениями информации в секундах. По умолчанию 30 секунд.
Кроме того, обновленная информация рассылается всякий раз, когда меняется состояние принтера, так что это максимальный период между обновлениями.
Если вы укажете 0, информация о ваших принтерах не будет рассылаться, но вы все равно сможете получать информацию о принтерах на других узлах.
Время ожидания (в секундах) для сетевых принтеров — если в этот период информация не будет обновлена, принтер удаляется из списка.
Очевидно, что этот период не должен быть меньше интервала просмотра. По умолчанию это 300 секунд.
Окно параметров маршрутизации. Адреса маршрутизации доступны в списке Просматривать адреса.
Маршрутизация
Это окно вызывается нажатием на кнопку Добавить.... Выберите в выпадающем списке вверху тип Маршрутизация и введите пару адресов.
Перенаправлять запросы с одного адреса на другой.
Это окно настройки безопасности сервера CUPS. Оно содержит следующие настройки, которые могут быть определены для любого ресурса (или расположения) сервера:
Системная группа
Адреса ACL
Аутентификация
Класс
Имена
Шифрование
Позволить
Запретить
Порядок сортировки ACL
Корректными ресурсами сервера CUPS могут быть:
корневой каталог сервера: /
;
административный каталог сервера: /admin
;
каталог принтеров сервера: /printers
;
любой отдельный принтер сервера, например: /printers/infotec_P320
;
все классы принтеров на сервере: /classes
;
любой отдельный класс принтеров сервере, например: //classes/all_infotecs_P320_or_P450
.
Для всех каталогов и файлов, у которых отсутствуют собственные параметры безопасности и которые находятся в указанных выше, применяются параметры этих вышуказанных каталогов.
Например, если у вас есть принтер infotec_P450
, для которого не указаны параметры безопасности. Тогда для него будут использоваться параметры безопасности каталога /printers
. Если и для каталога /printers
не заданы эти параметры, будут использоваться параметры каталога /
. Это могут быть указанные вами значения или значения по умолчанию.
Имя группы для системного или администраторского доступа. Значения по умолчанию зависят от разынх операционных систем, но обычно это sys
, system
или root
.
Права доступа для каждого используемого сервером каталога.
Используемый тип аутентификации:
Не выполнять аутентификацию.
Выполнять базовую аутентификацию (HTTP Basic).
Выполнять более надежную аутентификацию (HTTP Digest).
Аутентификация с использованием сертификатов может быть заменена любым из этих методов аутентификации, если подключение локально.
Класс авторизации; поддерживаются классы «Нет», «Владелец», «Системный» (действительный пользователь в системной группе) и «Группа» (действительный пользователь в указанной группе).
Имя группы для класса «Группа» .
Использовать или нет шифрование. Это зависит от того, скомпилирован ли CUPS с использованием библиотеки OpenSSL.
Возможные значения:
Всегда использовать шифрование (SSL).
Не использовать шифрование.
Использовать расширение TLS.
Использовать шифрование по запросу сервера.
Разрешить доступ с указанного имени узла, домена, IP-адреса или из указанной сети. Возможные значения:
All
None
*.domain.com
.domain.com
host.domain.com
nnn.*
nnn.nnn.*
nnn.nnn.nnn.*
nnn.nnn.nnn.nnn
nnn.nnn.nnn.nnn/mmm
nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
Имена узлов и доменов стоит указывать, если разрешено определение имен узлов (см. выше).
Запретить доступ с указанного имени узла, домена, IP-адреса или из указанной сети. Возможные значения:
All
None
*.domain.com
.domain.com
host.domain.com
nnn.*
nnn.nnn.*
nnn.nnn.nnn.*
nnn.nnn.nnn.nnn
nnn.nnn.nnn.nnn/mmm
nnn.nnn.nnn.nnn/mmm.mmm.mmm.mmm
Имена узлов и доменов стоит указывать, если разрешено определение имен узлов (см. выше).
Порядок обработки описанных выше списков.
В этом разделе описано окно изменения параметров безопасности сервера CUPS. Мы рассмотрим пример использования настроек со значениями, отличными от значений по умолчанию для ресурса /printers
. Если вы пользуетесь веб-сервером CUPS, то это каталог http://localhost:631/printers/ или (если вы заходите с другой машины) http://cups.server.name:631/printers/.
На первом снимке показано окно с основными настройками. Вы можете добавлять ресурсы, удалять их и менять их параметры, используя соответствующие кнопки справа.
Это окно добавления ресурса. Оно похоже на окно изменения свойств уже существующих ресурсов. Вот основные параметры:
Это вторая часть окна добавления ресурса. Оно похоже на окно изменения свойств уже существующих ресурсов. Здесь вы можете хадать маски адресов, с которых разрешен доступ.
Для запуска «Мастера добавления принтера» нажмите крайную левую кнопку на панели инструментов.
Мастер соберёт информацию, необходимую для установки принтера. Он поддерживает только модули CUPS и RLPR. Число шагов мастера зависит от активной (и доступной) подсистемы печати.
Начальное окно сообщает, что вы можете в любой момент воспользоваться кнопкой "Назад", чтобы изменить выбранные данные.
Выберите «внутренний» протокол, предложенный CUPS для использования при обращении к принтеру. Это может быть один из следующих:
Локальный принтер (серийный, параллельный, USB порты)
Удалённая очередь LPD
Общий принтер SMB (Windows®)
Сетевой принтер (TCP, HP® JetDirect, AppSocket)
Сетевой принтер с IPP (IPP/HTTP)
Печать в файл
принтер - факс/модем на последовательном порту
Класс принтера
Если некоторые протоколы неактивные, они не доступны. Например, у вас может не быть модема.
Содержание следующего окна зависит от вашего выбора в предыдущем. Здесь вам будет предложено настроить выбранный протокол.
В других случаях мастер может просканировать сеть для определения подходящих настроек.
Если вы используете сетевые соединения (удалёный LPD, SMB, CUPS, сетевой принтер с IPP), вы можете выбрать сканирование сети. Будьте осторожны, в некоторых сетевых средах это может привести к нежелательным последствиям, так как сканирование сети может восприниматься как хакерская атака!
При использовании протокола SMB KDEPrint будет использовать утилиты Samba nmblookup и smbclient (т.е. они должны быть установлены на данной системе) для сбора необходимой информации.
При использовании протокола IPP (порт 631) и TCP Network/AppSocket (порт 9100) KDEPrint будет пытаться открыть порт и отправить принтеру запрос ipp-get-printer-attribute. Для новых принтеров HP® это должно работать т.к. они поддерживают и AppSocket, и IPP.
Принтеры некоторых производителей используют другие порты для печати через TCP/IP. В этом случае вам понадобится выбрать нужный порт для сканирования нажатием кнопки Параметры, где вы также можете установить адреса IP и время ожидания.
Помните, что при использовании сканирования сети вас могут принять за злоумышленника.
До сих пор найти "родной" драйвер для конкретной модели принтера очень проблематично. Раньше их просто было мало, а теперь стало так много, что легко запутаться и выбрать не самый подходящий.
Если у вас есть (свежая) «база данных» драйверов, выберите производителя в левом списке и модель в правом. В списках отображаются все PPD, найденные CUPS в его стандартном репозитории, который находится по умолчанию в /usr/share/cups/model/
. Если вы хотите, чтобы драйвер находился автоматически, разместите его там.
В следующем окне будет отображено описание выбранного драйвера. Данные читаются из PPD.
Никогда не пытайтесь установить «Foomatic» или «Gimp-Print» PPD для принтеров PostScript®, даже если он был предложен как желаемый. Найдите оригинальный PPD от производителей, желательно написанный для Windows® NT.
Некоторые дистрибутивы Linux® содержат все возможные комбинации фильтровGhostscript и файлов «foomatic» PPD для CUPS, которые можно найти в интернете. Многие из них используются очень редко, некоторые сделаны давно, когда составители www.linuxprinting.org только ставили первые эксперименты с созданием дополнительных PPD для CUPS. «Alpha»-версии заброшенных драйверов можно найти в разных местах, что оказывает медвежью услугу CUPS.
Если вы не знаете, какую модель выбрать взамен вашей, зайдите на:
и попросите помощи. Также вы можете зайти на http://kdeprint.sourceforge.net/, где готовится статья по различиям между разными драйверами и PPD. Следите за новостями!
Для использования PPD, расположенного в другом месте (т.е. где поиск не производился), нажмите кнопку .
Укажите настройки драйвера. Наиболее важной является размер бумаги. Часто по умолчанию там стоит «Letter», но вам нужно выбрать «A4».
Теперь вы готовы начать тестирование принтера. Нажмите кнопку .
В последнем окне вам будет предложено добавить транспаранты и их расположения. Эти настройки вы можете изменять перед самой печатью.
Для использования своих транспарантов скопируйте их в /usr/share/cups/banners/
для возможности выбора их из списка. Они должны иметь формат PostScript®.
Последнее окно, которое вы увидите, предложит ввести имя для принтера.
Имя должно начинаться с буквы, может содержать цифры и символы подчёркивания. Максимальный размер - 128 символов. Если вы не последуете этим ограничениям, вы получите неуправляемый демон CUPS. Имена принтеров в CUPS не чувствительны к регистру! Это требование IPP. Значит, имена DANKA_infotec
, Danka_Infotec
и danka_infotec
идентичны.
В данной главе описывается, как можно изменить параметры CUPS, которые пока ещё недоступны через графический интерфейс.
KDEPrint поддерживает все наиболее часто используемые возможности CUPS.
Он позволяет добавлять и удалять принтеры, изменять их свойства, настраивать, проверять и т. д.
Возможно также управление печатью отдельных документов: отмена печати, приостановка, возобновление, перемещение задания в очередь другого принтера.
Настройка CUPS без использования Центра управления KDE.
Большую часть сведений о системе CUPS можно получить с помощью любого веб-браузера (даже текстового). Для этого введите в браузере адрес http://localhost:631/, и вам будет предоставлена ссылка на имеющуюся на вашем компьютере документацию по CUPS (в форматах HTML и PDF).
Для настройки CUPS помимо KDEPrint можно использовать также веб-браузер и множество программ, запускаемых из командной строки. Программы, запускаемые из командной строки, предоставляют наиболее широкие возможности по настройке CUPS. При настройке с помощью браузера возможности несколько ограничены.
KDEPrint, как и веб-браузер, не позволяет контролировать все настройки CUPS, т.к. по мере разработки CUPS новые возможности добавляются сначала в программы, вызываемые из командной строки. После установки CUPS рекомендуется обновить документацию к ней, так как в документации содержатся сведения о новых возможностях.
В зависимости от того, каким образом вы обновляли CUPS, ваш файл с настройками, возможно, обновлён не был; по этой причине новая, более мощная версия CUPS, вероятно, не будет использовать все имеющиеся возможности, т.к. они не будут включены в файле настройки.
Полный список имеющихся файлов и документации всегда можно найти в Руководстве по администрированию CUPS (http://localhost:631/sam.html#FILES). В строке адреса браузера Konqueror введите man:/lpadmin
или man:/cupsd.conf
, чтобы получить справку по самым важным командам и по формату файла настройки соответственно. В документах, которые отобразит Konqueror, также будут содержаться ссылки на другие файлы справки и дополнительную документацию.
Чтобы найти установленную в вашем компьютере документацию по CUPS, воспользуйтесь следующей командой:
vasiliy@dom:~ >
apropos
cups
cups-calibrate (8)- ESP Printer Calibration Tool lpstat (1) - print cups status information cups-lpd (8) - receive print jobs + report printer status to lpd clients classes.conf (5) - class configuration file for cups backend (1) - cups backend transmission interfaces filter (1) - cups file conversion filter interfaces cups-polld (8) - cups printer polling daemon mime.types (5) - mime type description file for cups cupsd (8) - common unix printing system daemon lpadmin (8) - configure cups printers and classes cupsd.conf (5) - server configuration file for cups mime.convs (5) - mime type conversion file for cups printers.conf (5) - printer configuration file for cups mime.convs (5) - mime type conversion file for cups cups-polld (8) - cups printer polling daemon lpstat (1) - print cups status information backend (1) - cups backend transmission interfaces mime.types (5) - mime type description file for cups cupsd (8) - common unix printing system daemon lpadmin (8) - configure cups printers and classes printers.conf (5) - printer configuration file for cups cupsd.conf (5) - server configuration file for cups filter (1) - cups file conversion filter interfaces
Ниже приведены некоторые возможности, которые доступны только с помощью команд, запускаемых из командной строки.
При установке принтера (или изменении его свойств) с помощью команд, запускаемых из командной строки, вы можете разрешить или запретить отдельному пользователю доступ к заданному принтеру. Для этого воспользуйтесь следующей командой:
lpadmin -p
HeidelbergDigimaster9110
-v
lpd:/10.160.16.99/mqueue
-u
allow:vasiliy,masha,lena
-E
-P
/home/vasiliy/PPDs/DVHV.ppd
С помощью такой команды вы разрешите доступ к принтеру только трём указанным пользователям. Если какой-либо другой пользователь попытается воспользоваться этим принтером, ему будет показано сообщение об ошибке.
lpadmin -p
HeidelbergDigimaster9110
-v
lpd:/10.160.16.99/mqueue
-u
deny:vladimir,boss,ivan
-E
-P
/home/vasiliy/PPDs/DVHV.ppd
С помощью этой команды вы запретите доступ к принтеру только трём указанным пользователям, таким образом разрешая его всем остальным. Если пользователь, доступ которому запрещён, попытается воспользоваться этим принтером, ему будет показано сообщение об ошибке.
На данный момент невозможно использование обоих вышеприведённых вариантов одновременно; в будущих версиях такая возможность будет реализована с помощью объединения пользователей в группы.
Иногда бывает необходимо установить ограничение на использование определённого принтера. Например, вам может понадобиться задать максимальное количество страниц или максимальный объём данных, который пользователи могут выводить на данном принтере.
Задать ограничения на количество страниц или объём данных можно во время установки принтера или впоследствии, при его настройке. Для этого воспользуйтесь ключом -o
команды lpadmin. Ниже приведены дополнительные сведения по заданию ограничений (на момент написания данного руководства в официальной документации по CUPS данные сведения отсутствовали):
CUPS позволяет задать ограничения на количество страниц и на объём данных, которые пользователи могут выводить на каждом установленном принтере.
Ограничения действуют для всех, однако задаются исходя из расчёта на одного пользователя.
При использовании ограничений на количество страниц учитываются также и разделительные страницы (если они используются).
Таким образом, например, возможно установить ограничение в 20 страниц в день для каждого пользователя определённого принтера; однако нельзя установить ограничение для всех за исключением пользователей Vasiliy
и root
.
Для настройки ограничений воспользуйтесь ключами job-k-limit
, job-page-limit
и job-quota-period
.
Ключ job-quota-period
позволяет задать промежуток времени, в течение которого ограничение действует (данное значение указывается в секундах; так, в одних сутках 60x60x24 = 86400 секунд, в одной неделе - 60x60x24x7 = 604800, а в месяце - 60x60x24x30 = 2592300).
Для включения ограничений необходимо, чтобы указанный промежуток времени, а также по крайней мере одно заданное значение (количество страниц или объём данных) было ненулевым.
Если параметр job-k-limit
равен нулю (он равен нулю по умолчанию), это означает, что ограничение снято.
Если параметр job-page-limit
равен нулю (он равен нулю по умолчанию), это означает, что ограничение снято.
Если параметр job-quota-period
равен нулю, это означает, что счётчик напечатанных страниц или объёма данных не будет сбрасываться через определённый промежуток времени (то есть система будет учитывать все напечатанные страницы с начала использования).
В данном примере задаётся как ограничение на объём данных, так и промежуток времени, через который счётчик выведенных данных следует сбрасывать:
lpadmin -p
danka_infotec_4850
-o
job-quota-period=604800
-o
job-k-limit=1024
Таким образом для каждого пользователя принтера danka_infotec_4850
устанавливается предел в 1 Мб данных в неделю.
lpadmin p
danka_infotec_4105
-o
job-quota-period=604800
-o
job-page-limit=100
Таким образом для каждого пользователя принтера danka_infotec_4105
устанавливается предел в 100 страниц в неделю.
lpadmin -p
danka_infotec_P450
-o
job-quota-period=604800
-o
job-k-limit=1024
-o
job-page-limit=100
Таким образом для каждого пользователя принтера danka_infotec_P450
устанавливается предел одновременно в 1 Мб в неделю и в 100 страниц в неделю. За одну неделю пользователь не сможет напечатать ни больше одного мегабайта, ни больше ста страниц.
Ниже приведены примеры неправильного использования программы lpadmin (в каждом случае не указан один из двух необходимых параметров: промежуток времени и ограничение по количеству страниц или объёму данных):
lpadmin
-p
danka_infotec_P320
-o
job-quota-period=604800
lpadmin
-p
danka_infotec_FullColor
-o
job-page-limit=100
lpadmin
-p
danka_infotec_HiSpeed
-o
job-k-limit=1024
Для того, чтобы CUPS поддерживал печать необрабатываемых («raw») документов с компьютеров, работающих под управлением Windows®, для каждого принтера, на котором предполагается печатать, необходимо отключить обработку печатаемых документов. Для этого воспользуйтесь командой lpadmin (причём указывать файл PPD не следует):
lpadmin -p
Raw_Danka_infotec
-E
-v
lpd://10.160.16.137/PORT1
Под необрабатываемыми (raw) очередями понимается то, что файл, отправленный на печать, никак не преобразуется в другой формат. Это нужно, например, когда клиенты Windows® печатают через CUPS на PCL-принтер, открытый для клиентского доступа Samba-сервером. В этом случае Windows®-драйвер принтера сгенерирует уже готовый к печати документ, и CUPS не будет сам обрабатывать печатаемый документ. Это бы только испортило сам документ. Поэтому существует возможность использовать команду «lpadmin без PPD», чтобы CUPS не осуществлял никакой обработки документа.
Данный раздел руководства по KDEPrint составлен из вопросов пользователей KDEPrint, а также ответов на них других пользователей.
Ниже приведён список наиболее часто встречающихся проблем:
Управление печатью: поддерживаются основные действия (добавить, удалить, изменить).
Каждый пользователь может задавать нужный принтер, указывая соответствующие сервер и очередь печати. Принтеры задаются индивидуально для каждого пользователя. Модуль использует утилиту rlpr - см. rlpr
Система LPD используется в KDEPrint по умолчанию (например при первом запуске KDE).
Модуль поддержки LPD позволяет лишь посылать документы на печать; управление принтерами и заданиями не поддерживается. Данный модуль поддерживает многие операционные системы: Linux® (с помощью LPR), HP-UX®, Solaris, IRIX®. Он также позволяет использовать некоторые дополнительные возможности LPRng (например отсутствие знака переноса \
в файлах printcap
).
Данный модуль поддерживает систему печати LPR. (Вскоре должен появиться также и модуль для поддержки LPRng.)
Модуль LPRng для KDEPrint находился в разработке на момент написания данного руководства и должен был быть готов к выпуску KDE 3.
Иногда бывает необходимо использовать систему печати, которая не поддерживается KDEPrint. В этом случае, когда появится окно печати, в текстовом поле вы сами можете задать команду, с помощью которой будет производиться печать. Это полезно, например, если вы сами написали такую программу.
Я работаю в компании Danka Deutschland GmbH, которая является ведущим поставщиком профессиональных и высокоскоростных принтеров различных производителей. Наряду с принтерами Danka предоставляет также программное обеспечение для них, расходные материалы, обслуживание, техническую поддержку и индивидуальные решения на основе всех имеющихся продуктов. Я работаю системным разработчиком. Danka предлагает в частности продукты таких фирм, как Heidelberg (ранее известная как Kodak), Canon, Hewlett-Packard®, Hitachi, Infotec и EfI.
С Linux® и другим свободным программным обеспечением я познакомился не так давно. Когда в начале 1999 года я узнал Linux® получше, моим самым большим разочарованием стала невозможность полноценного управления печатью документов. У меня легко получалось печатать односторонние документы, но что делать с двусторонними? Как автоматически прокалывать дырки, сортировать страницы, скреплять листы?
Я стал искать готовые решения в Интернете. К счастью, уже в мае 1999 Майк Свит, главный разработчик CUPS, объявил о выпуске первой бета-версии этого замечательного программного продукта. И как только я попробовал CUPS, я сразу понял: это - то, что нужно!
После этого я попытался заинтересовать системой CUPS различных поставщиков Linux®. Это оказалось совсем не просто: каждый из них был уверен, что именно та система, которую использовал он, была наилучшей. Возможно, они (как и многие разработчики Linux®) никогда не задумывались, как, например, наилучшим образом предоставить поддержку двусторонней печати, просто потому, что никогда не сталкивались с принтерами, у которых такая возможность имеется.
В конце концов в результате моих попыток заинтересовать общественность в системе CUPS один редактор предложил мне самому написать серию статей на эту тему, что я и сделал. Так я и получил псевдоним «CUPS Evangelist» («Проповедник CUPS»). И я не собираюсь его менять, тем более, что теперь уже и разработчики KDE втянули меня в эту работу...
В любом случае, сейчас CUPS уверенно шагает по всему миру UNIX® (и Linux®), и эти шаги вполне могут стать победными: я в некоторой степени горжусь тем, что поддерживал эту систему и помогал её развитию с момента её появления.
Вот что я вам скажу, исходя из моего личного опыта: даже если опытные пользователи Linux® смотрят на вас с усмешкой, даже если ваши знания в области программирования близки к нулю, вы всё равно можете помочь в развитии свободного программного обеспечения. И проекта KDE в частности.
Я хотел бы выразить благодарность
Майку Свиту за собственно разработку CUPS;
Жану-Ерику Кенде за разработку kups и qtcups, предшественников KDEPrint;
Майклу Гофиулу, за то, что с недавних пор он стал делать всю самую тяжёлую работу;
Мартину Конольду, за то, что он всегда подумает, прежде чем что-то сделать;
Свену Гукесу, за то, что он научил меня искусству «выживания при работе с терминалом» (на случай, если под рукой нет KDE);
и всем остальным, кого здесь не удастся упомянуть, но кто также помог мне узнать что-то новое;
и в конце концов Тому Шваллеру, который вдохновил меня на написание этого руководства.
KDEPrint разрабатывалась на основе системы CUPS версии 1.1.6, но также проверялась в сочетании с другими версиями CUPS, и на настоящий момент никаких проблем обнаружено не было. К моменту написания данного руководства уже была выпущена версия CUPS 1.1.18; в ней имеются новые возможности, которые KDEPrint ещё не поддерживает. Чтобы воспользоваться этими возможностями, вам необходимо будет использовать программы, вызываемые из командной строки, а также, возможно, редактировать файлы настройки вручную. Эти возможности будут включены в последующие версии KDEPrint, а также будут описаны в новых редакциях данного руководства.
KDEPrint (c) 2001 Майкл Гофйул (kdeprint AT swing.be)
Программа распространяется на условиях лицензии GNU General Public License.
Руководство: Курт Пфайфле, 2001(kpfeifle AT danka.de)
Этот документ распространяется на условиях GNU Free Documentation License.
Перевод на русский: Kernel Panic (rzhevskiy AT mail.ru)
Редакция русского перевода: Григорий Мохин (mok AT kde.ru)
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team