запросов.

-15-41-

ФОРМЫ

В этом разделе описывается, как управлять использованием
препринтных форм обслуживанием печати. Вы увидите, как вы може-
те:
- определить новую форму,
- изменить старую форму,
- удалить форму,
- проверить форму,
- ограничить доступ пользователя к форме,
- обеспечить предупреждение при необходимости монтирования
формы и,
- монтировать формы.
Перед детальным рассмотрением этих вопросов рассмотрим,
что представляет собой форма в контексте обслуживания печати.

Что такое форма?

Препринтная форма - это бумажный образ формы бланка, которую вы
можете загрузить в принтер. Приложение обычно генерирует файл,
который при распечатке на форме бланка заполняет форму. Общими
примерами формы являются:
- проверки бланков,
- расписки,
- квитанции,
- этикетки,
- печатный бланк, и
- специальный бумажный инвентарь.
Обычно несколько копий формы бланка загружается в принтер
либо как набор отдельных листов, либо как сложная бумага.
Обслуживание печати помогает управлять использованием
препринтных форм, но не обеспечивает приложение какой-либо по-
мощью при заполнении формы. За это отвечает само приложение.
Обслуживание печати, однако, отслеживает, то, какие запросы пе-
чати требуют монтирования специальных форм, и какие формы в
настоящее время смонтированы, оно может предупредить вас о не-
обходимости монтирования новой формы.
Конечно, если вы не используете специальные формы для пе-
чати, вы можете пропустить этот раздел.

-15-42-

Определение формы

Первое, что вы должны сделать для добавления новой формы -
это определение ее характеристик. Это короткий список, помогаю-
щий обслуживанию печати напомнить вам, как работать с формой и
сообщающий обслуживанию печати, как инициализировать принтер
для правильной печати формы. Вам необходимо знать следующее о
форме:

Длина страницы Длина формы или каждой страницы в многостра-
ничной форме. Она может быть выражена как
число строк или размер в дюймах или санти-
метрах.
Ширина страницы Ширина формы, выраженная в колонках, дюймах
или сантиметрах
Число страниц Число страниц в многостраничной форме. Обс-
луживание печати LP использует это число с
фильтром (если доступен) для ограничения об-
разца выравнивания позднее в данном разде-
ле). Если другой фильтр не доступен для уре-
зания образца выравнивания, то обслуживание
печати LP пропускает этот шаг.
Шаг строки Как близко отдельные строки располагаются в
форме. Выражается либо в строках на дюйм,
либо в строках на сантиметр.
Шаг символа Как близко отдельные символы располагаются в
форме. Также выражается либо в символах на
дюйм либо в символах на сантиметр.
Выбор набора Набор символов, печатающий механизм или кас-
символов сета шрифта, которые должны быть использова-
ны, когда используется эта форма. Пользова-
тель может выбрать разные наборы символов
для запроса печати, используя эту форму, или
же пользователь может запросить использова-
ние только одного набора символов.
Цветовая лента Если форма всегда должна печататься с ис-
пользованием определенной цветовой ленты, то
обслуживание печати может напомнить вам, ка-
кой цвет использовать при монтировании фор-
мы.

-15-43-

Комментарий Любой комментарий, который вы хотите исполь-
зовать для формы. Этот комментарий позволяет
увидеть, какая форма используется, когда ее
следует использовать и так далее.
Образец выравнивания Файл образца, который использует обслужи-
вание печати для заполнения одной формы
бланка. При монтировании формы вы можете
проверить этот образец, чтобы убедиться,
что печать выдается для формы по строкам
правильно.

Примечание
Обслуживание печати не пытается маскировать "чувствительную"
информацию в образце выравнивания.Если вы не хотите печатать
"чувствительную" информацию в формах образца - то очень веро-
ятен случай, когда вы выравниваете проверки, например - далее
вам следует маскировать соответствующие данные. Обслуживание
печати хранит образец выравнивания, запомненный в безопасном
месте, где только вы (то есть пользователь lp и суперпользо-
ватель root) могут читать ее.

Когда вы собираете эту информацию о форме, вы вводите ее
как вход команде lpforms(ADM). Вы можете захотеть сначала заре-
гистрировать эту информацию в вашем собственном файле, чтобы
облегчить редактирование информации при ее вводе. Далее вы мо-
жете получить файл как входной. При его вводе вы должны предс-
тавить информацию следующим образом:

Page length: scaled-number
Page width: scaled-number
Number of pages: integer
Line pitch: scaled-number
Character pitch: scaled-number
Character set choice: character-set-name, mandatory
Ribbon color: ribbon color
Comment: comment
Alignment pattern: alignment-pattern

1 - длина страницы: масштабированный номер;
2 - ширина страницы: масштабированный номер;
3 - число страниц : целое;

-15-43а-

4 - шаг строки: масштабированный номер;
5 - шаг символа: масштабированный номер;
6 - выбор набора символов: имя набора символов, мандат;
7 - цветовая лента: цветовая лента;
8 - комментарий: комментарий;
9 - образец выравнивания: образец выравнивания.

Кроме образца выравнивания информация может появляться в
любом порядке (comment должен следовать за Comment: хотя бы
строкой ниже). alignment-pattern должно быть последней приводи-
мой информацией. Если comment должен содержать строку, начинаю-
щуюся с любой из ключевых фраз (длина страницы, ширина страницы
и так далее), то ей должен предшествовать символ ">", заключаю-
щий ключевую фразу. Это означает, что любой начальный символ
">" отделяется от комментария при отображении.

-15-44-

Не вся информация должна приводиться. Пропущенной информа-
ции назначаются следующие значения по умолчанию:

Таблица 15.4
Элементы формы по умолчанию

Элемент По умолчанию
---------------------------------------------------
Длина страницы 66 строк
Ширина страницы 80 колонок
Число страниц 1
Шаг строки 6
Шаг символа 10
Выбор набора символов любой
Цветовая лента любая
Комментарий (нет по умолчанию)
Образец выравнивания (нет по умолчанию)

Используйте одну из следующих команд для определения формы.
Ъ2 /usr/lib/lpforms -f Ъ1form-name Ъ2-F file-name
/usr/lib/lpforms -f form-name -
sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->Configure
(Принтеры-->Вспомогательный-->РРформы-->Конфигурация)
Обеспечивается имя пути для формы, как указано. Первая ко-
манда получает определение формы из файла, вторая команда полу-
чает определение формы от вас через стандартный ввод. Formname
может быть чем-то выбранным вами длиной до 14 букв, цифр и сим-
волов подчеркивания.
Если вам необходимо изменить форму введите лишь одну из
этих команд. Вам нужно только дать измененную информацию, ин-
формация, которую вы пропускаете, остается неизменной.

Удаление формы

Обслуживание печати не имеет фиксированного предела на
число форм, которые вы определяете. Однако хорошей идеей явля-
ется удаление форм, не нужных более, для устранения конфликтов
пользователей, которым в противном случае придется просматри-
вать длинный список устарелых форм, пытаясь выбрать корректную
форму, и устранения дополнительной обработки обслуживания печа-
ти, которая может случайно возникнуть для всех форм при выпол-
нении определенных задач.

-15-45-

Используйте следующую команду для удаления формы:

Ъ2 /usr/lib/lpforms -f Ъ1form-name -x

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->Remove
(Принтеры-->Вспомогательный-->РРформы-->Удаление)

Ограничение доступа пользователя

Вы можете ограничить использование формы рядом пользовате-
лей компьютера. Вы можете захотеть сделать это, например, для
"чувствительных" форм, таких как квитанции, которые могут ис-
пользоваться только людьми в отделах платежных ведомостей или в
отделах платежей по счетам.
Обслуживание печати использует список пользователей, допу-
щенных или не допущенных до формы, для ограничения использова-
ния формы. Обслуживание печати отвергает запрос пользователя на
печать файла с формой, которую ему или ей не разрешено исполь-
зовать.
Метод перечисления пользователей, которым разрешен или не
разрешен доступ к форме, аналогичен методу, используемому для
перечисления пользователей, которым разрешен или запрещен дос-
туп к средствам cron и at. Смотрите раздел "Авторизация исполь-
зования команд планирования заданиями" в главе "Обеспечение бе-
зопасности системы" данного руководства. Это следующие правила:
- список разрешений содержит пользователей, которым разре-
шено использование формы. Список отказов содержит пользо-
вателей, которым запрещен доступ к форме.
- Если список разрешений не пуст, то список отказов игно-
рируется. Если список разрешений пуст, используется список
отказов. Если оба списка пусты, то отсутствуют ограничения
на то, кто использует форму.
- Помещение any или all в список разрешений позволяет каж-
дому использовать форму. Помещение any или all в список
отказов отвергает любого за исключением пользователя lp и
суперпользователя root.
Вы можете определить, кто может использовать форму, ис-
пользуя следующие команды:

Ъ2 /usr/lib/lpforms -f Ъ1formnameЪ2 -u allow:user-list

-15-45-

Ъ2 /usr/lib/lpforms -f Ъ1formname Ъ2-u deny:user-list

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->Users
(Принтеры-->Вспомогательный-->РРформы-->Пользователи)

user-list - это список имен пользователей, разделенный запятой
или пробелом. Если вы используете пробелы для разделения имен,
заключите весь список (включая allow: или deny:, но не -u) в
кавычки. Первая команда добавляет имена в список разрешений и
удаляет их из списка отказов. Вторая команда добавляет имена в
список отказов и удаляет их из списка разрешений. Использование

-15-46-

allow: all допускает всех, использование deny: all отказывает
всем. Если вы не добавляете имена пользователей в списки разре-
шений или отказов, то обслуживание печати предполагает, что
каждый может использовать форму.

Предупреждение о монтировании формы

Если вы определили больше форм, чем принтеров, вы очевидно
не можете печатать файлы на всех формах одновременно. Это озна-
чает, что некоторые запросы печати могут удерживаться в очереди
до монтирования необходимых форм. Вы можете периодически отсле-
живать число запросов печати, ждущих некоторой формы, но обслу-
живание печати предоставляет более легкий путь.
Вы можете запросить предупреждение, когда число запросов,
ждущих форму, превышает некоторый порог.
Вы можете выбрать один из нескольких способов получения
предупреждения:
- Вы можете получить предупреждение по электронной почте.
Смотрите описание команды mail в главе "Почта".
- Вы можете получить предупреждение, выданное на какой-ли-
бо терминал, к которому вы подключены. Смотрите описание
команды write в наставлении.
- Вы можете получить предупреждение через выбранную прог-
рамму.
- Вы можете не получить предупреждений.

Примечание
Если вы выбрали не получать предупреждение, то вы отвечаете
за проверку того, что увидите, если любые запросы не печата-
ются из-за того, что нужная форма не смонтирована.

В добавление к методу предупреждения вы можете также за-
дать число запросов, которые должны ставиться в очередь перед
выдачей предупреждения, и вы можете запросить повтор предупреж-
дений каждые несколько минут до монтирования формы. Вы можете
выбрать скорость повторения предупреждений или можете выбрать
получение только одного предупреждения на форму.

-15-47-

Для задания возможности предупреждения о необходимости
монтирования формы введите одну из следующих команд:

Ъ2/usr/lib/lpforms -f Ъ1form-name Ъ2-A mail -Q Ъ1integer Ъ2-W minutes
Ъ2/usr/lib/lpforms -f Ъ1form-name Ъ2-A write -Q Ъ1integer Ъ2-W minutes
Ъ2/usr/lib/lpforms -f Ъ1form-name Ъ2-A Ъ1'command' Ъ2-Q Ъ1integer Ъ2-W minutes
Ъ2/usr/lib/lpforms -f Ъ1form-name -A none

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->Alerts-->Scecify
(Принтеры-->Вспомогательный-->РРформы-->Предупреждение-->
Задание)

Первые две команды заставляют обслуживание печати посылать
вам почтовое сообщение или писать сообщение прямо на терминал,
соответственно, для каждого предупреждения. Третья команда нап-
равляет обслуживание печати на выполнение command (команды) для
каждого предупреждения. Активная среда оболочки при вводе
третьей команды сохраняется и восстанавливается для выполнения
command (команды), это включает переменные среды, идентификато-
ры пользователя и группы и текущее оглавление.
Четвертая команда извещает обслуживание печати не посылать
вам предупреждение в случае необходимости монтирования формы.
integer (целое - это число запросов, которым необходимо ждать
форму, а minutes ( минуты) - это число минут между повторяющи-
мися предупреждениями.

Примечание
Если вы хотите обеспечить посылку почты или выдачу сообщения
другому лицу при возникновении сбоя принтера, вам следует ис-
пользовать третью из перечисленных команд. Используйте воз-
можность Ъ2-A 'mail username'или -A 'write username'.

После того, как вы начали получать повторяющиеся предуп-
реждения, вы можете запросить у обслуживания печати останов по-
сылки предупреждения выдачей следующей команды:

Ъ2 /usr/lib/lpforms -f Ъ1formname -A quiet

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->Alerts-->Terminate
(Принтеры-->Вспомогательный-->РРформы-->Предупреждение-->
Завершить)

-15-47а-

После того, как форма монтирована и размонтирована снова
предупреждения начинаются снова, если ждет слишком много запро-
сов. Предупреждения также рестартуют, если число ждущих запро-
сов падает ниже порога -Q и далее поднимается к порогу -Q сно-
ва, когда ждущие запросы отменяются или если изменяется тип
предупреждения.

-15-48-

Если formname имеет значение all в любой из команд, приве-
денных выше, то условие предупреждения относится ко всем фор-
мам. Если вы не определили метод предупреждения для формы, вы
не получите предупреждение для нее. Если вы определили метод,
но не задали возможность -W, вы будете получать предупреждение
при каждой ситуации.

Монтирование формы

Обратитесь к разделу "Монтирование формы или печатающего
механизма" разделом ранее в данной главе.

Проверка формы

Вы можете проверить определение формы при добавлении ее к
обслуживанию печати. Имеются две команды в зависимости от про-
веряемой информации. Команда lpforms отображает определение
формы. Отображение подходит для повторного ввода, поэтому вы
можете сохранить выход в файле для последующих ссылок. Команда
lpstat отображает текущее состояние формы.
Используйте одну из следующих команд для проверки опреде-
ленной формы:

Ъ2 /usr/lib/lpforms -f Ъ1formname -l
Ъ2 /usr/lib/lpforms -f Ъ1formname Ъ2-l>filename
Ъ2 lpstat -f formname
lpstat -f formname -l

sysadmsh пользователи выбирают:
Printers-->Auxiliary-->PPforms-->List
(Принтеры-->Вспомогательный-->РРформы-->Список)

Первые две команды представляют определение формы, вторая
команда хранит это определение в файле, который позднее может
использоваться для переопределения формы, если вы случайно уда-
лите форму из обслуживания печати. Последние две команды предс-
тавляют статус формы, последняя команда дает длинную форму вы-
хода, аналогичного выходу lpforms -l. Выход выглядит следующим
образом:

-15-48а-

+--------------------------------------------------
| Page length:ЪЪ1scaled-numberЪ
| Page width: scaled-number
| Number of pages: integer
| Line pitch: scaled-number
| Character pitch: scaled-number
| Character set choice: character-set, mandatory
| Ribbon color: ribbon-color
| Comment: comment
| Alignment pattern: content-type content

1 - длина страницы: масштабированный номер;
2 - ширина страницы: масштабированный номер;
3 - число страниц : целое;
4 - шаг строки: масштабированный номер;
5 - шаг символа: масштабированный номер;
6 - выбор набора символов: набор символов, мандат;
7 - цветовая лента: цветовая лента;
8 - комментарий: комментарий;
9 - образец выравнивания: тип содержимого содержимое.

-15-49-

" Образец выравнивания" не показывается, если команда
lpstat используется для защиты потенциально чувствительного со-
держимого.

-15-50-

ФИЛЬТРЫ

В данном разделе описывается, как вы можете управлять ис-
пользованием фильтров обслуживания печати. Вы можете:
- определить новый фильтр,
- изменить фильтр,
- удалить фильтр, и
- проверить фильтр.
Раздел "Настройка обслуживания печати" в конце данной гла-
вы описывает, как писать фильтр. Сначала рассмотрим, что такое
фильтр и как обслуживание печати может его использовать.

Что такое фильтр?

Фильтр играет три связанные роли:
- Он преобразует файл пользователя в поток данных, который
корректно печатается на данном принтере.
- Он обрабатывает различные режимы печати, которые пользова-
тель может запросить по возможности -y команды lp, такие
как двухсторонняя печать, рельефная печать, печать черте-
жей или печать с высоким качеством символов и так далее.
- Он регистрирует сбои принтера и информирует обслуживание
принтера, что принтер может выдать предупреждающее сообще-
ние.
Не каждый фильтр выполняет все три роли. Однако при усло-
вии специфичной природы принтера в этих трех ролях обслуживание
печати проектировалось, чтобы эти роли разделялись так, чтобы
вы, производитель принтера, или другой источник могли обеспе-
чить эти фильтры без изменения обслуживания печати.
Обеспечен фильтр по умолчанию с обслуживание печати для
обеспечения простой регистрации сбоев принтера; он не преобра-
зует файлы или же не обрабатывает специальные режимы. Это может
быть адекватно вашим потребностям.
Рассмотрим эти три роли более подробно.

-15-51-

Преобразование файлов

Обслуживание печати позволяет набирать имя каждого принте-
ра, добавляемого в систему, и позволяет пользователю набирать
имя каждого файла, предназначенного для печати. Эта информация
используется для приведения в соответствие файла и принтера,
который может наилучшим способом воспроизвести файл. Поскольку
многие приложения могут генерировать данные для различных прин-
теров часто этого бывает достаточно. Однако, не все приложения,
которые вы используете, могут генерировать выход, который рабо-
тает на ваших принтерах.
Определяя и создавая фильтр, преобразующий такой выход в
тип, который ваши принтеры могут обрабатывать, вы можете начать
обеспечивать больше приложений обслуживанием печати. Обеспечи-
вается небольшой набор простых фильтров, преобразующих выход из
приложений, аналогичных nroff в потоки данных, печатаемые кор-
ректно некоторыми принтерами.
Каждый фильтр, добавляемый в систему, набирается наряду с
типом входа, который он может принять и типом выхода, который
он может произвести. Теперь обслуживание принтера может быть
более сложным в попытке установить соответствие файла пользова-
теля и принтера. Если прямое соответствие не обнаруживается, то
обращаются к таблице фильтров для нахождения фильтра, преобра-
зующего тип фильтра в тип принтера. Имеется несколько примеров.

Пример 1
Пользователь Крис выполнил программу работы с крупнофор-
матными таблицами и сгенерировал копию файла таблицы. Теперь
Крис хочет печатать этот файл, используя обслуживание печати.
Вы располагаете в системе только принтером модели 455 AT&T. К
счастью приложение, работающее с таблицами, понимает, как гене-
рировать выход для нескольких принтеров, и Крис знает, как зап-
росить у нее генерацию файла для AT&T455. Когда Крис посылает
файл на печать, обслуживание печати ставит его в очередь к од-
ному из принтеров; фильтр не нужен.

Пример 2
Пользователь Марти выполнил программу обработки слов
nroff для получения копии большого документа. Программа nroff
также понимает, как генерировать выход для нескольких принте-
ров, но Марти забыл и сгенерировал выходной тип по умолчанию
(назовем

-15-51а-

этот тип nroff35), который не воспроизводится корректно на
AT&T455. Однако вы предвидели эту ситуацию и добавили фильтр
450 в таблицу фильтров, отметив ее, как принимающую стандартный
выход nroff (то есть nroff35) и отметив ее, как производящую
выход для AT&T455 (назовем ее тип 455). Так как вы добавили
принтер, как тип 455, обслуживание печати распознает, что он
может использовать фильтр 450 для преобразования выхода Марти
перед печатью.

-15-52-

Обработка специальных режимов

Другой важной функцией, которую могут обеспечить фильтры,
является обработка различных режимов печати, которые могут
встретиться. Каждый фильтр, который вы добавляете в таблицу
фильтров, может быть зарегистрирован, как обрабатывающий нес-
колько аспектов печати.
Они перечислены ниже:
Входной тип
Выходной тип
Тип печати
Шаг символа
Шаг строки
Длина страницы
Ширина страницы
Страницы для печати
Набор символов
Имя формы
Число копий
Режимы
Фильтр не требуется для обработки большей части этих ас-
пектов, только режимов. Обслуживание печати предоставляет для
остальных обработку по умолчанию. Однако может оказаться более
эффективным обрабатывать эти ситуации фильтром, или же фильтр
должен знать несколько из этих аспектов, если он правильно вы-
полняет другие роли. Фильтру может понадобиться знать, напри-
мер, размер страницы и интервалы печати, если он собирается
разбивать страницы в файле для соответствия печатным страницам.
Другой пример, некоторые принтеры могут обрабатывать несколько
копий более эффективно, чем обслуживание печати, поэтому
фильтр, контролирующий принтер, может использовать несколько
копий информации для пропуска обработки по умолчанию обслужива-
нием печати для этой ситуации.
Позднее мы увидим, как вы можете регистрировать режимы пе-
чати и другие аспекты печати с каждым фильтром.

Регистрация сбоя принтера

Также как преобразование файла и обработка специальных ре-
жимов печати - это специфичная для принтера функция, такой
функцией является и регистрация сбоев принтера. Обслуживание
принтера пытается выполнить эту функцию и для большинства

-15-52а-

принтеров корректно регистрирует сбой. Однако оно ограничивает-
ся проверкой зависаний (потеря носителя или сигнала о готовнос-
ти принтера) и чрезмерными задержками в печати (то есть получе-
ние управляющего символа XOFF для отключения потока данных,
когда нет соответствия XON для повторного включения потока).
Обслуживание принтера не может также определить причину сбоя,
поэтому оно не может сообщить что делать дальше.
Правильно спроектированный фильтр может обеспечить лучшую
обработку сбоев. Некоторые принтеры могут послать сообщение,
описывающее причину ошибки.

-15-53-

Другие указывают сбой сбросом носителя или отключением по-
тока данных. Фильтр может служить, предоставляя больше информа-
ции о сбое и регистрируя большую часть из них.
Другое преимущество, которое может дать фильтр, состоит в
ожидании сброса сбоя принтера и возобновлении печати. Это поз-
воляет более эффективно выполнять печать при возникновении
сбоя, так как запрос печати, который был прерван, не должен пе-
репечатываться полностью. Только реальный фильтр, который рас-
познает управляющие последовательности, используемые принтером,
знает, где файл разбивается на страницы; таким образом только
фильтр знает, насколько следует возвращаться в файле для кор-
ректного рестарта.
Обслуживание печати имеет простой интерфейс, позволяющий
фильтру получать информацию о сбоях и осуществлять возможный
рестарт. Механизм предупреждений (смотрите раздел "Предупрежде-
ние о монтировании формы" под заголовком "Формы" в данной гла-
ве) обрабатывается обслуживанием печати; интерфейсная програм-
ма, управляющая фильтром, принимает все сообщения об ошибках от
фильтра и помещает их в сообщение предупреждения, которое может
быть послано вам. Таким образом вы видите описания сбоя, кото-
рые выводит фильтр. Если вы устанавливаете конфигурацию принте-
ра так, чтобы печать автоматически возобновлялась после сброса
сбоя, то интерфейсная программа сохраняет фильтр в активном
состоянии так, что он может возобновиться там, где был останов-
лен.

Делает ли любая программа хороший фильтр?

Есть искушение использовать программу, такую как troff,
nroff или схожую программу обработки слов, как фильтр. Однако,
программы troff и nroff имеют средства, позволяющие пользовате-
лям ссылаться на дополнительные файлы в исходном документе, они
называются includes files (включенные файлы). Спулер LP не зна-
ет об этих файлах и не ставит их в очередь с исходным докумен-
том. Программа troff или nroff может завершиться аварийно, так
как она не имеет доступа к этим дополнительным файлам. Другие
программы могут иметь схожие средства, ограничивающие их ис-
пользование в качестве фильтров.
Далее следуют руководства, которые могут помочь вам выб-
рать хороший фильтр:
- Проверьте виды файлов, которые пользователи посылают на
печать, и которые должны обрабатываться фильтром. Если они