Еще одна возможность: a2ps
Программа a2ps довольно интересна. Как можно догадаться по ее имени, это программа преобразования одного формата в другой, но не только. Первоначально ее имя означало ASCII to PostScript (из ASCII в PostScript) и она использовалась для подготовки текстовых файлов к печати на принтерах с поддержкой PostScript. С годами, однако, возможности программы росли, и теперь ее имя означает Anything to PostScript (все что угодно — в PostScript). Несмотря на то что имя программы говорит, что это — программа преобразования одного формата в другой, в действительности она является программой печати. Она выводит результаты своей работы в свой вывод по умолчанию — в системный принтер, а не в стандартный вывод. По умолчанию программа действует как программа «структурной печати», улучшая формат вывода. Мы можем с ее помощью создать PostScript-файл на своем рабочем столе:
[me@linuxbox ~]$ ls /usr/bin | pr -3 -t | a2ps -o ~/Desktop/ls.ps -L 66
[stdin (plain): 11 pages on 6 sheets]
[Total: 11 pages on 6 sheets] saved into the file `/home/me/Desktop/ls.ps'
Здесь мы обработали поток с помощью программы pr, передав ей параметр -t (чтобы опустить верхние и нижние колонтитулы), и передали результат программе a2ps, указав ей файл для вывода (параметр -o) и плотность печати 66 строк на странице (параметр -L), чтобы разбить вывод pr на страницы. Если открыть получившийся файл с помощью соответствующего средства просмотра, можно увидеть, что он выглядит, как показано на рис. 22.1.
Рис. 22.1. Результат работы a2ps
Как видите, по умолчанию используется формат вывода «две страницы рядом». В этом формате содержимое двух страниц будет напечатано на одном листе бумаги. a2ps добавляет также свои хорошо отформатированные колонтитулы.
a2ps имеет множество параметров, они перечислены в табл. 22.4.
Таблица 22.4. Параметры команды a2ps
Параметр
Описание
--center-title текст
Текст для заголовка страницы в центре
--columns число
Число колонок для вывода страниц. По умолчанию 2
--footer текст
Текст для нижнего колонтитула
--guess
Вывести типы файлов, переданных программе в аргументах. Поскольку программа a2ps пытается преобразовывать и форматировать данные любых типов, этот параметр может пригодиться, чтобы понять, что a2ps будет делать с данным конкретным файлом
--left-footer текст
Текст для нижнего колонтитула слева
--left-title текст
Текст для заголовка страницы слева
--line-numbers=интервал
Выводить номера строк через заданный интервал
--list=defaults
Вывести настройки по умолчанию
--list=категория
Вывести возможные варианты настроек для указанной категории, где категорией может быть: delegations (внешние программы, которые будут использоваться для преобразования данных), encodings (кодировки), features (возможности), variables (переменные), media (размеры бумаги и пр.), ppd (известные описания принтеров PostScript), printers (принтеры), prologues (фрагменты кода, предшествующие нормальному выводу), style-sheets (поддерживаемые стили вывода), user-options (параметры пользователя)
--pages диапазон
Печатать страницы из указанного диапазона
--right-footer текст
Текст для нижнего колонтитула справа
--right-title текст
Текст для заголовка страницы справа
--rows число
Разместить страницы в указанное число рядов. По умолчанию 1
-B
Не выводить заголовки страниц
-b текст
Текст заголовка страницы
-f размер
Использовать шрифт указанного размера
-l число
Число символов в строке. Этот параметр и параметр -L (ниже) можно использовать, чтобы правильно разместить на странице файлы, разбитые на страницы с помощью других программ, таких как pr
-L число
Число строк на странице
-M имя
Формат бумаги, например A4
-n число
Вывести указанное число копий каждой страницы
-o файл
Вывести результат в указанный файл. Если в качестве имени файла указан - (дефис), используется стандартный вывод
-P принтер
Имя принтера для вывода. Если принтер не указан, используется системный принтер по умолчанию
-R
Вывести в книжной ориентации
-r
Вывести в альбомной ориентации
-T число
Установить табулостопы через каждое указанное число символов
-u текст
Текст для нижнего слоя на странице («водяной знак»)
Это далеко не полный список. В действительности программа a2ps имеет намного больше параметров.
ПРИМЕЧАНИЕ
Программа a2ps продолжает активно развиваться и поныне. В ходе ее тестирования я заметил некоторые различия в поведении этой программы в разных дистрибутивах. В CentOS 4 вывод всегда по умолчанию производился в стандартный вывод. В CentOS 4 и Fedora 10 по умолчанию использовался формат бумаги A4, несмотря на то что система была настроена на использование бумаги формата US-Letter. Мне удалось преодолеть эту проблему, только явно передав соответствующие параметры. В Ubuntu 8.04 программа a2ps действует, как описывается в документации.
Кроме того, существует еще одна программа форматирования, которую можно использовать для преобразования текста в формат PostScript. Она называется enscript и способна выполнять почти те же виды форматирования и печати, что и a2ps, но, в отличие от последней, принимает только текстовые данные.