Имитация PostScript на не-PostScript принтерах



PostScript является фактическим стандартом для высококачественного набора и печати. PostScript, однако, — дорогой стандарт. К счастью, благодаря компании Aladdin Enterprises есть свободный аналог PostScript под названием Ghostscript, который работает с FreeBSD. Ghostscript может читать большинство PostScript-файлов и выдавать соответствующие страницы на множество устройств, включая многие моделей не-PostScript принтеров. Установив Ghostscript и используя специальный текстовый фильтр для принтера, можно заставить ваш не-PostScript принтер работать фактически как PostScript-принтер.

Ghostscript входит в набор портов FreeBSD, если вы хотите устанавливать его оттуда. Вы можете также легко загрузить, собрать и установить его самостоятельно.

Для имитации PostScript надо, чтобы текстовый фильтр определял, печатается ли PostScript-файл. Если нет, фильтр будет передавать файл на принтер непосредственно; в противном случае, он будет использовать Ghostscript, чтобы сначала преобразовать файл в формат, который поймет принтер.

Рассмотрим пример: следующий сценарий представляет собой текстовый фильтр для принтеров Hewlett Packard DeskJet 500. Для других принтеров замените аргумент -sDEVICE в команде gs (Ghostscript). (Введите команду gs -h для получения списка устройств, поддерживаемых установленной версией Ghostscript.)

#!/bin/sh

#

# ifhp - Печать Ghostscript-эмулированного PostScript на DeskJet 500

# Установлен в /usr/local/libexec/ifhp

 

#

# Обрабатывать LF как CR+LF (чтобы избежать "эффекта ступенек"

# на принтерах HP/PCL:

#

printf "\033&k2G" || exit 2

 

#

# Прочитать первые два символа файла

#

IFS="" read -r first_line

first_two_chars=`expr "$first_line" : '\(..\)'`

 

if [ "$first_two_chars" = "%!" ]; then

#

# Это PostScript; используем Ghostscript для чтения, преобразования и печати.

#

/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \

   -sOutputFile=- - && exit 0

else

#

# Обычный текст или HP/PCL, поэтому просто печатаем его напрямую; печатаем в

# конце символ прогона страницы, чтобы была выдана последняя страница.

#

echo "$first_line" && cat && printf "\033&l0H" &&

exit 0

fi

 

exit 2

Наконец, надо указать системе LPD, какой фильтр использовать, задав характеристику if:

:if=/usr/local/libexec/ifhp:

Вот и все. Теперь можно выполнять lpr plain.text и lpr whatever.ps, и обе команды должны успешно печатать.

Фильтры преобразования

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

Зачем устанавливать фильтры преобразования?

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

% dvips seaweed-analysis.dvi

% lpr seaweed-analysis.ps

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

% lpr -d seaweed-analysis.dvi

Мы заставили систему LPD автоматически преобразовывать DVI-файл, указав опцию -d. Все опции преобразования представлены в разделе Опции форматирования и преобразования.

Для каждой из опций преобразования, которая должна поддерживаться принтером, установите фильтр преобразования и укажите его полное имя в файле /etc/printcap. Фильтр преобразования аналогичен текстовому фильтру для простой настройки принтера (см. раздел Установка текстового фильтра), но вместо печати обычного текста он преобразует файл в формат, который может понять принтер.

Какие фильтры преобразования следует устанавливать?

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

В следующей таблице представлены фильтры, с которыми работает система LPD, их соответствующие характеристики для файла /etc/printcap, а также способ их вызова в команде lpr:

Тип файла Характеристика /etc/printcap Опция lpr
cifplot cf -c
DVI df -d
plot gf -g
ditroff nf -n
Текст на языке FORTRAN rf -f
troff tf -f
растровое изображение vf -v
обычный текст if никакой, -p или -l

 

В нашем примере использование lpr -d означает, что для принтера должна быть задана характеристика df в записи в файле /etc/printcap.

Вопреки мнению многих, форматы вроде текста на языке FORTRAN и plot, вероятно, устарели. У себя на машине вы можете дать новые значения этим или любым другим опциям форматирования, установив соответствующие специализированные фильтры. Например, пусть необходимо напрямую печатать файлы Printerleaf (файлы настольной издательской системы Interleaf), но вообще вы не собираетесь печатать файлы типа plot. Можно установить фильтр преобразования Printerleaf в качестве значения характеристики gf и научить своих пользователей, что команда lpr -g означает ''печатать файлы Printerleaf''.


Дата добавления: 2018-10-26; просмотров: 240; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!