Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Имитация 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, и обе команды должны успешно печатать.





Дата публикования: 2015-01-10; Прочитано: 263 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...