Next Previous Contents

8. Вывод на печать and PostScript

Напечатать что-либо - это всегда проблема. Имеется набор различных принтеров от различных производителей с различными особенностями. Даже для вывода на печати обычного ASCII текста нет никаких общих решений (это применимо не только к UNIX, но также и к другим операционным системам.

Принтеры имеют различные управляющие языки, и очень часто они имеют сильно различные подходы к поддержке иностранных языков. Хорошая новость - это то, что сейчас в качестве управляющего языка, как стандарт de facto для описания работы печати используется язык PostScript, разработанный Adobe Corporation. Много принтеров имеют встроенный PostScript интерпретатор, то есть вам надо просто послать на принтер Postscript данные. Для тех у кого этого нет, существует программные PostScript интерпретаторы, который берет данные Postscript преобразовывает в специфический для данного принтера управляющий код. Один из них мы сейчас обсудим (вероятно самый лучший из лучших). Это GNU GhostScript (gs для краткости).

Другая проблема - это широкий спектр требований предъявляемый к печати. Например, иногда вы хотите просто напечатать часть вашей C программы, содержащей в качестве комментария текст на русском, так что вы не нуждаетесь в "навороченной" процедуре печати- вам нужен простой ASCII вывод с одним шрифтом. Совсем другой дело, когда вы создаете открытку для вашей подруги. В этом случае вы, вероятно, будете нуждаться в печати документа с различными шрифтами и т.д. И это уже определенно требует больших усилий по установке поддержки кириллицы.

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

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

8.1 Преобразование текста в PostScript

Иногда у вас есть простой ASCII KOI-8 текст, и вы хотите его только напечатать. Один из самых простых способов это сделать это воспользоваться услугами программ преобразующих текст в PostScript.

Есть ряд программ, делающих такое преобразование. Я лично предпочитаю a2ps. Первоначально разработанная как простой text-to-PostScript преобразователь, эта программа сейчас стала "матерым", легко настраиваемым и с большим количеством опций программным продуктом. Она позволяет управлять форматами, размещениями страниц, выделением и т.д. Другая утилита, делающая примерно то же самое (теперь доступная как часть проекта GNU) - enscript.

A2ps конвертер

Преобразователь текста в PostScript был и остается одним из наиболее универсальных средств печати. Автор, как оказалось, очень открыт для предложений, и как следствие, a2ps версия 4.9.8 поддерживает кириллицу прямо в программе. Все, в чем вы теперь нуждаетесь - это PostScript принтер.

Команда, которую я использую для этого:

a2ps -X koi8r --print-anyway  <файл>

GNU enscript

Программа GNU enscript также, как и a2ps, была разработана для преобразования текста в PostScript, и она также поддерживает не ascii кодировки. Программа не имеет русских PostScript шрифтов в своем составе, но их очень просто доустановить. Как это сделать описано ниже (спасибо Michael Van Canneyt):

  1. Установите последний enscript. Теперь, самая последняя версия это 1.5. вы можете найти ее на GNU FTP архиве, или взять пакет RPM с Redhat.
  2. Если вы - счастливый пользователь RedHat Linux, загрузите и установите шрифт Cyrillic Textbook.
  3. Если вы не используете RPMки, вытяните файл textbook.tar.gz из архива на sunsite.unc.edu (сдесь лежит программное обеспечение для русификации). Разархивируйте этот файл в каталог, где размещены шрифты для enscript (обычно /usr/share/enscript). Теперь перейдите туда, и выполните следующую команду:
        mkafmmap *.afm
    
  4. Установка завершена. Попробуйте напечатать текст в KOI8-R следующей командой:
        enscript --font=Textbook8 --encoding=koi8 some.file
    

Если вам требуется действительно быстрый и простой способ, и качества вывода для вас не критично, и все что вам нужно - это только русский текст на бумаге, попробуйте пакет rtxt2ps. Это очень простой без украшательств конвертер текста в PostScript. Качество вывода не очень хорошее (или, честно говоря плохое) но это - работает.

8.2 Преобразование текста в TeX

Если все, в чем вы нуждаетесь- это печатать ASCII текста без дополнительной обработки, то вы можете использовать некоторые программки, которые могут преобразовать ваш текст кириллицы в готовый TeX файл. Одна из самых лучших программ для таких целей - это translit (Смотрите раздел Символьная перекодировка). В этом случае вы даже не должны беспокоиться относительно установки шрифтов кириллицы для TeX, так как translit использует пакет кириллицы Washington Cyrillic, который включен в большинство дистрибутивов TeX (или - я не прав?).

8.3 Кириллица в PostScript

Эксперты говорят, что PostScript это просто. Я не могу судить - у меня было слишком много вещей, которые надо изучить, чтобы выкроить время для изучения PostScript. Но я все равно попробую использовать мои небольшие знания об этом вопросе. Я буду очень благодарен за любую информацию об этом вопросе от вас друзья, которые знают больше меня (вас приблизительно 99 % от Земной популяции).

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

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

Один способ это побороть проблемы установки кириллицы вообще, состоит в том, чтобы использовать Ghostscript. Ghostscript (или просто gs от newspeak) абсолютно free (ну, не совсем) интерпретатор PostScript. У него есть много преимуществ; среди них:

В нашем специфическом случае является важным то, - что однажды установив и настроив Ghostscript, мы можем все печатать через него, таким образом нам не надо дополнительно настраивать другие PostScript устройства (например HP LaserJet IV).

Добавление шрифтов кириллицы к Ghostscript

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

Чтобы добавлять новый шрифт (в формате pfa или pfb) в gs, вы должны:

  1. Поместить этот шрифт в каталог шрифтов tt/gs/ (то есть. в /usr/lib/ghostscript/fonts).
  2. Добавить соответствующие имена и aliases для шрифта в файле Fontmap в каталоге gs.

Недавно появился приличный набор шрифтов кириллицы для GhostScript. Его можно найти на ftp.kapella.gpi.ru. Этот набор даже имеет необходимую часть для добавления к файлу Fontmap. Вы должны утянуть содержание каталога /pub/cyrillic/psfonts. В файле README описываются все необходимые подробности.

8.4 Использование старого матричного принтера для печати кириллического текста

Если у вас есть старый, добрый матричный принтер, и вы нуждаетесь в простом выводе текста на KOI-8, то попробуйте следующее:

  1. Найти соответствующий KOI-8 шрифт для вашего принтера. Проверьте ftp архивы MS DOS - в Internete (например посмотрите на архив SimTel).
  2. Прочитайте руководство и найдите в нем как загрузить такой шрифт в ваш принтер. Напишите простенькую программу, делающую это.
  3. Запускайте эту программку из соответствующего rc файла при загрузке.

Таким образом, наличие символов Cyrillic в верхней части набора символов принтера позволит вам печатать тексты по-русски без дополнительных ухищрений.

Альтернативно к KOI8-R шрифтам вы можете попробовать использовать Alt шрифты. Для этого имеются две причины:

Однако, в этом случае, вы должны будете преобразовать ваши тексты из KOI8-R в Alt перед посылкой их на принтер. Это не проблема, так как имеется множество программ, делающих это (для примера смотрите раздел Символьная перекодировка), так что вам нужно только вызвать такую программку из файла /etc/printcap в "if поле". Например, с программой translit можно сделать следующее:


if=/usr/bin/translit -t koi8-alt.rus

Для подробностей смотрите printcap(5).


Next Previous Contents