20 нояб. 2000 г.

Азы linux (для детей) урок 37

Команда для печати

Получение файла для принтера

Очень легко распечатать документ из приложения, выбрав в меню пункт Печать.
Для печати из командной строки используйте команду lp или lpr.
lp file(s)
lpr file(s)

Эти команды могут читать из канала, так что вы можете распечатать вывод какой-либо команды вот так
command | lp
Существует множество опций, осуществляющих настройку макета страницы, установку количества копий, выбор принтер, на который вы хотите отправить печать, если у вас их больше, чем один, размер бумаги, одностороннюю или двустороннюю печать, если принтер поддерживает эту функцию, поля и т.д. Читайте man-страницы для полного обзора.

Статус вашего задания на печать

После того как файл принят в очередь печати, данному заданию на печать присваивается идентификационный номер:
davy:~> lp /etc/profile
request id is blob-253 (1 file(s))
Для просмотра очереди печати используются команды lpq или lpstat. Когда они вводятся без аргументов, то отображается по умолчанию содержимое очереди печати.
davy:~> lpq
blob is ready and printing
Rank	Owner	Job	File(s)		Total Size
active	davy	253	profile		1024 bytes
davy:~> lpstat
blob-253	davy	1024	Tue 25 Jul 2006 10:20_01 AM CEST

Статус принтера

Какой принтер установлен по умолчанию в системе, которая имеет доступ к нескольким принтерам?
davy:~> lpstat -d
system default destination: blob
Какой статус у моего принтера(ов)?
davy:~> lpstat -p
printer blob now printing blob-253. enabled since Jan 01 18:01

Удаление заданий из очереди печати

Если вам не нравится, что вы видите из состояния команд, используйте lprm или cancel для удаления заданий.
davy:~> lprm 253
В графической среде вы можете увидеть всплывающее окно, сообщающее вам, что задание было отменено.
В больших системах lpc может быть использована для управления несколькими принтерами. Смотрите info- или man-страницы для каждой команды.
Существует множество GUI инструментов для печати, которые используются как интерфейс для lp, и у большинства графических приложений есть функции печати, которые используют lp. См. встроенную справку по функциям и специальную документацию к программам для получения дополнительной информации.
Почему существует две команды для каждой задачи, связанной с печатью?
Печать на UNIX и подобных системах имеет длинную историю. Когда-то использовались два весьма различных подхода: BSD-стиль печати и SystemV-стиль печати. Для совместимости Linux CUPS поддерживает команды обоих способов. Также следует отметить, что lp не ведет себя так же, как lpr, у lpq есть несколько различных опций, почти lpstat и lprm, но не совсем, как cancel. Не важно какую вы используете, просто используйте команды, которые наиболее удобный для вас, или с которыми у вас есть опыт работы в других UNIX-подобных системах.

Форматирование

Инструменты и языки

Если мы хотим получить что-то разумное от принтера, в первую очередь файл должен быть отформатирован. Помимо того, что существует обилие программного обеспечения для оформления, Linux поставляется с базовыми UNIX-инструментами и языками для форматирования.
Современные системы Linux поддерживают прямую печать, без форматирования пользователем целого ряда типов файлов: текст, PDF, PostScript и несколько графических форматов, таких как PNG, JPEG, BMP и GIF.
Для тех форматов файлов, которым необходимо форматирование, Linux поставляется с большим количеством соответствующих инструментов, таких как команды pdf2ps, fax2ps и a2ps, которые преобразуют другие форматов в PostScript. Эти команды могут создавать файлы, которые затем могут использоваться в других системах, в которых не установлены все инструменты для преобразования формата.
Помимо этих инструментов командной строки существует много графических программ для обработки текста. Доступно несколько офисных комплектов, многие из которых свободны. Они выполняют оформление автоматически после подачи задания на печать. Вот некоторые: OpenOffice.org, KOffice, AbiWord, WordPerfect и т.д.
Ниже приведены распространенные языки по отношению к печати:
  • groff: GNU версия команды roff UNIX. Является интерфейсом к groff-системе форматирования документов. Обычно она запускает команду troff, а для выбранного устройства назначается пост-процессор. Это позволяет создавать файлы PostScript.
  • TeX и макропакет LaTeX: один из наиболее широко используемых языков разметки в системах UNIX. Обычно вызывается как tex, который форматирует файлы и выводит соответствующее аппаратно-независимое представление набранного документа.
    Технические работы по-прежнему часто создаются в LaTeX из-за его поддержки математических формул, хотя усилия, чтобы включить эту функцию в другие приложениях, предпринимаются W3C (World Wide Web Consortium).
  • SGML и XML: Свободные парсеры, доступные для UNIX и Linux. XML является следующим поколением SGML, он образует основу для DocBook XML — системы документов (эта книга написана на XML, например).
Печать документации
Man-страницы содержат предварительно отформатированные troff данные, которые должны быть приведены к соответствующему виду, прежде чем они могут быть распечатаны на принтере. Печать выполняется с использованием опции -t команды man:
man -t command > man-command.ps
После чего распечатывается файл PostScript. Если место назначения печати настроено для вашей системы/аккаунта по умолчанию, вы можете просто выполнить команду man -t command для отправки напрямую отформатированных страниц на принтер.

Предварительный просмотр отформатированных файлов

Все, что вы можете отправить на принтер, может с таким же успехом быть отображено на экране. В зависимости от формата файла, можно использовать одну из следующих команд:
  • Файлы PostScript: с помощью команды gv (GhostView).
  • TeX dvi файлов: xdvi, или с помощью варианта для KDE - kdvi.
  • PDF файлы: xpdf, kpdf, gpdf или программа для просмотра Adobe, acroread, которая также доступна для бесплатного использования, но не является свободным программным обеспечением.
  • В таких приложениях как Firefox или OpenOffice обычно можно выбрать предварительный просмотр печати из меню.
Когда-то выбор для пользователей Linux был прост: все использовали один и тот же старый LPD от принадлежащего BSD кода Net-2. В то время LPR был более популярным, однако в настоящее время современные дистрибутивы Linux используют CUPS, Common UNIX Printing System (общую систему печати UNIX). CUPS представляет собой реализацию Internet Printing Protocol (IPP), подобного HTTP стандарта RFC, заменяющего почтенный (и неуклюжий) протокол LPD. CUPS распространяется под GNU Public License. CUPS также является системой печати по умолчанию в MacOS X.

Графическая конфигурация принтера

Большинство дистрибутивов поставляются с графическим интерфейсом для настройки сетевых и локальных (через параллельный порт или USB) принтеров. Они позволяют выбрать принтер из списка и проверить его работоспособность. Вам не придется беспокоиться о содержимом и местонахождении конфигурационных файлов. Перед установкой принтера смотрите системную документацию.
CUPS можно также настроить с помощью веб-интерфейса, который работает на порте 631 вашего компьютера. Чтобы проверить, что такая возможность включена, попробуйте просмотреть localhost:631/help или localhost:631/.

Проблемы печати

Не тот файл

При печати не того файла, задание может быть отменено с помощью команды lprm jobID, где jobID указывается в формате printername-printjobnumber (получить такую информацию можно с помощью команд lpq или lpstat). Это будет работать, когда другие задания ожидают печати в очереди этого принтера. Однако, вы должны действовать очень быстро, если единолично используете принтер, так как задания, как правило, становятся в очередь и отправляются на принтер в считанные секунды. Как только они появляются на принтере, то становится уже слишком поздно удалять задания инструментами Linux.
В подобных случаях, а также когда неправильно настроен драйвер печати, и выходит только какой-то мусор, вы можете попробовать выключить принтер. Однако, это может быть не лучшим путем решения проблемы, так как может привести к замятию бумаги и прочим нарушениям.

Не получается распечатать

С помощью команды lpq вы можете увидеть статус вашего задания:
elly:~> lpq
Printer: lp@blob
 Queue: 2 printable jobs
 Server: pid 29998 active
 Unspooler: pid 29999 active
 Status: waiting for subserver to exit at 09:43:20.699
 Rank   Owner/ID             Class Job Files          Size Time
1      elly@blob+997           A   997 (STDIN)         129 09:42:54
2      elly@blob+22            A    22 /etc/profile    917 09:43:20
В наши дни многие принтеры имеют веб-интерфейсы, которые могут отображать информацию о состоянии, если ввести IP-адрес принтера в веб-браузере:
Рисунок 8.1. Состояние принтера через веб-интерфейс
Веб-интерфейс принтера в Linux
Веб-интерфейс CUPS в сравнении с веб-интерфейсом принтера
Заметьте, что это не веб-интерфейс CUPS и работает только для принтеров, поддерживающих такую функцию. Проверьте документацию вашего принтера.
Если ID вашего задания нет в системе и нет на принтере, обратитесь к системному администратору. Если ID вашего задания указан в выходных данных, убедитесь, что принтер в настоящее время печатает. Если это так, просто подождите, ваше задание будет выполнено в свое время.
Если принтер не печатает, проверьте, что там есть бумага, физическое подключение к электроэнергии и сети передачи данных. Если все нормально, принтер может нуждаться в перезагрузке. Узнайте мнение системного администратора.
В случае сетевого принтера, попробуйте выполнить печать с другого хоста. Если принтер доступен с вашего собственного хоста (см. Главу 10, Сеть), вы можете попробовать отправить файл в его формате, file.ps в случае принтера PostScript, используя клиент FTP. Если это сработает, ваша система печати неправильно сконфигурирована. Если не сработает, возможно принтер не понимает формат, который вы ему скармливаете.

Служба печати Linux поставляется с рядом инструментов, основанных на стандартных инструментах UNIX LPD, будь то варианты от SystemV или BSD. Ниже приведен список команд, связанных с печатью.
Таблица 8.1. Новые команды в главе 8: Печать
Команда Значение
lpr или lp Печать файла
lpq или lpstat Запрос очереди печати
lprm или cancel Удаление задания на печать
acroread Просмотр документов pdf
groff Инструмент форматирования
gv Просмотр файлов PostScript
printconf Настройка принтеров
xdvi Просмотр документов dvi
xpdf Просмотр документов pdf
*2ps Конвертация файлов в PostScript



Упражнения

Настройка и тестирование принтеров означает быть под одним пользователем и иметь доступ к учетной записи суперпользователя. Если это так, то вы можете попробовать:
  • Установку принтера с помощью графического интерфейса вашей системы.
  • Печать тестовой страницы с помощью GUI.
  • Печать тестовой страницы с помощью команды lp.
  • Печать из приложения, например, Mozilla или OpenOffice, выбрав Файл → Печать в меню.
  • Отключите принтер от сети или локального компьютера/принт-сервера. Что происходит при попытке что-нибудь распечатать?
Следующие упражнения можно делать без принтера или доступа к аккаунту root.
  • Попробуйте создать файлы PostScript из различных исходных файлов (например, HTML, PDF, man-страниц). Посмотрите результат с помощью вьювера gv.
  • Убедитесь, что демон печати работает.
  • Как бы ни было попробуйте распечатать файл. Что происходит?
  • Создайте файл PostScript с помощью Mozilla. Проверьте его с помощью gv.
  • Конвертируйте его в формат PDF. Посмотрите с помощью xpdf.
  • Как бы вы распечатали файл GIF из командной строки?
  • Используйте a2ps для печати файл /etc/profile к выходному файлу. Проверьте опять с gv. Что произойдет, если вы не уточните выходной файл?