росить у нее генерацию файла для 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 может завершиться аварийно, так
как она не имеет доступа к этим дополнительным файлам. Другие
программы могут иметь схожие средства, ограничивающие их ис-
пользование в качестве фильтров.
Далее следуют руководства, которые могут помочь вам выб-
рать хороший фильтр:
- Проверьте виды файлов, которые пользователи посылают на
печать, и которые должны обрабатываться фильтром. Если они
-15-53а-
являются одиночными, то есть они не ссылаются на другие
файлы, нужные фильтру,то вероятно фильтр в порядке. Про-
верьте также, не ожидает ли фильтр любые другие файлы,
кроме тех, которые посланы пользователем на печать.
- Если есть ссылки на файлы внутри файлов, посланных на
печать или, если фильтру нужны файлы, отличные от тех, ко-
торые посланы пользователям, то фильтр вероятно выдаст
сбой, так как он не может получить доступ к дополнительным
файлам. Мы предполагаем, что вы не используете программу
как фильтр, но что каждый пользователь выполняет программу
перед посылкой файлов на печать.
-15-54-
Файлы, на которые имеется ссылка, которым всегда присвоены
полные имена пути могут быть в порядке, но только, если фильтр
используется для локальных запросов печати. При использовании
для запросов, полученных от удаленной машины для печати на ва-
шей машине, фильтр может все еще сбоить, если файлы, на которые
ссылаются, расположены только на удаленной машине.
Определение фильтра
Имеется несколько аспектов фильтра, которые вы должны оп-
ределить для обслуживания печати. Они перечислены далее:
Входные типы Это список типов файла, которые фильтр может об-
работать. Большая часть фильтров может иметь
только один входной тип, но обслуживание печати
не ограничивает их одним типом. Некоторые типы
файлов могут быть достаточно схожими для филь-
тра, с которым они связаны. Вы можете использо-
вать любые имена, которые вам понравятся, имея
ввиду предел из 14 букв, цифр и тире (нет под-
черкиваний). Так как обслуживание печати исполь-
зует эти имена для согласования фильтра с типом
файлов, вы должны быть последовательны в согла-
шении по именам. Например, если более одного
фильтра может принять тот же самый входной тип,
используйте то же имя. Эти имена следует объ-
явить пользователям так, чтобы они знали, как
именовать их тип файла, когда они отсылают файл
на печать.
Выходные типы Это список типов файлов, которые фильтр может
производить как выходные. Для каждого файла
фильтр производит отдельный выходной тип, но он
может иметь возможность менять этот тип по зап-
росу. Имена выходных типов также ограничены 14
буквами, цифрами и тире. Эти имена должны либо
соответствовать типам принтеров, имеющихся в ва-
шей системе,либо должны соответствовать входным
типам, обрабатываемым другими фильтрами. Обслу-
живание печати собирает фильтры вместе в конве-
йере оболочки для получения нового фильтра, если
определяется, что необходимы несколько проходов
различными фильтрами для преобразования файла.
Маловероятно, что вам необходим этот
-15-54а-
уровень сложности, но обслуживание печати
допускает это. Попытайтесь найти набор фильтров,
которые берут как входные типы все другие файлы,
которые пользователи могут захотеть распечатать и
которые преобразуют эти файлы прямо в типы,
которые могут обработать ваши принтеры.
-15-55-
Типы принтеров Это список типов принтеров, в которые фильтр мо-
жет преобразовать файлы. В то время, как для
большинства фильтров этот список идентичен вы-
ходным типам, он может быть различным. Например,
у вас может быть принтер, который имеет отдель-
ный тип для целей инициализации (смотрите раздел
"Принтер" под заголовком "Установка принтера" в
данной главе), но который может распознавать
несколько различных типов файлов. В сущности эти
принтеры имеют внутренний фильтр, преобразующий
различные типы в один, с которым они могут быть
связаны. Таким образом фильтр может производить
один из нескольких выходных типов, которые соот-
ветствуют "типам файла", обрабатываемым принте-
ром. Фильтр должен быть отмечен как работающий с
типом принтера. В качестве другого принтера вы
можете иметь две различные модели принтеров, ко-
торые перечислены, как принимающие одни и те же
типы файлов. Однако из-за небольшого различия
при производстве, один принтер отличается по
производимым результатам. Вы метите принтеры,
как имеющие различные типы, скажем А и В, где В
- это тот, который отличается. Вы создаете
фильтр, который приспосабливает файлы к учету
отклонений, производимому принтерами типа В. Так
как этот фильтр необходим только для этих типов
принтера, вам следует перечислить его, как рабо-
тающий только для принтеров типа В. Для большей
части принтеров и фильтров вы можете оставить
эту часть определения фильтра пустой.
Принтеры У вас могут быть некоторые принтеры, которые,
хотя и имеют корректный тип для фильтра в других
случаях не адекватны для выхода, который произ-
водит фильтр. Например, вы можете захотеть наз-
начить один принтер для быстрой передачи; на
этот принтер посылаются только файлы, которые
этот принтер может обрабатывать без фильтрации.
Другие принтеры идентичного типа вы назначаете