Linux HOWTO


Обработка типов данных


Обычно PDQ определяет тип входных данных с помощью команды file(1). Для каждого типа, возвращенного командой file, и который вы хотите обрабатывать, вам необходимо определить предложение language_driver. Это предложение состоит в основном из скрипта для обработки задания печати, на любом (!) языке скриптов, который вы захотите использовать (языком по умолчанию является язык Bourne shell).

В нашем случае мы хотим печатать Postscript и ASCII на нашем принтере BJC-210. Поэтому нам необходимо два драйвера для типов файлов: один для запуска Ghostscript для заданий в формате Postscript, и один для добавления команд возврата каретки к заданиям в ASCII:

# Первый language_driver в этом файле, который соответствует результату # выполнения file(1) сообщает, что будет использовано language_driver ps { # file(1) возвращает строку "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # ключи gs из базы данных -q -dNOPAUSE -dBATCH -dSAFER \ # "обычные" ключи Ghostscript -sOutputFile=$OUTPUT $INPUT # обработка INPUT в файл OUTPUT

# Последние две строки часто одинаковы для всех поддерживаемых gs # принтеров. Однако строка gs..., будет разная для каждого из # принтеров. } }

# Мы объявили тип text после postscript, потому-что команда "file" часто # описывает файл postscript как текстовый (чем он и является). language_driver text { # Нет filetype_regx; мы ищем соответствие имени драйвера: "text" convert_exec = {#!/usr/bin/perl # Программа на Perl, просто потому-что мы можем писать на нем! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } }

Это все! В то время как другие принтера нуждаются в фильтрации выходных данных (как описано в следующем разделе), вышеприведенное предложение подходит для BJC-210. Мы просто передадим их указанному предложению driver:




Начало  Назад  Вперед



Книжный магазин