Глава 8. Вывод на печать и PostScript

Глава 8. Вывод на печать и PostScript

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

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

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

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

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

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

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

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

A2ps конвертер

Преобразователь текста в PostScript был и остаётся одним из наиболее универсальных средств печати. Все, в чем вы теперь нуждаетесь — это PostScript принтер.

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

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

Комплект шрифтов i18n-fonts нужных для преобразования кириллических текстов в Postscript не входит в дистрибутив a2ps начиная с версии 4.12 ПО ПРИЧИНЕ НЕ ОТКРЫТОЙ ЛИЦЕНЗИИ. Шрифты следует скачать с домашней странички a2ps или с ftp a2ps.

Для работы a2ps можно использовать шрифты sharatype-2.0.tar.gz, где в комплекте идёт все необходимое для прикрутки оных шрифтов к a2ps. Будет работать и в Latin-1 и в KOI8. Должно также и в Latin-2.

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

GNU enscript

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

  1. Установите последний enscript. Самую последнюю версию 1.5. вы можете найти в GNU FTP архиве.

  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

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