[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]

Руководство по принтерам и печати


Фильтры

Фильтром называется программа, используемая для следующих целей:

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

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

Служба печати выполняет следующие операции с фильтрами:

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

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

Задача 1: Преобразование файлов

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

Эту проблему можно решить с помощью фильтра, преобразующего такие файлы в файлы поддерживаемого принтером типа. (Служба печати содержит несколько фильтров, осуществляющих преобразование нескольких типов файлов в PostScript.) Для каждого фильтра, добавляемого в систему, необходимо указать тип входных данных (один или несколько) и тип выходных данных (обычно один).

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

Пример: HP DeskJet 500

В этом примере пользователь Крис запусти программу работы с электронными таблицами и создал файл, содержащий копию электронной таблицы. Крис хочет распечатать этот файл с помощью службы печати. В системе есть только принтеры HP DeskJet 500. К счастью, приложение, в котором работает пользователь, может создавать вывод для различных принтеров и Крис знает, что необходимо создавать вывод, отрабатываемый принтером HP DeskJet 500. Когда Крис отправляет файл на печать, служба печати заносит его в очередь для одного из принтеров; фильтр не требуется.

Пример: вывод Tektronix 4014

В этом примере пользователь Марти создал рисунок, отображаемый на терминале Tektronix 4014. Марти хочет распечатать этот рисунок, но к системе подключены только принтеры PostScript. К счастью в системе есть фильтр posttek, преобразовывающий файлы типа Tektronix в PostScript. Так как установлен тип принтеров PostScript, служба печати использует фильтр posttek для преобразования данных Марти перед их печатью.

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

С помощью фильтров можно обрабатывать особые режимы печати. Для каждого фильтра, добавляемого в таблицу фильтров, регистрируется обрабатываемый им особый режим и другие свойства печати, такие как:

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

Задача 3: Определение неполадок принтера

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

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

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

Служба печати содержит простой интерфейс, позволяющий фильтру отправлять информацию о неполадке и продолжать печать после ее исправления. Механизм предупреждения, Настройка предупреждений о сбоях принтера, обрабатывается службой печати; интерфейсная программа, управляющая фильтром, получает все сообщения об ошибках, отправляемые фильтром, и помещает их в предупреждающее сообщение, отправляемое вам. Если принтер настроен таким образом, что печать автоматически продолжается после исправления неполадки, интерфейсная программа оставляет фильтр активным, так чтобы печать была продолжена с той точки, в которой она была остановлена.

Программы создания фильтров

В качестве фильтров можно использовать такие программы, как troff, nroff или схожие с ними программы текстовой обработки. Однако, программы troff and nroff создают в исходном файле ссылки на другие файлы, называемые включаемыми файлами. Служба печати не работает со включаемыми файлами; следовательно, все файлы, ссылки на которые существуют в исходном файле, не будут включены в очередь печати. Таким образом может произойти сбой программ troff or nroff. Большинство программ работают таким же образом, что ограничивает их использование в качестве фильтров.

Ниже приведено несколько рекомендаций по использованию программ в качестве фильтров:

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

Описание фильтра

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

Дополнительная информация приведена в разделе Добавление фильтра в службу печати.

Описания фильтров, которые могут как храниться в файле, так и вводиться с командной строки, имеют следующий формат:

   Команда: команда-полное_имя [опции]
   Типы входных данных: список-входных-типов
   Типы выходных данных: список-выходных-типов
   Типы принтеров: список-типов-принтеров
   Принтеры: список-принтеров
   Тип фильтра: fast или slow
   Опции: список-шаблонов

Информация может быть показана в любом порядке. Необязательно предоставлять всю информацию. Если для указанных ниже элементов значения не заданы, применяются значения по умолчанию.

Опции команды lpfilter


Элемент Значение по умолчанию
Команда: (нет значения по умолчанию)
Типы входных данных: any
Типы выходных данных: any
Типы принтеров: any
Принтеры: any
Тип фильтра: slow
Опции: (нет значения по умолчанию)

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

Ниже приведено краткое описание каждой характеристики:

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

Указание опций с помощью шаблонов

Шаблоном называется оператор в описании фильтра, в котором указаны опции, передаваемые команде фильтра в зависимости от его характеристик. Описание фильтра может содержать несколько шаблонов. Существует два способа задания шаблонов: несколько шаблонов на одной строке (шаблоны разделяются запятыми) или каждый шаблон на отдельной строке (строка должна начинаться с префикса Options:).

Шаблон указывается в следующем формате:

   ключевое_слово шаблон =замена

Такой оператор интерпретируется следующим образом: "Когда информация, обозначенная с помощью ключевого_слова имеет значение, равное шаблон, следует взять строку замена, заменить все символы "звездочка" значением шаблон или развернуть все регулярные выражения, содержащиеся в ней, и добавить результат к командной строке."

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

Для того, чтобы выполнить эту задачу, необходимо задать команде lpfilter следующие шаблоны:

   Options: OUTPUT impress=-I, OUTPUT postscript=-P

Если строка Options: становится слишком длинной, перенесите каждый шаблон на отдельную строку:

   "Options: OUTPUT impress=-I"
   "Options: OUTPUT postscript=-P"

В обоих шаблонах ключевое_слово - OUTPUT. В первом шаблоне значение шаблон - impress, а значение замена - -I. Во втором шаблоне значение шаблон - postscript, а значение замена - -P.

Описания ключевых слов и их примеры

Для задания опций (Options) в описании фильтра существуют следующие 13 ключевых_слов:

Описание ключевое слово Возможные шаблоны Пример
Тип входных данных INPUT тип-данных troff
Тип выходных данных OUTPUT тип-данных postscript
Тип принтера TERM тип-принтера att495
Имя принтера PRINTER имя-принтера lp1
Ширина шрифта CPI целое-число 10
Интервал LPI целое-число 6
Длина страницы LENGTH целое-число 66
Ширина страницы WIDTH целое-число 80
Число печатаемых страниц PAGES список-страниц 1-5,13-20
Набор символов CHARSET набор-символов finnish
Имя формы FORM имя-формы invoice2
Число копий COPIES целое 3
Особые режимы MODES режим landscape

Значения, задаваемые во всех типах шаблонов (аргументы шаблон и замена для каждого ключевого слова), описаны ниже:

Часть шаблона, называющаяся замена, содержит значение, передаваемое программе фильтра. Обычно это литеральная опция, иногда * (звездочка), определяющая назначение значения. При необходимости более сложного преобразования опций пользователя в опции фильтра в полях шаблон и замена можно использовать конструкции команды ed. При этом поддерживаются все конструкции команды ed, включая конструкцию \(. . . \) и \n, используемые для извлечения частей шаблона, для копирования в поле замена, и &, используемой для копирования всего шаблона в поле замена.

Примечание:  Если в поля шаблон или замена включены символы запятая или знак равенства (=), их следует предварять обратной косой чертой (\). Некоторые регулярные выражения содержат запятые, которые также следует предварять обратной косой чертой. Эта косая черта удаляется из полей шаблон изамена при их использовании.

Общие принципы использования этих свойств показаны в следующих примерах.

Пример: Фильтр col

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

   Input types:     N37, Nlp, simple
   Output types:    simple
   Command:         /usr/bin/col
   Options:         TERM 450 = -b, MODES expand = -x
   Options:         INPUT simple = -p -f

Примечание:  Если для какой-либо из характеристик фильтра помимо Options существует несколько описаний (то есть несколько строк описания), служба печати использует последнее из них.

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

Пример: Фильтр dpost

Программа фильтра называется /usr/lib/lp/postscript/dpost. Фильтр работает с одним типом входных данных, troff, выдает данные типа postscript и работает со всеми принтерами типа PS (PostScript). Предположим, что вам необходимо, чтобы пользователи задавали типы ориентации бумаги "книжная" и "альбомная" ключевыми словами port и land соответственно. Так как эти опции не являются встроенными опциями службы печати, пользователи задают их с помощью опции -y команды lp.

Описание фильтра будет следующим:

   Input types: troff
   Output types: postscript
   Printer types: PS
   Filter type: slow
   Command: /usr/lib/lp/postscript/dpost
   Options: LENGTH * = -l*
   Options: MODES portrait = -op, MODES land = -ol

Пользователь, создающий запрос на печать файла типа troff на принтере PostScript (тип PS), с альбомной ориентацией бумаги и длиной страницы в 60 строк, должен ввести следующую команду:

lp -T troff -o length=60 -y land -d any

Команда вызова фильтра из службы печати будет выглядеть следующим образом:

/usr/lib/lp/postscript/dpost -l60 -ol -pl

Пример: Шаблон опций

Добавим в предыдущий пример следующий шаблон опций:

Options:  MODES group\=\([1-9]\) = -n\l

Этот шаблон используется для преобразования опции MODES формы -y group=число в опции фильтра -nчисло.

Таким образом, при вводе пользователем команды lp -y group=4, команда dpost будет содержать опцию -n4.

Для получения дополнительных примеров запустите команду

/usr/sbin/lpfilter -f фильтр -l

где фильтр - имя предустановленного фильтра PostScript. (Список фильтров PostScript приведен в разделе Принтеры PostScript.)

Добавление фильтра в службу печати

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

   /usr/sbin/lpfilter -f имя-фильтра -F имя_файла
   /usr/sbin/lpfilter -f имя-фильтра -
  

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

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

Удаление фильтра

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

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

/usr/sbin/lpfilter -f имя-фильтра -x

Просмотр фильтра

Описание любого фильтра можно просмотреть с помощью команды lpfilter. Эта команда выводит описание фильтра в удобном для последующего ввода формате. Рекомендуется сохранить это описание для последующего восстановления фильтра в случае его удаления из службы печати.

Для того, чтобы вывести описание фильтра на экран необходимо ввести следующую команду:

/usr/sbin/lpfilter -f имя-фильтра -l

Для того, чтобы сохранить описание фильтра в файле, необходимо ввести следующую команду:

/usr/sbin/lpfilter -f имя-фильтра -l > имя-файла

Восстановление фабричных значений по умолчанию

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

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

/usr/sbin/lpfilter -f имя-фильтра -i

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

Типы принтеров

Атрибут тип-принтера задается с помощью опции -T тип-принтера команды lpadmin. Тип принтера - это шаблон имени принтера. Обычно он зависит от имени производителя. Например, принтер ACME\ Computer 356 Dot Matrix Printer может иметь тип 356. Присвоение каждому принтеру типа очень важно, так как программы получают информацию о принтере из базы данных terminfo, основываясь на типе принтера. Информация в базе данных состоит из списка возможностей (функций) принтера, по которому проверяется заданная вами информации о конфигурации принтера в службе печати. (С помощью этой проверки служба печати находит в заданной вами конфигурации информацию, не соответствующую действительности.) База данных terminfo также содержит данные, необходимые для инициализации принтера перед печатью файла.

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

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

Если принтер может эмулировать несколько различных принтеров, вы можете задать для него несколько типов. Предположим, что принтер может эмулировать принтеры IBM Proprinter XL, Epson FX86e и HP LaserJet II; их типы записаны в базе данных terminfo как 593ibm, 593eps и 593hp соответственно. При указании нескольких типов принтеров служба печати для каждого конкретного запроса использует самый подходящий из них.

В следующей примере показано использование команды lpadmin для присвоения принтеру с именем laser типа 593ibm.

   /usr/sbin/lpadmin -p laser -T 593ibm

Примечание:  При указании нескольких типов принтеров, в качестве типа данных необходимо указывать simple.

Типы данных

Атрибут тип-данных задается с помощью опции -I список-типов-данных команды lpadmin. Большинство принтеров могут печатать файлы двух типов: совпадающих с типом принтера (если он задан) и типа simple (обозначающего файлы ASCII), который является типом по умолчанию для всех принтеров.

Предполагается, что файлы типа simple содержат два типа символов: печатаемые символы ASCII и следующие управляющие символы:

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

Слово каретка применительно к лазерным принтерам считается устаревшим, однако действия, производимые принтером при этих командах, аналогичны действиям каретки в принтерах других типов. Если принтер обрабатывает файлы нескольких типов, включая и simple, тип simple необходимо вручную добавить в список типов данных. Если вы хотите, чтобы ваш принтер не работал с файлами типа simple, оставьте поле список-типов-данных (-I "") команды lpadmin пустым. Некоторые принтеры работают с файлами нескольких типов. При добавлении такого принтера необходимо добавить в список типов имена обрабатываемых им типов данных. (По умолчанию в списке содержится только тип simple.) При добавлении удаленного принтера необходимо добавить в список типов данных типы, предоставленные администратором удаленной системы.

список-типов-данных - это список имен, разделенных запятыми или пробелами. Если для разделения используются пробелы, то весь список, за исключением -I необходимо заключить в кавычки.

Часто используемые типы

Имена типов данных схожи с именами типов принтеров, однако вы сами можете назначать удобные вам имена, состоящие не более чем из 14 букв, цифр и символов подчеркивания. Ниже приведен список некоторых часто используемых типов данных.

Примечание: Слова simple и any являются ключевыми словами службы печати. Название terminfo также является зарезервированным для справки по всем типам принтеров.

Таблица часто используемых типов данных


Типы Описание
cif Вывод BSD cifpbt
daisy Файлы печати для принтера Diablo 630 (лепестковый принтер)
dmd Печать содержимого растрового дисплея терминала
fortran Управляющий формат каретки ASA
otroff Инструкции CAT, созданные BSD или pre-System V troff (старый troff)
pcl Исходный формат вывода HP LaserJet
plot Дисплеи и устройства Tektronix
postscript Язык PostScript
raster Формат растровых bitmap растровых устройств Varian
simple Файл ASCII
tek4014 Файлы печати, форматированные для устройства Tektronix 4014
tex Файлы формата DVI
troff Независимый от устройства вывод troff

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

Большинство производителей выпускают принтеры, печатающие файлы ASCII. Несмотря на то что все эти принтеры принадлежат к различным типам, (и, следовательно, имеют различные управляющие последовательности при инициализации), все они могут обрабатывать один тип файлов, называемый нами simple. Некоторые производители производят принтеры, работающие с esc-последовательностями ANSI X3.64. Однако, не все они поддерживают один и тот же набор возможностей ANSI. Для упрощения работы с такими принтерами, можно присвоить им различные типы данных.

Тип данных по умолчанию

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


[ Страница назад | Страница вперед | Содержание | Индекс | Библиотека | Юридическая информация | Поиск ]