Глава 35 Печать
Глава 35 Печать
Ну вот – система настроена, и кириллические шрифты есть, и X Window работает с заданными частотами и разрешениями, по Интернету путешествуем с приемлемой скоростью, документы разные находим, просматриваем. А печати у нас и нет, не настроена.
В данной главе мы постараемся исправить это упущение. Принтеры бывают разные – матричные, струйные, лазерные и сублимационные, цветные лазерные и даже объемные. Они могут использовать разные интерфейсы для подключения – последовательный, параллельный, USB и даже Ethernet. Производители принтеров продолжают увеличивать набор проблем – то протокол свой придумают, то с целью удешевления создадут Win-принтер, для которого драйвер не достать. И во всем этом приходится разбираться.
Первоначально рассмотрим конфигурацию принтера «правильным» способом, с применением стандартных UNIX-средств в консольном режиме. Затем рассмотрим конфигурацию с помощью графической утилиты, которая не идет ни в какое сравнение со стандартным способом – буквально за минуту можно сконфигурировать любой принтер.
Способы вывода на принтер
Как и для большинства задач, существует несколько способов добиться вывода данных на принтер. Конечно, в конце концов они замыкаются на простой вывод последовательности байтов в порт, к которому подключен принтер, однако с данными по пути следования от документа до распечатки могут производиться различные манипуляции.
Самый простой путь – прямой вывод информации без всякой предварительной обработки на порт принтера. Для этого достаточно выполнить всего лишь следующую команду:
cat mytext.txt > /dev/lp
Для DOS аналогичная команда будет выглядеть следующим образом:
copy mytext.txt > prn
Как обычно, это простота кажущаяся. Во-первых, для того, чтобы таким образом что-то отправить на печать, необходимо быть пользователем root – для остальных пользователей невозможно напрямую работать с файлами устройств. Во-вторых, зачастую вы получите на распечатке сплошную кашу из символов. Такое произойдет потому, что любой принтер имеет свой специальный язык управления, причем этих языков более десятка разновидностей. Так что выход для данного случая – использовать специальные утилиты, на вход которых подаются текстовые файлы, а на выходе – преобразованный с учетом языка управления принтера текст. Однако это крайне неудобно. Поэтому применяют специальные программные пакеты, предназначенные для управления печатью. Именно об этих программных пакетах и пойдет далее речь.
Система печати CUPS
CUPS (Common UNIX Printing System, общая система печати для UNIX), интересна своими богатыми возможностями. В ней реализован протокол печати, сходный с протоколом HTTP, заменяющий морально устаревший протокол LPD.
Поддерживает форматы Adobe PostScript, PDF, HP-GL/2, TIFF, JPEG, PNG, PBM, PGM, PPM, GIF, SGI, RGB, Sun Raster, Kodak Photo CDTM. Интересным моментом для администратора являются следующие особенности системы:
• правила управления доступом;
• наличие системы квот;
• авторизация пользователя;
• ведение log-журналов.
Программный пакет LPD
LPD (Line Printer Daemon, демон линейной печати) – пожалуй, старейший программный пакет для печати в мире UNIX. Идеология стандартна для UNIX – программы-утилиты для управления процессом печати и программа-демон, обеспечивающая печать на несколько принтеров. Благодаря такому построению программного пакета вы имеете возможность одновременно работать с несколькими принтерами и настроить сетевую печать. В пакет входят следующие программы:
• lpd – демон системы печати;
• lpr – пользовательская команда печати. 1рг выдает новое задание печати в очередь печати lpd. Синтаксис 1рг очень прост:lpr [опции] [имя_файла …]
Если имя_файла не задано, lpr ожидает ввод данных со стандартного ввода. Это позволяет пользователям перенаправлять вывод команд в очередь печати;
• lpq – утилита для просмотра очереди печати. Команда, запущенная без аргументов, возвращает содержимое очереди печати принтера по умолчанию;
• lрс – утилита контроля lpd. С ее помощью можно производить любые манипуляции с очередью печати – добавлять и удалять задания, останавливать печать, переупорядочивать задания в очереди печати и т. д. lpc чаще всего используется в системах, где несколько принтеров установлено на один компьютер.
Команда lpc обычно используется в интерактивном режиме, однако никто вам не мешает запускать на выполнение эту команду с опциями. Некоторые из опций приведены далее:
– disable – запрещает добавление любых новых заданий печати;
– down – запрещает все задания на принтере;
– enable – разрешает ввод новых заданий в очередь печати;
– quit (or exit) – покинуть lpc;
– restart – перезагрузить lpd для данного принтера;
– status – статус печати принтера;
– up – разрешить все и запустить новый демон lpd.
• lprm – утилита для удаления задания из очереди печати. Команда lprm удаляет из очереди все задания печати, владельцем которых является пользователь, выполнивший эту команду. Для того чтобы отменить одиночное задание печати, надо сначала получить номер задания с помощью команды lpq, а затем сообщить полученный номер команде lprm.
Функционирует система следующим образом. При старте операционной системы стартует демон lpd. Используя файл /etc/printcap, он узнает, какие принтеры будет обслуживать. При запуске (пользователь что-то выводит на печать) lpr взаимодействует с lpd через именованный сокет /dev/printer и передает lpd-файл для печати и некоторую информацию о том, кто печатает и как печатать файл. Затем lpd печатает файл на соответствующем принтере в порядке очереди.
Настройка LPDНачнем с простого – настроим простой струйный принтер фирмы Hewlett-Packard – HP DeskJet 400. Будем считать, что LPD уже установлен в вашей операционной системе, поскольку этот пакет входит во множество дистрибутивов как стандартная система печати.
Для добавления очереди печати к lpd вы должны внести запись в файл /etc/printcap и создать новый буферный каталог в каталоге /var/spool/lpd. Запись в файле /etc/printcap выглядит следующим образом:# ЛОКАЛЬНЫЙ deskjet400
lp|dj|deskjet:
:sd=/var/spool/lpd/dj:
:mx#0:
:lp=/dev/lp0:
:sh:Вышеприведенная запись определяет принтер с псевдонимами lp, dj или deskjet, его спул печати размещается в каталоге /var/spool/lpd/dj. Отсутствует ограничение максимального размера задания. Печать производится на устройство /dev/lpO и не сопровождается выводом страницы с именем человека, который печатает, добавленной в начало задания печати. Как вы видите – все очень просто. Но, во-первых, извечная проблема текстовых файлов UNIX и Windows – для UNIX в конце текстовой строки достаточно символа перевода строки, для Windows – необходимо наличие символов возврата каретки и перевода строки. Большинство современных принтеров рассчитаны для использования совместно с Windows, и поэтому для нормальной печати текста им также необходимо в конце текстовой строки наличие символов возврата каретки и перевода строки. Если не учесть эту особенность, при распечатке текста на принтере получится приблизительно следующее:
Это называется лестничным эффектом, и с ним необходимо бороться. Существует много способов, самый простой – написать небольшой фильтр, через который перед печатью будет пропускаться наш текстовый файл, а результат – уходить на печать.
Поправим нашу запись в файле /etc/printcap следующим образом:# ЛОКАЛЬНЫЙ deskjet400
lp|dj|deskjet:
:sd=/var/spool/lpd/dj:
:mx#0:
:lp=/dev/lp0:
:if=/var/spool/lpd/dj/filter:
:sh:В документации к printcap описаны атрибуты принтера if – входной фильтр и of – выходной фильтр. Как видите, мы определили входной фильтр, расположенный в каталоге /var/spool/lpd/dj/ и носящий имя filter. Этот файл представляет собой две строчки, написанные на Perl:
#!/usr/bin/perl
while(<STDIN>){chop $_; print "$_ ";};
print "f";В результате мы получаем принтер, на котором корректно можно распечатать текстовые файлы, используя встроенные шрифты принтера. Для современного мира это не актуально – практически всегда используется графическая печать. Обычно печатают документы PostScript или графические файлы. На первый взгляд – нетривиальная задача, на самом деле – все достаточно просто. Вспомните еще раз идеологию UNIX – сколь угодно сложные задачи решать применением последовательности небольших утилит.
Для решения этой проблемы опять используется свойство файла printcap – использование входных и выходных фильтров. Если мы будем использовать фильтр, который может воспринимать произвольные типы файлов как ввод, обрабатывать их в зависимости от формата файла и производить вывод на принтер, – мы решим нашу задачу.
Такой фильтр называется магическим фильтром (magic-filter). Существует большое количество магических фильтров, причем наверняка несколько такого типа фильтров находится в вашем дистрибутиве операционной системы. Ниже приведены некоторые магические фильтры печати:
• APSFILTER – фильтр печати для стандартного lpd;
• lprMagic – фильтр печати с неплохими возможностями. Автоматически определяет тип входного документа, есть поддержка печати через Samba.
Учет ресурсов Обычно в больших фирмах принято хранить информацию о том, кто, когда и сколько печатал. Стандартный LPD предоставляет очень небольшую помощь для учета ресурсов. Вы можете указать имя файла для учета ресурсов, используя атрибут af= в printcap, но, по большому счету, это не решение проблемы. Пожалуй, лучший вариант – использовать магический фильтр, который может писать данные в файл учета ресурсов, а вы будете обрабатывать этот файл позже каким-нибудь скриптом обработки статистики.Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Печать
Печать С печатью таблиц лично у меня всегда были гигантские проблемы. Нет, не с Таблицами Google – по правде сказать, я не очень часто их распечатываю, поскольку бо?льшую часть использую непосредственно в Сети. Просто во время печати электронных таблиц я часто забываю о
Печать
Печать Список команды Печать включает следующие команды (рис. 1.129). Рис. 1.129. Меню Печать • Печать. Откроет диалоговое окно, в котором вы сможете настроить все параметры печати (рис. 1.130). Рис. 1.130. Окно Печать Вы сможете выбрать принтер, решить, какие страницы печатать,
Глава 13 Печать рисунков
Глава 13 Печать рисунков Конечной целью работы с изображением является сохранение его в цифровом виде, публикация в Интернете или печать на носитель (бумагу, пленку, ткань). Именно о печати изображений мы и поговорим в данной главе.В начале книги мы достаточно подробно
Глава 7 Создание и печать отчетов
Глава 7 Создание и печать отчетов Автоматическое создание отчета на основе данных таблицы или запросаСоздание отчета с использованием мастераЭкспорт отчетов AccessСоздание снимков отчета и работа с нимиРежимы работы с отчетамиФорматирование элементов отчетаПанель
Глава 9 Подготовка к печати и печать
Глава 9 Подготовка к печати и печать Данная тема вынесена в отдельную главу по двум причинам. Во-первых, проблемы вывода на печать почти не затрагивают интересов веб-дизайнеров, и те могут совершенно спокойно пропустить эту главу. Во-вторых, наибольшие трудности возникают
Глава 19 Печать и экспорт
Глава 19 Печать и экспорт В заключение нашего многостраничного знакомства с возможностями Adobe InDesign мы рассмотрим вопрос «Что делать с дизайном в конце?». Иными словами, создав дизайн, нам обязательно потребуется распечатать его (в типографии или на принтере) или, по
Глава 8 Работа с листами и печать
Глава 8 Работа с листами и печать • Создание и редактирование листов• Печать• РезюмеВы уже научились создавать несложные двухмерные чертежи. Однако в большинстве случаев работа на этом не заканчивается, так как результаты ваших трудов необходимо подготовить к печати и
Печать
Печать Закончив работу по созданию и компоновке чертежа, можно приступить к настройке печати. Вид распечатанного чертежа будет зависеть от нескольких составляющих: настроек листа, рассмотренных выше, присоединенной таблицы печати и, конечно же, конфигурации самого
Глава 10 Печать документов
Глава 10 Печать документов 10.1. Подготовка документа к печати Практически любой документ на экране выглядит совсем не так, как на листе бумаги. Работая с документом, вы можете не обращать внимания на мелкий шрифт, устанавливая большой масштаб отображения. Если же
Глава 23 Печать изображений
Глава 23 Печать изображений Документ, созданный в Adobe Photoshop, разумеется, можно распечатать. Более того, поскольку Photoshop – профессиональный графический редактор, он содержит много настроек, которые, как правило, не задействуются обычными пользователями, но жизненно
Глава 11 Печать, справочная система и некоторые настройки программы Excel
Глава 11 Печать, справочная система и некоторые настройки программы Excel Теперь, когда мы уже поближе познакомились с программой Excel, рассмотрим некоторые вопросы, связанные с печатью документов, а также настройкой программы. Кроме того, разберемся, как работает справочная
Глава 10 Вывод чертежей на печать
Глава 10 Вывод чертежей на печать Одна из особенностей ArchiCAD – наличие в проекте не только графи ческой, но и текстовой документации: списков, отчетов, сценариев, описаний объектов, смет и т. п. Поэтому распечатать документацию в ArchiCAD можно в двух вариантах. Во-первых, в любой
Глава 8 Работа с листами и печать
Глава 8 Работа с листами и печать Окна просмотра в пространстве листаСоздание и редактирование листовПечатьРезюмеВы уже научились создавать несложные двухмерные чертежи. Однако в большинстве случаев работа на этом не заканчивается, так как результаты ваших трудов
Глава 13 Вывод чертежей на печать
Глава 13 Вывод чертежей на печать • Вывод на плоттер• Настройка плоттера• Вывод на принтер• Настройка принтера• Настройка параметров выводимого изображения• Оформление документацииЗаключительный этап создания проекта – вывод документации. При проектировании
Печать
Печать Последнее, что мы рассмотрим в этой главе, — это процесс печати фильмов Flash. Мы узнаем, как распечатать документ, открытый в среде Flash, и как позволить пользователю печатать только избранные кадры уже готового фильма, сохраненного в формате Shockwave/Flash. И начнем мы с