Adobe Acrobat Reader доступен для Linux; просто загрузите его с сервера фирмы .
Вы также можете использовать xpdf, который является freeware и идет с исходными текстами, и я думаю сейчас Ghostview поддерживает просмотр файлов PDF при помощи gs под X11.
Большие системы, под которыми я подразумеваю сети, включающие более двух принтеров или серверов, имеют специальные требования. Вот описание одной из возможных спецификаций.
Каждый принтер должен иметь одну точку контроля, откуда администратор может приостановить, переупорядочить или переназначить задания в очереди. Для реализации этого каждый должен печатать на локальный сервер, который будет выполнять буферизацию заданий и направлять их на соответствующий принтер.
Используйте LPRng, по крайней мере на серверах; BSD LPD является имеет слишком много недостатков для "нормального" использования.
Клиентские системы не должны иметь уникальные настройки печати. Для реализации этого используйте расширенный синтаксис printcap в LPRng, так что вы сможете везде использовать один и тот же файл printcap.
Очереди печати не должны называться по названию производителя или модели; очереди печати лучше именовать лучше по расположению (floor2_nw) или по возможностям (color_transparency). Три года спустя, если сломается принтер, то вы сможете сменить его другой моделью без введения в заблуждение.
Разработайте страницу web, которая показывает детальную информацию о каждом из принтеров, включая расположение, возможности и т.п. Рассмотрите возможность показа очереди. Сложные сетевые среды неуправляемы без соответствующей документации.
На машинах с Unix, используйте PDQ для того, чтобы предоставить выбор параметров печати, таких как двухстороннюю печать или размер бумаги, и заставить пользователей запускать все задания Ghostscript под правильным идентификатором пользователя.
На машинах с Windows и Apple, либо используйте везде
поставляемые драйвера (Samba поддерживает механизм автоматической загрузки драйверов) или везде
используйте драйвера Postscript. Не смешивайте разные драйвера; примитивные текстовые процессора часто производят разный код при изменении драйвера принтера; пользователи не могут связать изменения в виде с отдельной парой клиент/принтер.
Если возможно, то покупайте принтер с большими ресурсами для печати в больших объемах. Если возможно по бюджету, то используйте свойство LPRng печати на много принтеров через одну очередь и назначьте "приходящую няню"; принтера являются сложными механическими устройствами, которые будет часто зажимать бумагу или работать без нее в таких конфигурациях.
Не переживайте, что принтера должны быть подключены к рабочим станциям; сейчас Ethernet "сервера печати" стоят в районе $100. Возможность размещать принтера где есть сеть является большим удобством по сравнению с расположением принтеров около машин; располагайте принтера в разумных, центральных точках.
Цветные струйные принтера сильно зависимы от качества бумаги для получения хорошего качества вывода. Дорогая глянцевая бумага с покрытием, для струйных принтеров позволит вам добиться печати с близким к фотографии качеством, в то время как обычная бумага станет причиной тусклых красок и неясных деталей. Не-глянцевая бумага с покрытием позволит вам получить вывод среднего качества и вероятно лучше всего подходит для печати текста. Негибкая глянцевая бумага с покрытием позволит получить результат, сходный с более легкой глянцевой бумагой, но будет выглядеть как обычная фотография.
Я владею HP Deskjet 500 и Lexmark Optra 40. Оба принтера работают великолепно: Deskjet является старой черно-белой моделью, хорошо поддерживаемой Ghostscript; а Optra является более современным цветным струйным принтером с полной поддержкой Postscript и PCL 5 (!).
У меня также есть сервер печати Hawking Technology 10/100 Ethernet (модель 7117, в действительности выпущенная Zero One Technologies на Taiwan); это делает возможным поместить принтер в любом месте с подключением к сети и питанию, вместо того, чтобы размещать его рядом с компьютером. Это маленькая заглушка, которая присоединяется к параллельному порту компьютера и имеет Ethernet разъем на другой стороне. Его недостаток заключается в том, что он не поддерживает двустороннее сообщение, так что я не мог приспособить его для того, чтобы он посылал сообщение по электронной почте когда заканчиваются чернила.
Специальная благодарность Jacob Langford, автору pdq, кто дал нам нечто лучшее, чем небольшое число скриптов, сгруппированных вокруг программы контроля линейной печати.
Информация о smbprint из статьи Marcel Roelofs <marcel@paragon.nl>.
Информация о nprint для использования принтеров Netware была дана Michael Smith <mikes@bioch.ox.ac.uk>.
Раздел о последовательных принтерах под lpd от Andrew Tefft <teffta@engr.dnet.ge.com>.
Данные о гаммах и прочих вещах для gs были посланы Andreas <quasi@hub-fue.franken.de>.
Два параграфа о о 30-ти секундной задержке (closing_wait) последовательного драйвера были присланы Cris Johnson <cdj@netcom.com>.
Robert Hart послал несколько великолепных параграфов об установке сервера печати на сетевых принтерах HP, которые я использовал без изменений.
И специальное спасибо десяткам тех, кто в течении года указывал на типографские опечатки, неправильные ссылки и ошибке в документе.
Одним из интересных новичков на сцене является "CUPS", реализация протокола печати Internet, определенный в RFC сходный с HTTP протокол заменяющий древний протокол lpd. Основная часть реализации этого пакета является продуктом с открытым исходным кодом от коммерческого продукта "Easy Print", который состоит из системы буферизации и набора коммерческих драйверов печати, созданных на основе Ghostscript (ESP Print Pro).
CUPS, сама система буферизации распространяется под действием лицензии GPL. ESP Print Pro распространяется только в двоичном виде как коммерческий продукт (за исключением системы буферизации, которая также доступна под действием GPL и называется CUPS).
Смешение по умолчанию в Ghostscript оптимизован для устройств с маленьким разрешением. Будет производится смешение с предпочтением огрубления при попытке создания вывода с качеством 60ppi (не путайте с dpi, ppi - это "видимые" цветные пикселы на дюйм, которые вы получите после смешения). Это создаст более бедный вывод на современных цветных принтерах; в частности, струйные принтера с фотобумагой могут использовать лучшие настройки ppi.
Для выравнивания этого используйте ключ Ghostscript -dDITHERPPI=x, где x это используемое значение. Таким способом вы можете или не можете добиться успеха со всеми драйверами; многие из новых драйверов реализуют свое собственное смешение и не обращают внимания на настройки. Некоторые драйвера могут использовать либо обычное смешение Ghostscript, либо реализованное в драйвере.
Это дает нам великолепный аргумент в объявлении драйвера PDQ, если это применимо.
Debian предлагает выбор между обычным lpd и LPRng; вероятно LPRng будет наилучшим выбором. Я верю, что Debian также предлагает выбор утилит для настройки принтера; пакет apsfilter версии 5 или более поздней вероятно будет лучшим выбором, поскольку в этих версиях добавлена поддержка LPRng и драйверов uniprint Ghostscript.
Результат печати на цветных струйных принтерах теряет четкость всего после нескольких лет, особенно если подвергается длительному воздействию света и воздуха; это происходит и-за чернил. Для принтеров у которых расходными материалами являются только чернила, таких как принтера Epson и Canon, можно купить архивные чернила, которые в меньшей степени подвержены данной проблеме.
PDQ позволяет пользователям выбрать принтер на который будет производится печать. Принтер в PDQ определяется как комбинация "драйвера" и "интерфейса". И драйвер и интерфейс являются текстовыми описаниями в файле настройки PDQ.
Интерфейс PDQ описывает то, как данные посылаются на принтер. Наиболее общими интерфейсами, которые поставляются вместе с дистрибутивом PDQ в качестве примера файла printrc, являются:
local-port
Интерфейс локального порта работает с параллельным или последовательным портом на той машине, на которой запущен PDQ. Используя этот интерфейс PDQ может печать прямо в параллельный порт. Заметьть, что если вы работаете в многопользовательской системе, то это может вызвать неразбериху, и если вы имеете сеть, то интерфейс local-port будет применим только для одной системы. В этих случаях вы можете определить очередь печати lpd без фильтра и без проблем печатать на в эту очередь одинаковым способом со всех систем и пользователей. Интерфейс имеет аргумент -- имя устройства; обычным значением является /dev/lp0.
bsd-lpd
Интерфейс bsd lpd общается по сети с демоном LPD или с работающим по протоколу LPD сетевым принтером. PDQ поддерживает постановку, отмену заданий и запросы к интерфейсу LPD. Этот интерфейс имеет параметры: имя сервера и название очереди.
appletalk
Интерфейс appletalk позволяет вам печатать на принтера в сети Appletalk; если у вас есть принтер подключенный к компьютеру Mac, то необходимо использовать этот интерфейс. Этому интерфейсу для работы нужен пакет Netatalk.
Драйвер PDQ описывает как перевести печатаемые данные в формат, который понимает данные принтер. Для принтеров понимающих Postscript, он будет включать преобразования из ascii в Postscript; для не-Postscript принтеров он будет описывать преобразования из Postscript в язык принтер, используя Ghostscript.
Если ни одна из включенных в поставку PDQ спецификаций драйвера не подходит к вашему принтеру, то читайте дальнейшие разделы и пишите свой драйвер.
Пожалуйста посылайте мне информацию о том сто имеется в других дистрибутивах.
Возможно перенаправить очередь lpd через программу
(часть набора Samba) на основанный на TCP/IP сервис печати SMB. Samba включает скрипт называемый smbprint. Вкратце, вы помещаете конфигурационный файл для нужного принтера в его директорию спула, и устанавливаете для него скрипт smbprint
как if-фильтр.
Запись в /etc/printcap выглядит примерно так:
lp|remote-smbprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint:
Вы должны прочитать документацию внутри скрипта smbprint
для более детальной информации о настройке
Вы также можете использовать программу smbclient для посылки файла прямо на сервис печати SMB без вовлечения в этот процесс lpd. Смотрите справочные страницы.
Для того чтобы заставить nprint работать через lpd, вам нужно написать маленький скрипт для печати потока стандартного ввода на принтер NetWare, и установить его как if-фильтр для очереди печати lpd. Вы получите что-то подобное этому:
sub2|remote-NWprinter:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script:
nprint-script может выглядеть примерно так:
#! /bin/sh # Вы должны сначала попробовать вход как guest без пароля! /usr/local/bin/nprint -S net -U name -P passwd -q printq-name -
Большинство не лазерных принтеров страдают от факта, что их точки немного больше. В результате картинки получаются слишком темными. Если вы страдаете от этой проблемы, то вы должны использовать свою собственную функцию переноса. Просто создайте следующий файл в директории lib ghostscript и добавьте его имя в вызов gs перед именем нужного файла. Вам может быть необходимо поиграть со значениями для настройки на ваш принтер. Более низкие значения дают более яркую печать. Особенно если ваш драйвер использует алгоритм Floyd-Steinberg для растеризации цветов, то более низкие значения (0.2 - 0.15) вероятно будут хорошим выбором.
---8<---- gamma.ps ----8<--- %! %transfer functions for cyan magenta yellow black {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer ---8<------------------8<---
Также возможно чинить принтера, которые имеют некоторый сорт проблем с цветом с помощью подбора значений указанных выше. Если у вас есть такая проблема, я рекомендую вам использовать файл colorcir.ps, который идет вместе с ghostscript (в поддиректории examples/), как тестовую страницу.
Для многих драйверов современных струйных принтеров существуют опции командной строки, или отдельный файлы upp для драйверов, которые реализуют изменения гаммы и других параметров и адаптируют принтер для разных типов бумаги. Вы должны заглянуть в них, до экспериментирования с Postscript, для того чтобы исправить проблемы.
Много написанных пакетов фильтров (и другого программного обеспечения относящегося к печати) доступно с
. Такие утилиты как psutils, a2ps, mpage, dvitodvi, flpr и т.п. все могут быть найдены там.
В настоящее время существует несколько пакетов, которые старались сделать настройку принтера более легкой. Они вероятно все еще существуют, но лучший из них и более современный это пакет APS Filter, написанный Andreas Klemm, который имеет управляемый меню настройщик printcap и обрабатывает практически любой тип вообразимого ввода. Если ваш поставщик не поставил вам хорошую утилиту настройки принтера, то APS Filter это правильный путь решения проблем.
Это невероятно важная программа для печати в Linux. Большинство печатающего программного обеспечения под Unix генерирует PostScript, поддержка которого принтером обходится примерно в $100 долларов на каждый принтер. Тем не менее Ghostscript, является свободным и генерирует вывод на языке вашего принтера из PostScript. Когда он связан c описанием драйвера принтера PDQ или с входным фильтром вашего lpd, это дает вам виртуальный PostScript-принтер и значительно упрощает жизнь.
Ghostscript доступен в двух формах. Коммерческая версия Ghostscript, называемая Aladdin Ghostscript, mможет быть использована свободно для персонального использования, но не может распространяться с коммерческими дистрибутивами Linux. В общем она примерно на год впереди свободной версии Ghostscript; в настоящее время, например, она поддерживает много цветных струйных принтеров, в то время как старый Ghostscripts не делает этого.
Свободная версия Ghostscript называется GNU Ghostscript, и это просто устаревшая версия Aladdin Ghostscript любезно предоставленная для GNU. (Спасибо славному Aladdin за эту договоренность; больше производителей программного обеспечения должны поддерживать свободное программное обеспечение этим способом, если они не могут сделать распространение кода в терминах GPL).
Что бы вы не делали с
, будьте уверены что запускаете его с опцией запрещающей доступ к файлам (-dSAFER). PostScript это полнофункциональный язык, и плохая программа на PostScript может доставить вам достаточно неприятностей.
Честно говоря разговор на PDF, (Формате Переносимого Документа Adobe) это в действительности чуть больше чем организованный PostScript в сжатом файле. Ghostscript может обрабатывать ввод в PDF также как это делает с PostScript. Так вы можете быть первым в вашем квартале с принтером имеющим возможность обработки PDF.
Ghostscript имеет некоторые затруднения при рендеринге фотографий на большинстве драйверов. Существует несколько проблем:
Много драйверов имеют плохо настроенную поддержку цвета. Часто цвета не соответствуют выводимым драйверами Windows или выводу на экран. Хотя все драйвера и сам Ghostscript имеют легко настраиваемую поддержку цвета; настройка "Gamma" является той вещью с которой можно провести эксперименты, а другие часто описаны в руководстве пользователя Ghostscript.
Я знаю только об одном драйвере Ghostscript, который поддерживает 6- и 7-мицветную печать; он находится в состоянии бета в настоящее время и поддерживает некоторые модели принтеров Epson Stylus Photo. Ходят слухи, что он создает лучший вывод, чем драйвер Windows (!).
Ghostscript часто грубо заканчивает смешение цветов или генерирует вывод с нарушениями, такими как полосатость. Смешение обычно может быть исправлено; смотрите вышеприведенный раздел о цветной печати в ghostscript, а также читайте документацию на ваш драйвер.
У вас должна быть возможность исправления некоторых из этих проблем путем настройки Ghostscript; для получения информации о том как это сделать смотрите раздел о Ghostscript данного документа. Работать с ключами Ghostscript намного легче, если вы объявите их как ключи в объявлении драйвера PDQ.
Было сказано, что очевидным решением будет использование не-Ghostscript программного обеспечения для печати фотографий и в самом деле такие вещи существуют.Главным соперником является модуль печати в Gimp, который поддерживает пиксел-в-пиксел печать на принтерах Epson Stylus и принтерах, поддерживающих Postscript (с базовой поддержкой PPD). Скоро этот драйвер также будет доступен для Ghostcript. Также возможно для этой цели использовать разные внешние программы pnm-в-foo, используемые для печати на таких принтерах, как например дешевые модели Lexmark; они печатают битовые карты пиксел-в-пиксел. Ключ print-via-filter не так сложно добавить в Gimp.
Конечно Наилучшим решением будет покупка принтера, понимающего Postscript; такие принтера обычно могут полностью контролироваться доступным свободным программным обеспечением, и будут использовать все возможности принтера.
версия 4.5, февраль 2000
Это Linux Printing HOWTO, набор информации о том как создавать, просматривать, печатать и отсылать по факсу все что угодно из под Linux (и в большинстве других Юниксов).
Примечание переводчика: Шлите мне любые комментарии и замечания, даже небольшие.
Некоторые принтера HP используют "Printing Performance Architecture" (маркетиноговое название для "мы были слишком дешевыми чтобы реализовывать PCL). Это поддерживается обходным путем через транслятор pbm2ppa, написанный Tim Norman. Обычно вы используете ghostscript для растеризации PostScript в точечную картинку в формате pbm и затем используете pbm2ppa для ее трансляции в картинку в специфическом для принтера формате ppa, которую можно отправлять на принтер. Эта программа также поставляется сейчас в формате драйвера ghostscript.
Программное обеспечение для ppa может быть найдено на ; pbm2ppa поддерживает некоторые модели HP 720, 820, и 1000; читайте документацию, которая поставляется вместе с пакетом для более детальной информации о поддержке принтеров с ppa.
Существует некоторое количество программ для факса, которые позволят вам пересылать документы по факсу. Одна из наиболее мощных программ это HylaFax, автор Sam Leffler, доступная с ftp.sgi.com. Она поддерживает все виды вещей от множественных модемов до широковещательной передачи.
SuSE продает клиента Java HylaFax, который как утверждают работает на любых платформах с Java (включая Windows и Linux). Существует также факс-клиент не на Java для большинства платформ; Linux может обрабатывать едва ли не все потребности для работы с факсом.
Также доступна и является лучшим выбором для большинства машин с Linux
, простая программа которая посылает факсы. Программа для getty-- mgetty может передавать факсы (и даже создавать голосовые письма на некоторых модемах!).
Если вы уже настроили lpd для печати на вашем принтере, или ваш системный администратор уже сделал это, или ваш поставщик сделал это для вас, то все что вам необходимо-- это научиться как использовать команду lpr.
делает обзор этого и вы должны знать еще несколько других команд манипуляции очередью печати. Или просто прочитайте справочную страницу lpr(1).
Однако если у вас новая машина или новый принтер, вам необходимо будет настроить сервисы печати одним или другим способом до того как вы сможете печатать. Читайте!
Используя PDQ, вы определяете принтер с типом интерфейса "bsd-lpd". Этот интерфейс берет в качестве аргумента имя удаленного сервера и имя очереди печати; помощник определения принтера запросит у вас эти параметры.
Нет предопределенного интерфейса smb, что я сознаю, но он может достаточно легко создан используя модель, заданную интерфейсом appletalk на базе пакета Netatalk. Некоторые люди создали его и выслали его для включения в дистрибутив!
Прочитайте раздел о Windows/LPD в следующих разделах данного документа для дополнительных советов как сделать данный драйвер.
PDQ включает в поставку объявление интерфейса, который называется "appletalk". Он использует пакет Netatalk для печати на подключенный к сети принтер Apple. Просто выберите этот интерфейс при использовании помощника добавления принтера в xpdq.
Существует экспериментальный сервис, который позволит вам послать сообщение по электронной почте в котором находится что-то что вы хотите напечатать, так что содержимое этого письма появится на факс-машине в другом месте. Поддерживаются форматы подобные postscript, так что даже если глобальный охват является неоднородным, то, это все равно может быть очень полезным сервисом. Для более детальной информации о печати через сервис удаленной печати, смотрите .
Это четвертое поколение Printing HOWTO (PHT). Хронологически история PHT может быть поделена следующим образом:
Я написал этот документ в 1992 в ответ на большое число вопросов о печати в группе новостей comp.os.linux, и разослал его. Это на несколько месяцев предшествовало проекту HOWTO и таким образом это был первый FAQ названный `howto'. Эта редакция была в формате plain ascii.
После присоединения к проекту HOWTO, Printing-HOWTO был соединен с Lpd FAQ Brian McCauley <B.A.McCauley@bham.ac.uk>; мы продолжали быть соавторами PHT примерно два года. В тоже время мы включили работу Karl Auer <Karl.Auer@anu.edu.au>. Эта редакция PHT была в формате TeXinfo, и доступна в форматах PS, HTML, Ascii, и Info.
После примерно годового загнивания и распада PHT, и неудачных попыток делать что-нибудь кроме сопровождения документа, он был полностью переписан. Эта редакция PHT сделана в формате SGML, используя LinuxDoc DTD и пакет SGML-tools-1. Начиная с версии 3.27, в документ включена база данных поддерживаемых принтеров; до версии 3.27 в этом документе не было списка совместимости принтеров (!).
В середине января 200 года я узнал о программе для буферизации печати PDQ. PDQ обеспечивает настолько лучший механизм печати, чем lpd, что я измученный несколькими часами экспериментов с ним переписал части этого документа и сменил номер его версии на 4.
Пакет ncpfs включает демона называемого pserver, который может быть использован для обеспечения сервиса очередей печати NetWare. Как я понял эта система требует основанную на Bindery систему NetWare, т.е. 2.x, 3.x, или 4.x с разрешенным доступом к bindery.
Для более детальной информации о ncpfs и ее программе pserver смотрите .
Печать из под клиента Windows (или OS/2) на сервер Linux прямо поддерживается через SMB используя пакет SAMBA, который также поддерживает разделение вашей файловой системы Linux с клиентами Windows.
Samba включает в себя довольно полную документацию. Вы можете либо настроить magic-фильтр на машине с Linux и печатать на нее в формате PostScript или установить специфичные для принтера драйвера на всех машинах с Windows и обрабатывать очередь без фильтрации. Полагаясь на драйвера Windows вы можете в некоторых случаях получить более качественный вывод, но это дает больше административной нервотрепки если у вас много машин с Windows. Так что сначала попробуйте PostScript.
Используя PDQ, вы должны настроить Samba для запуска команды pdq с соответствующими аргументами вместо команды lpr, которая выполняется по умолчанию. Я верю, что Samba будет запускать pdq с правами соответствующего пользователя, так что он должен работать нормально. Существует несколько настроек Samba, которые вы должны выставить для правильной работы:
printcap
этот параметр должен указывать на "фальшивый" файл, в котором вы должны перечислить доступные принтера. Все что нужно указать, это короткие и длинные сервера для каждого из принтера, один на каждую строку:
lp1|Printer One lp2|Printer Two lp3|Printer Three
Короткое имя будет использоваться как имя принтера в команде печати:
print command
Этот параметр должен быть установлен во что-нибудь подобное следующему pdq -P %p %s ; rm %s.
lprm command
Для этого параметра пока нет хорошего значения. Буферизованные задания PDQ будут сниматься после истечения времени, так что если принтер не работает, то все нормально. Но если вы просто решили отменить свое намерение, то вы можете использовать программу xpdq для отмены заданий, но это неприменимо для Windows. Просто вствьте сюда ничего не делающую команду, такую как true. Если вы используете lpd или lprng в качестве основы, то соответствующая команда lprm должна нормально работать. Я не уверен, что Samba может идентифицировать номер задания в очереди lpr для запущенных pdq заданий.
lpq command
Также PDQ не предоставаляет хорошего значения, которое можно поместить здесь. Распределенные системы не предлагают нормального решения для того, чтобы видеть очередь печати, но основанные на samba сервера должны иметь достойную схему. если вы используете lpd или lprng как основу, то соответствующая команда lpq c должна работать; вы просто не сможете увидеть задания, до того, как они будут отфильтрованы PDQ.
Большинство языков разметки лучше подходят для больших или повторяющихся проектов, где вы хотите чтобы компьютер контролировал компоновку текста, чтобы сделать ее единой.
nroff
Этот один из первых языков разметки Unix. Справочные страницы-- это наиболее общий пример вещей отформатированных с использованием макросов *roff; много людей "ругаются" на нем, но nroff имеет, по крайней мере для меня, более тайный синтаксис чем необходимо, и вероятно делает бедный выбор для новых работ. Это стоящее знание, хотя вы можете печатать справочные страницы прямо в postscript с помощью groff. Большинство команд man будут делать это для вас с помощью man -t foo | lpr.
TeX
TeX, и макро-пакет LaTeX, это один из наиболее широко применяемых языков разметки в Unix. Технические работы часто написаны в LaTeX, потому-что он сильно упрощает создание компановки и это все еще одна из нескольких систем обработки текста, которая поддерживает математику и хорошо и полностью. Выходной формат TeX это dvi, и он конвертируется в PostScript или Hewlett Packard PCL при помощи dvips или dvilj. Если вы желаете установить TeX или LaTeX, установите всю группу пакетов teTeX; они содержат все необходимое. Недавние версии TeX включают в себя pdfTeX и pdfLaTeX, которые сразу могут создавать файлы Adobe PDF. Доступны команды создания ссылок и возможностей навигации в файле PDF.
SGML
Существует по крайней мере один свободный обработчик (parser) sgml доступный для Unix и Linux; его форма это основа системы документации Linuxdoc-SGML. Он может также поддерживать другие DTD, из которых самым примечательным является DocBook.
HTML
Некоторые люди предполагают, что для отдельных проектов может быть достаточно писать их в HTML и печатать используя Netscape. Я не согласен с этим, но это YMMV.
Почти все что вы можете напечатать вы также можете просмотреть на экране.
Здесь мы перейдем к реальному программному обеспечению. По существу Linux может запускать много типов исполнимых файлов с разной степенью удачи: Linux/x86, Linux/Alpha, Linux/Sparc, Linux/foo, iBCS, Win16/Win32s (при помощи dosemu и, иногда, с Wine), Mac/68k (через Executor), я Java. Я буду просто обсуждать родное для Linux и общее для Unix программное обеспечение.
Для самого Linux, выбор довольно ограничен теми продуктами доступными в общем для Unix:
Для того чтобы печать работала хорошо, вам необходимо понять как работает система буферизации.
Для общих конфигураций вам вероятно захочется проигнорировать этот раздел, вместо этого вы должны перейти к разделу о Решениях Производителей, или еще лучше к документации вашего поставщика. Большинство дистрибутивов Linux поставляет одну или несколько дуракоустойчивых утилит для того, чтобы делать все описанное здесь для основных типов принтеров.
Если предоставленные вам утилиты не подходят вам, или вы хотите контролировать настройки печати, то вы должны использовать PDQ; Я рекомендую использование PDQ в большинстве случаев.
Вы в действительности используете для печати разные команды в зависимости от того, какое программное обеспечение для буферизации вы используете.
Вы можете печатать используя fax-машину, или без нее, используя модем.
Одним из свойств pdq и lpd является то что они поддерживают печать по сети на принтер, физически подключенный к другой машине. С помощью правильной комбинации фильтров и разнообразных утилит, вы можете печатать используя lpr на принтера во всех видах сетей.
В наши дни немного трудно выбрать принтер; производится много моделей, среди которых необходимо сделать выбор. Вот небольшой список советов по выбору:
Стоимость
Вы получите то, за что вы заплатили. Большинство принтеров в пределах $200-300 будут печатать достаточно хорошо, но стоимость печатной страницы будет выше. Для некоторых принтеров поставляют только один или два картриджа к стоимости нового принтера! Аналогично дешевые принтера не будут сохраняться очень долго. По меньшей мере дорогие принтера имеют значение MTBF (Cреднее время наработки на отказ) равное примерно трем месяцам.
Струйные принтера
Головки для струйных принтеров со временем станут непоправимым препятствием, так что возможность сменить головку иногда будет свойством. Печатающие головки для струйных принтеров очень дороги, интегрированный картридж с печатающей головкой и чернилами, стоит в 10 раз дороже простого картриджа с чернилами, так что возможность замены головки только когда это необходимо также хорошее свойство. Принтера Epson Stylus имеют тенденцию к наличию фиксированной головки, а принтера HP DeskJets стремяться иметь головки интегрированные в картридж. Canons имеют картриджы стороних производителей с независимо заменяемыми банками с чернилами; мне нравится такой дизайн. OTOH, картриджи HP не являются ненормально дорогими, и HP создал более полную линую продуктов; Canon часто предлагает решения с точки зрения качества печати. Вы не можете выиграть.
Лазерные принтера
Лазерные принтера расходуют барабаны и тонер. Самые дешевые модели включают вместе тонер и барабан в один большой картридж; эти решения стоят дороже. Лучшим решением для больших объемов является отдельный тонер в виде порошка или по крайней мере отдельные картриджи для тонера и барабана.
Фотографические принтера
Наилучшее фотографическое качество получается термических принтеров подобных серии Alps (термический перенос сухих чернил или сублимация краски). Некоторые из моделей Alps доступны по средствам, но у них плохая поддержка Linux (кто-то говорил мне о картинках с полосами и большой зернистостью). Специализированные струйные принтера обычно используют 6 цветную CMYKcm печать или даже 7 цветный процесс CMYKcmy; только модели с поддержкой Postscript работают с Linux, поскольку Ghostscript не поддерживает 6- и 7-цветную печать. Хотя чтобы получить хороший вывод в CMYK очень просто. Все принтера для фото-печати дороги для работы; либо вы всегда заменяете весь картридж или перезаполняете отдельные цвета для вашего великолепного принтера. Специальная бумага также стоит дорого. Смотрите также раздел о печати фотографии в конце документа, а также раздел о настройке цветов в Ghostscript.
Если вы хотите купить принтер, то вы можете посмотреть в нескольких местах информацию о том, будет ли он работать. Назначение Printing HOWTO--- быть полным списком состояния поддержки принтера в Linux. Краткое содержимое этой базы приведено ниже; убедитесь, что вы проверили интерактивную версию базы данных для дополнительной информации о принтере и информации о том, какой драйвер необходимо использовать.
Ghostscript содержит список некоторых работающих принтеров, так же как и ссылки на другие страницы.
содержит сотни сообщений типа "это работает" и "это не работает". Попробуйте все деревья сообщений, и если ничего не получилось, то проверьте, что ваш принтер содержится и правильно описан в , так что он будет правильно перечислен в этом документе в следующих версиях.
До недавнего времени выбор для пользователей Linux был очень прост-- каждый запускал тот же самый старый lpd, который был почти дословно перенесен из кода BSD Net-2. Даже сегодня большинство продавцов продает это программное обеспечение. Но ситуация начинает меняться. Системы подобные SVR4, включая Sun Solaris, идут с полностью отличающимся пакетом печати, сконцентрированным вокруг lpsched.
В настоящее время я рекомендую систему PDQ и для простых пользователей домашних компьютеров и для (используя сочетание pdq/lpd) людей, работающих в более крупных средах. Она обеспечивает самый простой и самый гибкий механизм настройки и великолепные пользовательские утилиты (конечно только те, которые обеспечивают общую настройку принтера по функциональности равны диалогу настройки принтера в Windows).
Список драйверов для данного принтера выглядит следующим образом:
Driver: Ghostscript: -sDEVICE=bj200 -r360x360 # (360x360 BW) Driver: Ghostscript: -sDEVICE=bjc600 -r360x360 # (360x360 Color)
Документация в базе данных сообщает нам, что тип драйвера "Ghostscript", который является набором ключей для Ghostscript, без "обычных" ключей, таких как -q или файлом, указывающим эти ключи.
BJC-210 поддерживает одну полезную опцию: пользователь должен выбрать в каком режиме будет печатать: в цветном или черно-белом. Давайте объявим это как опцию выбора, названную "MODE":
option { var = "MODE" desc = "Print Mode" # default_choice "Color" # раскомментируйте для установки значения по умолчанию choice "BW" { # Часть value назначает переменной MODE все что вы захотите. # Мы будем назначать текст, который отличается для разных наборов # ключей Ghostscript для каждого из режимов value = "bj200" help = "Fast black printing with the black cartridge." desc = "Black-only" } choice "Color" { value = "bjc600" help = "Full-color printing." desc = "Color" } }
При описанном выше объявлении пользователь будет видеть выбор только из значений Color или BW, в диалоге драйвера принтера при печати через xpdq. В командно-строковой утилите pdq, пользователь может указать ключи -oBW или -oColor. Значение по умолчанию может быть установлено с помощью xpdq, или объявлено с помощью ключевого слова default_choice.
Большинство дешевых струйных принтеров Lexmark используют собственный язык и следовательно являются принтерами только для Windows. Однако, Henryk Paluch написал программу, которая может печатать на Lexmark 7000. Имеется надежда, что он сможет выяснить как печатать в цвете и расширит поддержку для остальных струйных принтеров Lexmark. Для дополнительной информации смотрите .
Similarly, there are now drivers for the 5700, 1000, 1100, 2070, and others. See the supported printers listing above, and my web site, for more information on obtaining these drivers.
Lpd обозначает Line Printer Daemon (демон линейной печати), и ссылается в разных контекстах и на программу-демона и на весь набор программ которые работают с системой печати. Это:
Демон системы печати. Один из них работает для контроля действий на машине, И запускается один на каждый принтер пока принтер печатает.
Пользовательская команда печати. Lpr контактирует с lpd и выдает новое задание печати в очередь печати.
Перечисляет задания в очереди печати.
Команда контроля системы lpd. С помощью lpc вы можете останавливать, начинать, переупорядочивать и т.п. очереди печати.
lprm
удаляет задание из очередей печати.
Теперь как это работает вместе? Когда система загружается, стартует процесс под названием lpd. Он сканирует файл /etc/printcap чтобы узнать какие принтера он будет обслуживать. Каждый раз при запуске lpr, lpr контактирует с lpd через именованный сокет /dev/printer, и передает lpd и файл для печати и некоторую информацию о том кто печатает и как печатать файл. Затем lpd печатает файл на соответствующем принтере в порядке очереди.
Система lp была спроектирована когда большинство принтеров было линейными принтерами-- так что люди в большинстве печатали чистый ascii. Как показало время, только небольшое добавление было необходимо чтобы заставить lpd работать довольно хорошо с заданиями сегодняшнего дня, которые часто идут в формате PostScript, или текст, или dvi, или..
Есть данные, что некоторые поставщики Linux будут обеспечивать поддержку LPRng, как менее древней системы буферизации печати, которая более менее свободно доступна. LPRng более легка для администрирования больших организаций (читайте так: более одного принтера, любые последовательные принтера, или любые специфические не-lpd сетевые принтера) и менее страшная основа, чем предоставляет lpd. Она даже претендует на то, что система является безопасной -- нет исполняемых файлов с битом SUID, и она поддерживает аутентификацию через PGP или Kerberos.
LPRng также включает некоторые примеры настроек для типовых сетевых принтеров - в основном HP LaserJets, которые имеют некоторые возможности учета ресурсов. Если вы хотите получить больше информации о LPRng, то посмотрите .
LPRng распространяется либо под GPL либо под Artistic license. (Раньше это было не так).
Принтеры HP и некоторые другие принтера идут с интерфейсом на который вы можете печатать прямо, используя протокол lpd. Вы должны следовать инструкциям, которые идут с вашим принтером или его сетевым адаптером, но в главном такие принтера являются "работающим" lpd., и обеспечивают одну или более очередь на которые вы можете печатать. Например HP может работать с printcap подобным:
lj-5|remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=printer.name.com:rp=raw:
или используя аргументы REMOTE_HOST=printer.name.com и QUEUE=raw для PDQ интерфейса bsd-lpd.
Принтера HP Laserjet с интерфейсами Jet Direct iв общем поддерживают две встроенных очереди lpd-- "raw", которая принимает PCL (и возможно Postscript) и "text", которая принимает чистый ascii (и автоматически справляется с лестничным эффектом). Если у вас JetDirect Plus3 трех-портовый принтер, то очереди называются "raw1", "text2", и так далее.
Заметим, что компания ISS обнаружила набор атак denial of service (DoS), которые могут завесить интерфейсы HP Jetdirect. Большинство из них датируется началом осени 98.
В средах большого масштаба, особенно в больших средах где некоторые принтера не поддерживают PostScript, может быть полезно создать выделенный сервер печати на который все машины будут печатать и на котором все задания ghostscript будут запущены. Это позволит вам приостанавливать очереди печати или переорганизовывать их используя команды topq и lprm.
Это также позволяет вашей машине с Linux выступать как сервер печати для принтера, так что ваши пользователи сети смогут выполнять свои задания печати быстро и справляться с работой не ожидая пока принтер печатает какое-то другое задание посланное кем-то другим. Это также предполагается, если у вас есть старые HP Jetdirects, которые невозможно исправить; это уменьшает вероятность заклинивания принтеров.
Чтобы сделать это, установить очередь на вашей машине, которая указывает на оборудованный ethernet принтер HP LJ (как показано выше). Затем укажите для всех клиентов вашей LAN, чтобы они печатали на очередь печати Linux (например lj-5 как в вышеприведенном примере).
Некоторые сетевые принтера HP по всей видимости не нуждаются в установке страницы заголовка (banner page) посылаемой клиентом; вы можете отключить внутренне генерируемую страницу заголовка зайдя на принтер с помощью telnet, нажав два раза return, набрав "banner: 0" и затем "quit". Существуют другие настройки, которые вы можете изменить тем же способом; наберите "?" для просмотра списка установок.
Полный набор установок принтера может контролироваться с помощью программного обеспечения фирмы HP . Этот пакет запускается как демон и принимает http запросы на назначенном порту. Он обслуживает формы и Java апплеты, которые могут контролировать принтера HP, работающие в сети. Теоретически, он также может контролировать очереди печати Unix, но он делает это используя сервис rexec, который полностью незащищенным. Я не советую вам использовать это свойство данного пакета.
Для того чтобы разрешить удаленным машинам печатать на ваш принтер используя протокол LPD, вы должны перечислить эти машины в файле /etc/hosts.equiv или /etc/hosts.lpd. (Заметим, что hosts.equiv имеет список машин несколько с другим эффектом; будьте уверены что вы знаете что вы делаете если перечисляете машины в этом файле). Вы можете разрешить только определенным пользователям на других машинах печатать на ваш принтер используя атрибут rs; читайте справочную страницу
для более детальной информации об этом.
Пакет netatalk включает что-то подобное nprint и smbclient. Другие имеют документированные процедуры для печати на и с сетей Apple много лучше чем я представлял; Смотрите .
Набор программ ncpfs включает утилиту названную nprint, которая обеспечивает те же самые возможности как и smbprint, но для NetWare. Вы можете получить ncpfs с . Информация из записи в LSM для пакета версии 0.16:
С помощью ncpfs вы можете монтировать тома вашего сервера netware под Linux. Вы также можете печатать в очереди печати netware и перенаправлять очереди печати netware на систему печати Linux. Вам необходимо ядро версии 1.2.x или 1.3.54 и выше. ncpfs НЕ работает с любыми ядрами 1.3.x ниже 1.3.54.
Существует "Printing to Windows mini-HOWTO" в котором находится больше информации чем в данном документе.
Некоторые принтера (и печатающие сетевые "черные ящики") поддерживают только никуда не годные маленькие непротокольные соединения включая чистые TCP соединения. Примечательными в этой категории являются ранние модели карт JetDirect (включая некоторые карты JetDirectEx). В основном для печати на принтер вы должны открыть соединение TCP на принтер на указанный порт (обычно 9100 или 9100, 9101 и 9102 для трех-портовых принтеров) и запихнуть свое задание печати в принтер. LPRng имеет встроенную поддержку для выдачи заданий печати на произвольные порты TCP, но при использовании BSD lpd это не так легко. Это может быть выполнено на Perl:
Интерфейс PDQ использующий netcat должен выглядеть примерно так:
interface tcp-port-0.1 {
help "Это один из первых интерфейсов поддерживаемых стандартными сетевыми принтерами и серверами печати. Устройство просто ожидает TCP-соединения на определенном порту, и посылает данные с любого соединения на принтер.\nЭтот интерфейс требует наличия программы netcat (\"nc\")."
required_args "REMOTE_HOST"
argument { var = "REMOTE_HOST" desc = "Удаленная машина" help = "Имя или IP-адрес сервера печати." }
argument { var = "REMOTE_PORT" def_value = "9100" desc = "Удаленный порт" help = "Это номер порта TCP сервера печати, на который должно посылаться задание. Большинство карт JetDirect, и их вариантов принимают задания на порту 9100 (или 9101 для порта номер 2, и т.п.)." }
requires "nc"
# nc заканчивает работу после 45 секунд отсутствия сетевой активности: # он не завершает работу после приема EOF как мы того желаем. send_exec { cat $OUTPUT | nc -w 45 $REMOTE_HOST $REMOTE_PORT }
}
В случае отсутствия этой программы, она может быть реализована другими способами, например на языке Perl, используя нижеприведенную программу. Или для большей производительности используйте программу netcat ("nc"), которая выполняет то же самое. Большинство дистрибутивов должны иметь эту программу в своем составе.
PDQ может быть настроен либо администратором, либо обычным пользователем. Изменения внесенные администратором делаются в файле /etc/printrc, и применяются ко всем пользователям, в то время как обычный пользователь может изменять только свой персональный файл .printrc. Все описанное применяется к обоим типам настройки.
Если PDQ не доступен в вашем дистрибутиве, то вы должны взять исходные тексты со и скомпилировать его сами. Он легко компилируется, но вы сначала должны убедиться, что установили разные библиотеки для разработки с применением GTK, пакет для разработки программ на языке C, компилятор gcc, программу make, и возможно еще несколько других пакетов для разработки.
Lpd обеспечивает пять атрибутов, которые вы можете установить в /etc/printcap для контроля всех установок принтера на последовательном порту. Читайте справочную страницу
и отметьте значение атрибутов br#, fc#, xc#, fs# and xs#. Последние четыре из этих атрибутов являются битовыми картами показывающими установки для использования портом. Атрибут br# это просто скорость передачи в бодах, например `br#9600'.
Очень легко переводить из установок в установки флагов printcap. Если вам необходимо, то смотрите справочную страницу stty.
Используйте stty для настройки порта принтера, так что вы сможете выполнить копирование файла на него и получить правильно напечатанный файл. Здесь приводятся данные того, что `stty -a' показывает для моего принтерного порта.
dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke
Разница между этим и тем способом которым порт инициализируется при загрузке во флагах -clocal, -crtscts, and ixon. Настройки вашего порта могут отличаться в зависимости от того как ваш принтер делает контроль потока.
В действительности вы используете stty странным способом. Так stty работает с терминалами, подключенными к его стандартному вводу, вы используете его для манипуляций с заданным последовательным портом используя символ `<' как показано выше.
После того как вы правильно установили настройки stty, так что `cat file > /dev/ttyS2' (в моем случае) посылает файл на принтер, посмотрите в файл /usr/src/linux/include/asm-i386/termbits.h. Этот файл содержит некоторое количество #defines и несколько структур (вы можете захотеть напечатать этот файл на принтере (он у вас работает, не так ли?) и использовать его как черновик). Перейдите в раздел который начинается с:
Для вывода с фото-качеством на большинство цветных струйных принтеров, вы должны использовать высоко-строчный (и самый медленный) режим печати; иначе сплошные области могут иметь полосы или плохие цвета. При работе с Ghostscript это можно сделать, выбрав самое большое разрешение. На Postscript-принтерах, вам может быть будет нужно добавить код в пролог базирующийся на настройках доступных в файле PPD. Поддержка PPD в Gimp не включает в себя настройку качества печати, но я добавил ее сам для моего личного использования; если вы хотите сделать то же самое, то свяжитесь со мной. Если вы используете PDQ, то вы можете легко добавить все настройки принтера, в которых в нуждаетесь в файл объявления драйвера; для принтеров понимающих PJL это достаточно легко, а для Postscript-принтеров может помочь моя утилита ppdtopdq.
Существует набор вещей которые вы можете сделать если вывод gs не удовлетворителен (пожалуйста вы можете латать что угодно, поскольку вы имеете исходные тексты).
Некоторые из этих опций, и другие описанные в руководстве пользователя Ghostscript (файл Use.htm в дистрибутиве Ghostscript; в вашей системе эта документация может быть установлена в каталоги /usr/doc или /usr/share/doc) являются великолепными кандидатами для настроек драйвера в вашем объявлении драйвера PDQ.
При недостатке бюджета, необходимого чтобы купить PostScript принтер, вы можете использовать любой принтер поддерживаемый программой Ghostscript, свободным интерпретатором PostScript используемый вместо настоящей поддержки PostScript принтером. Заметим, что большинство дистрибутивов Linux могут продаваться с устаревшей версией Ghostscript из-за применяемой лицензии. К счастью обычно существуют пакеты с новыми версиями Ghostscript в разделе contrib каждого дистрибутива. Пожалуйста помогите улучшить страницу поддержки принтеров Ghostscript, посылая сообщения о ваших успехах и неудачах.
В настоящее время Adobe имеет новый язык для принтеров называемый "PrintGear". Я думаю, что это сильно упрощает язык в двоичном формате с некоторыми свойствами PostScript, но без совместимости с PostScript. И я не слышал, что Ghostscript поддерживает его. Но некоторые принтера с PrintGear могут поддерживать другие языки, подобные PCL, и эти принтера будут работать с Linux.(если в принтере реализован PCL, а не в драйвере Windows).
Обычно PDQ определяет тип входных данных с помощью команды file(1). Для каждого типа, возвращенного командой file, и который вы хотите обрабатывать, вам необходимо определить предложение language_driver. Это предложение состоит в основном из скрипта для обработки задания печати, на любом (!) языке скриптов, который вы захотите использовать (языком по умолчанию является язык Bourne shell).
В нашем случае мы хотим печатать Postscript и ASCII на нашем принтере BJC-210. Поэтому нам необходимо два драйвера для типов файлов: один для запуска Ghostscript для заданий в формате Postscript, и один для добавления команд возврата каретки к заданиям в ASCII:
# Первый language_driver в этом файле, который соответствует результату # выполнения file(1) сообщает, что будет использовано language_driver ps { # file(1) возвращает строку "PostScript document text conforming at..." filetype_regx = "postscript" convert_exec = { gs -sDEVICE=$MODE -r360x360 \ # ключи gs из базы данных -q -dNOPAUSE -dBATCH -dSAFER \ # "обычные" ключи Ghostscript -sOutputFile=$OUTPUT $INPUT # обработка INPUT в файл OUTPUT
# Последние две строки часто одинаковы для всех поддерживаемых gs # принтеров. Однако строка gs..., будет разная для каждого из # принтеров. } }
# Мы объявили тип text после postscript, потому-что команда "file" часто # описывает файл postscript как текстовый (чем он и является). language_driver text { # Нет filetype_regx; мы ищем соответствие имени драйвера: "text" convert_exec = {#!/usr/bin/perl # Программа на Perl, просто потому-что мы можем писать на нем! my ($in, $out) = ($ENV{'INPUT'}, $ENV{'OUTPUT'}); open INPUT, "$in"; open OUTPUT, ">$out"; while(<INPUT>) { chomp; print OUTPUT, "$_\r\n"; } } }
Это все! В то время как другие принтера нуждаются в фильтрации выходных данных (как описано в следующем разделе), вышеприведенное предложение подходит для BJC-210. Мы просто передадим их указанному предложению driver:
Обычно ghostscript будет запускаться magic-фильтром, которым вы пользуетесь (Я рекомендую пакет apsfilter, если ваш поставщик не поставил вам этот пакет), но для целей отладки очень часто удобно запускать его прямо.
gs -help даст вам коротки, информативный список опций и доступных драйверов (заметим, что этот список является списком вкомпилированных драйверов, не основным списком доступных драйверов).
Вы можете запустить gs для тестирования примерно так: gs options -q -dSAFER -sOutputFile=/dev/lp1 test.ps.
Для того чтобы определить принтер в PDQ:
Сначала проверьте, что вы получили правильные определения драйвера и интерфейса в системном или в персональном файле printrc.
IЕсли вы хотите определить драйвер принтера в файле /etc/printrc (для всех пользователей), то делайте это как администратор.
Запустите xpdq, и выберите пункт меню Printer->Add printer. Этот мастер настройки проведет вас через выбор нужного драйвера и интерфейса.
Это все что надо сделать; большинство работы приходится на нахождение или создание подходящей спецификации драйвера, если вы не можете найти уже сделанную.
Командно-строковая версия программа для системы PDQ называется просто pdq. Она может использоваться вместо команды lpr в большинстве случаев; она понимает аргумент -P для указания принтера. Подобно lpr, она печатает либо перечисленные файлы, либо данные со стандартного ввода.
Настройки принтера могут контролироваться ключами -o
и -a.
это система печати без центрального демона, которая имеет встроенный, разумный синтаксис настройки драйвера. Она включает возможность объявления настроек печати, а также графическую и командно-строковые утилиты для того, чтобы пользователи могли использовать эти настройки; пользователям предоставляется великолепное диалоговое окно, в котором указывается плотность печати, тип бумаги, и т.п.
Запуск всех этих фильтров пользователем имеет несколько преимуществ: нет большинства проблем безопасности при использовании Postscript, много файловые задания LaTeX могут печататься очень эффективно в виде dvi-файлов и т.п.
Это то, что я использую сейчас; я написал спецификация для моих принтеров, и также есть несколько включенных в дистрибутив пакета, так что вам будет хватать примеров, для начала. Я также написал несколько утилит для автоматической генерации спецификаций драйверов, для того чтобы помочь вам. you.
Если у вас много пользователей, много принтеров или какая-нибудь сложная система, то я вам рекомендую использовать PDQ как надстройку над сетевой печатью на базе протокола LPD (вы можете печатать через протокол на локальную машину). Во многих таки ситуациях вместо использования BSD lpd как базы я рекомендую использовать LPRng:
Pdq обозначает "Print, Don't Queue (Печатать не буферизуя)", и способ который он использует для работы отражает этот дизайн. Следующая последовательность событий происходит при использовании для печати PDQ:
Вы запускаете pdq или xpdq, указав файл.
Вы указываете принтер.
Вы указываете настройки для различных параметров и аргументов определенных в файле драйвера PDQ для данного принтера (двухстороннюю печать, количество копий, качество печати и так далее).
PDQ анализирует содержимое файла, который вы печатаете и следует инструкциям записанным в файле драйвера PDQ, которые описывают как обрабатывать ваши данные для печати на данном принтере с заданными параметрами.
PDQ посылает обработанные данные на принтер через указанный интерфейс (прямо на /dev/lp0, или сетевому демону LPD, или через сеть на машину с an Apple or Microsoft system, or even to a fax machine).
Если PDQ не может послать данные на принтер указанным способом, то он запускает процесс в фоновом режиме, который пытается произвести печать, до тех пор пока это не удастся, или не будет исчерпан временной предел.
Во время этого процесса и после, состояние каждого задания может быть увидено с помощью xpdq. Задания, которые не смогли быть выполнены показаны красным цветом и могут быть посланы заново.
Существует много деталей для получения нормального вывода фотографий с распространенных принтеров.
Ядро Linux в основном поддерживает любой принтер, который вы можете подключить к последовательному или параллельному порту, но существуют такие принтера, которые вы не можете использовать, даже если они могут быть подключены к машине и общаться (на электрическом уровне) с Linux. Основными среди этих несовместимых принтеров являются принтера, на которые ссылаются как на принтера "Windows" или "GDI". Они так называются, потому-что часть или есть язык управления принтером и детали проектирования механизма печати не документированы. Обычно производитель предоставляет драйвер для Windows и спокойно продает принтера только для пользователей Windows; Это почему они называются Winprinters. В некоторых случаях производитель также предоставляет драйвера для NT, OS/2, или других операционных систем.
Многие из этих принтеров не работают с Linux. Некоторые из них работают, и некоторые из них работают чуть-чуть (обычно потому-что кто-то сделал исследование деталей, необходимых для написания драйвера). Смотрите список поддерживаемых принтеров, приведенный ниже, для подробностей о нужном принтере.
Некоторые принтера находятся в промежутке между крайностями. Некоторые модели NEC, например, реализуют простую форму стандартного языка принтера PCL, что позволяет работающему с PCL программному обеспечению печатать на них до разрешения 300dpi, но только NEC знает как получить разрешение 600dpi на этих принтерах.
Заметим, что если вы уже имеете один из таких Winprinters, то существует окольный путь, чтобы заставить печать Linux на них, но он достаточно неудобный и я никогда не пробовал применять сам. Смотрите раздел 12 этого документа, для более детального обсуждения принтеров, работающих только с Windows.
Последовательные принтера редко используются с lpd.
Последовательные устройства под Linux называются подобно /dev/ttyS1. Утилита
позволит вам интерактивно просмотреть или установить параметры последовательного порта
позволит вам контролировать некоторые расширенные атрибуты и настроить IRQ и адреса ввода/вывода для нестандартных портов. Дополнительные обсуждения последовательных портов в Linux вы можете найти в .
При использовании медленных последовательных принтеров с контролем потока, вы можете обнаружить, что некоторые из ваших заданий оборваны. Это может быть из-за последовательного порта, чье действие по умолчанию-- удалить любые не переданные символы из своего буфера через 30 секунд после того как устройство закрыто. Буфер может содержать до 4096 символов, и если ваш принтер использует контроль потока и медлен настолько, что не может принять все данные из буфера за 30 секунд после того как программа печати закрыла последовательный порт, то конец содержимого буфера будет потерян. Если команда cat file > /dev/ttyS2 делает полный печатный вывод для коротких файлов, но обрезает длинные файлы, то у вас может быть такая проблема.
30-ти секундный интервал может быть выровнен с помощью опции "closing_wait" командной строки программы setserial (версии 2.12 и поздних). Последовательные порты машины обычно инициализируются вызовом setserial в загрузочном файле rc.serial. Вызов для последовательного порта принтера может быть модифицирован для установки параметра closing_wait вместе с установкой других параметров.
Среди принтеров, которые работают с Linux, лучшим выбором является покупка принтера со встроенной поддержкой PostScript. Почти все программное обеспечение в Unix, которое производит печатный вывод делает это в формате PostScript, так что очевидно будет хорошо иметь принтер, который сразу поддерживает PostScript. К сожалению поддержка PostScript является редкой за пределами области лазерных принтеров.
Программное обеспечение для Unix, и индустрия печати в общем, стандартизировали Postscript как язык управления принтером. Это случилось по нескольким причинам:
Синхронизация (Timing)
Postscript возник как часть Apple Laserwriter, великолепного компаньона для компьютеров Macintosh и принтера наилучшим способом отвечающим революции настольных издательских систем в 80-х годах.
Он независим от устройства
Программы на Postscript могут быть запущены для создания вывода на растровые и векторные дисплеи, на на fax-машины, или почти на любой тип принтеров без необходимости изменения исходной программы. Изображение в Postscript будет одним и тем же на любом устройстве postscript, по крайней мере в пределах обеспечиваемых свойствами принтера. До создания формата PDF, люди обменивались сложными документами в виде файлов Postscript. Единственная причина того, что стандарт не прижился, заключается в том, что машины с Windows обычно не включали средства просмотра Postscript, так что Adobe специфицировала гиперсвязи и сжатие для формата Postscript, назвала резальтат PDF, и распространяет средства просмотра для этого формата, и создала рынок для своих утилит "distiller". (функциональность которых также обеспечиваются программами ps2pdf и pdf2ps из пакета ghostscript).
Это настоящий язык программирования
Postscript это полномасштабный язык программирования; вы можете писать на нем программное обеспечение почти для любых дел. Это в основном полезно для определения подпрограмм в начале вашей программы для повторения сложных вещей во всем вашем документе, таких как знак логотипа или слова "DRAFT", написанного большими буквами в качестве фона для страницы.
Он является открытым
Postscript полностью специфицирован в общедоступной серии книг (которые вы можете найти в любом хорошем книжном магазине). Хотя Adobe изобрела его и обеспечивает доминирующую коммерческую реализацию этого языка, другие производители, такие как Aladdin также производят независимую реализацию Postscript.
Ghostscript имеет драйвер для X11, который лучше всего используется под управлением просмотрщика PostScript, называемого . Последние версии этих программ также должны уметь просматривать файлы PDF. Заметим, что gv заменил более старый просмотрщик "Ghostview"; новый интерфейс пользователя более приятный и функциональный чем линейный интерфейс ghostview на основе старого Athena gui.
PDQ поставляется без объявления интерфейса fax, но вот простая реализация (которая только частично протестирована):
interface efax-0.1 { help "Этот интерфейс использует программу fax из пакета efax для посылки факсов. Вы должны сначала добиться выполнения \"fax send\" путем редактирования файла настройки /etc/efax.rc и тестирования. Подключите этот интерфейс к базовому драйверу postscript для определения факс-машины \"printer\"".
requires { "efax" "fax" }
# Требуя наличия телефонного номера означает, что помощник добавления # принтера будет требовать задания номера телефона во время добавления # принтера. Это нежелательно, так что не обязательно требуется, хотя это # требуется логически. Скрипт send_exec проверяет наличие номера. Вы # должны отказаться от помощника, добавляя принтер вручную в файл # .printrc, отмечая это поле как требуемое и оно будет запрошено? argument { var = "PHONE_NUMBER" desc = "Номер телефона" help = "Номер телефонного подключения. Префиксы, такие как 9 должны быть определены в вашем файле /etc/efax.rc." }
option { var = "RESOLUTION" desc = "Разрешение факса" default_choice = "high" choice "low" { value = "-l" desc = "Low" help = "Низкое разрешение факса, равное 96lpi." } choice "high" { value = "" desc = "High" help = "Высокое разрешение факса, равное 192lpi." } }
# Если вы не хотите указывать номер телефона, то задание не должно # работать, и единственный способ определить это, это посмотреть в # сообщение об ошибке в начале деталей задания. send_exec { if [ "x$PHONE_NUMBER" != "x" ] then fax send $RESOLUTION $PHONE_NUMBER $INPUT else echo 'Вы должны указать номер телефона!' false fi }
}
это система буферизации печати, ориентированная на Postscript, который включает возможность разбора Postscript (еще в зачаточном состоянии) из-за которой он имеет несколько хороших возможностей. Он включает в себя хорошие возможности учета, поддержку клиентов Appletalk, SMB и LPD, и более лучшую обработку чем lpd обработку ошибок. PPR, как и другие перечисленные системы буферизации, может вызывать Ghostscript для работы с принтерами не понимающими Postscript.
Я только недавно нашел информацию о PPR; я не знаю никого, кто экспериментировал бы с ним. Он был написан и используется в Trinity College. Система распространяется под лицензией BSD-стиля; свободно для любого использования, но требуется ссылка на авторов.
По популярному требованию, я включил ниже список прав доступа на интересующие нас файлы на моей системе. Существует несколько более лучших способов сделать это, в идеале использовать только выполнимые файлы со SGID и не делать все подряд SUID root, но это как пришло в моей системе, и это работает для меня. (Довольно откровенно, если ваш производитель даже не может сделать работающий lpd, то вы в опасной поездке).
-r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/
В настоящее время lpd должен быть запущен под правами администратора, так что он может быть связан с сервисным портом lp с низким номером. Он должен вероятно быть с UID lp.lp или каким-то после связывания, но я не знаю с каким.
PDQ использует отличную от других схему, не ориентированную на демонов, и поэтому у него другие программы. Только несколько программ имеют установленный бит SUID и владельца администратора, эта программы являются интерфейсом к lpd и называются lpd_cancel, lpd_print и lpd_status; эти программы имеют SUID, потому-что сервера печати Unix требуют отправки запросов с привилегированного порта. Если вам необходимо применять интерфейс bsd-lpd из поставки PDQ только для сетевых принтеров печати таких как адаптеры HP JetDirect или Lexmark MarkNet), то вам не нужно устанавливать бит suid на эти программы.
Как я обсуждал ранее, некоторые принтера по определению не поддерживаются, потому-что они не умеют "говорить" на нормальном языке принтеров, вместо этого используя процессор компьютера для обработки картинки, которая передается на принтер с фиксированной скоростью. В некоторых случаях они также могут общаться на нормальных языках принтеров подобных PCL, но часто этого нет. В некоторых (действительно редких) случаях эти принтера даже не используют нормальное параллельное соединение, но полагается на поставляемый производителем драйвер для эмуляции поведения оборудования (наиболее важным является контроль потока).
В любом случае есть несколько возможных решений если у вас такой принтер с неприятными свойствами.
Расположение, размер и коэффициент сжатия изображения на странице контролируются принтер-специфичным драйвером в ghostscript. Если вы обнаружили, что ваши страницы получаются слишком короткими, или слишком длинными или со слишком большим фактором увеличения, вы можете посмотреть в исходный код модуля драйвера и выровнять необходимые для вас параметры. К сожалению каждый драйвер написан по разному, так что я не могу сказать что исправлять, но большинство из них довольно неплохо описаны.
В настоящее время есть драйвер для Windows (называемый mswinpr2), который пропускает задание печати через Ghostscript до окончательной печати задания. (Довольно похоже на фильтр if в LPD системе Unix). Также существует драйвер Ghostscript, который будет печатать используя вызовы Windows GDI. Совместив все вместе, это должно позволить машине под Windows печатать PostScript на принтера работающие только под Windows, используя поставляемые производителем драйвера.
Если вы заставили это работать, то затем вы должны следовать вышеприведенным инструкциям по настройке печати на Windows-принтер по сети из под Linux, чтобы позволить Unix (и другим машинам под Windows, Mac, и т.п.) печатать на ваш "неправильный" принтер.
Red Hat имеет утилиту администрирования принтера с GUI-интерфейсом называемую printtool, которая может добавлять удаленные принтера и принтера на локальных устройствах. Она позволяет вам выбрать поддерживаемый ghostscript тип принтера и устройство Unix на которое будет производиться печать, затем устанавливает очередью печати в файл /etc/printcap и для поддержки postscript и других форматов данных использует фильтр из пакета rhs-printfilters. Это решение работает довольно хорошо, и оно тривиально в установке для общих случаев.
Red Hat может дать сбой, если у вас принтер, который не поддерживается Ghostscript, который идет в его поставке, (он является GNU версией, а не версией Aladdin Ghostscript, которая поддерживает большее количество принтеров). Посмотрите список совместимости принтеров, приведенный выше (или по адресу ), в том случае если вы обнаружили, что вы не можете печатать правильно, используя программное обеспечение, предоставленное Red Hat. Если ваш принтер не поддерживается утилитами Red Hat, то вы можете установить Aladdin Ghostscript, и вероятно будет лучше, если вы будете использовать пакет apsfilter, который имеет все сведения о принтерах, поддерживаемых последними версиями Ghostscript.
В будущих версиях Red Hat программа printtool будет переделана для поддержки большего количества принтеров и будет предназначена для окончательной замены rhs-printfilters (текущий фильтр имеет трудности с поддержкой многих распространенных принтеров, таких как не-PCL DeskJet и большинство принтеров Lexmark). Также могут быть объединены некоторые разработанные в VA Linux PPD.
Этот раздел по определению неполный. Свободно посылайте мне детальную информацию о вашем любимом дистрибутиве. А настоящее время я не знаю ни одного дистрибутива, который поддерживает или предоставляет рекомендуемой мной программное обеспечение:PDQ.
Сейчас существует несколько пакетов, которые пытаются сделать настройку принтеров для использования с lpd более легкой. Они вероятно существуют до сих пор, но лучшим из них и самым современным является пакет APS Filter, написанный Andreas Klemm, который имеет управляемую меню настройку printcapи обрабатывает почти все типы входных данных. Если производитель вашего дистрибутива не поставляет хорошую утилиту настройки принтера, то APS Filter будет хорошим выбором; несколько дистрибутивов включают apsfilter, или он легко добавляется.
Netatalk поддерживает печать с клиентов Apple через EtherTalk. Смотрите для более детальной информации.
Для того чтобы печатать на другую машину вы должны сделать примерно такую запись в /etc/printcap:
# Удаленный djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=machine.out.there.com:\ :rp=printername:\ :lp=/dev/null:\ :sh:
Заметим что все равно есть директория очереди на локальной машине обслуживаемая lpd. Если удаленная машина занята или отключена, то задание с локальной машины будет находиться в очереди до тех пор пока оно не сможет быть послано.
Большинство систем в настоящее время продаются с lpd, так что данный раздел не будет к ним применяться. Я рекомендую людям для большинства случаев установить и использовать PDQ вместо (или в добавление к) lpd. PDQ просто имеет лучшую поддержку принтеров и тому подобное.
При использовании PDQ, вместо команды lpr, вы будете использовать команду или . Обе они подобны традиционной команде lpr в том, что они будут печатать либо указанные файлы, либо данные со стандартного ввода, если файл не указан.
Вы также можете использовать rlpr для послания задания печати прямо в очередь удаленной машины без мороки с настройкой lpd для выполнения этой задачи. Это в большинстве случаев полезно в ситуациях когда вы печатаете на множество принтеров только время от времени. Из анонса rlpr:
Rlpr использует TCP/IP для посылки заданий печати на сервера с lpd, находящиеся где угодно в сети.
В отличии от lpr, он не требует чтобы удаленный принтер был явно известен машине с которой вы хотите печатать, (например в /etc/printcap) и таким образом является значительно белее гибким и требующим меньше администрирования.
rlpr может использоваться везде где мог бы использоваться традиционный lpr, и он является совместимым с традиционным BSD lpr.
Основная мощь rlpr заключается в удаленной печати откуда угодно куда угодно без учета как система на которую вы хотите печатать была настроена. Rlpr может работать как фильтр, как и традиционный lpr, так что клиенты выполняемые на удаленной машине такие как netscape, xemacs, и т.п., могут печатать на вашу локальную машину с небольшими усилиями.
Rlpr доступен с
.
Здесь я проведу вас по примеру создания объявления драйвера PDQ. До того, как вы начнете этот процесс, загляните в несколько мест, чтобы найти существующие объявления драйверов:
С PDQ поставляется небольшая коллекция файлов с драйверами.
В
этого документа включена программа, названная "PDQ-O-Matic", которая сгенерирует спецификацию PDQ из информации в базе данных. При небольших усилиях это может подойти. Это легкий способ если у вас не-Postscript принтер.
Я написал утилиту, которая называется ppdtopdq, и которая берет файл Postscript Printer Definition (определения принтера Postscript) и преобразует его в спецификацию драйвера PDQ. Это правильны способ если у вас принтер понимающий Postscript. Напишите мне, чтобы получить копию.
Вам необходимо заглянуть в несколько мест для того, чтобы найти информацию необходимую для написания вашего драйвера PDQ:
Синтаксис спецификации драйвера PDQ достаточно богат и полностью документирован в справочной странице .
Дистрибутив PDQ включает несколько файлов-примеров. Посмотрите в файл, описывающий Epson Stylus, который демонстрирует структуру определения для принтера, управляемого Ghostscript.
включает данные примерно о 400 принтерах. Она выдаст информацию о том, какие ключи необходимы для Ghostscript, или какие программы надо запустить для обработки вывода Ghostscript.
Если вы создали свой собственную спецификацию драйвера, или или вы расширили спецификацию из дистрибутива PDQ или сгенерированную вышеупомянутой программой, то пожалуйста поделитесь вашим трудом со всем миром!Пошлите его мне на адрес (gtaylor+pht@picante.com), и его смогут найти будущие пользователи PDQ, у которых принтер такого же как у вас типа.
Теперь давайте пройдем сквозь этапы написания спецификации драйвера для принтера, который в базе данных Printing HOWTO отмечен как работающий, но для которого вы не можете найти спецификацию драйвера PDQ. Я буду использовать принтер Canon BJC-210 в качестве примера
Давайте сначала заглянем в об этом принтере. Заметьте, что он поддерживается "великолепно", так что мы можем получить результат, который сравним (или лучше) с результатами, получаемыми пользователями Windows. Важной информацией являются три места в полученной информации:
Этот раздел является обобщением интерактивной версии. Интерактивная версия включает основные спецификации, замечания, ссылки на информацию о драйверах, сопровождаемую пользователем информацию, ссылки на сервера производителя и тому подобное. Интерактивная версия этого списка также позволяет пользователям добавлять принтера, так что будьте уверены, что проверили ее. В конце концов, если принтер не перечислен в списке, то добавьте его!
Заметьте, что это список не является евангелием; люди иногда добавляют неправильную информацию, которую я в конце концов удалю. Записи, которые я не проверил отмечены знаком звездочки (*). До покупки принтера проверьте через Dejanews, что принтер работает у некоторых людей. Если вы не смогли найти информацию на Dejanews, то напишите мне, и я свяжу вас человеком, который добавил информацию о принтере.
Принтера разделены на три типа:
Отлично
Отличные принтера и работают отлично -- вы можете использовать все возможности принтера, включая цвет, полное разрешение и т.п. В некоторых случаях принтера с недокументированными "увеличениями разрешения", которые не работают, все равно перечислены как отличные; в основном различие в качестве печати достаточно слабое, так что вы можете не беспокоится об этом.
Хорошо (небольшие ограничения)
Вы можете нормально печатать, но существуют небольшие ограничения, того или иного сорта либо в печати, либо в других свойствах.
Частично
Вы можете печатать, но может быть не в цвете, или только с низким разрешением. Смотрите колонку примечаний списка для информации о характере ограничений.
Балласт
Вы не можете печатать; обычно это происходит из-за отсутствия драйвера и/или документации о том, как его написать.
В любом случае, поскольку эта информация предоставлена массой людей, никто не гарантирует, что она правильная; в частности такими полагаются записи со знаком звездочки (*). Однако, информация может быть легко подтверждена поиском информации на страницах о драйверах принтера и серверах производителя.
И без лишней суеты, вот список совместимости принтеров:
Jon Luckey указал, что некоторые старые последовательные принтера с десятицентовым последовательным интерфейсом и маленькими буферами действительно останавливаются когда используется контроль потока. Он нашел, что запрещение FIFO для последовательного порта 16550 его Linux-машины с помощью
исправило проблему потерянных символов (вы по всей видимости можете просто указать тип uart как 8250 чтобы сделать это).
Система печати в SuSE Linux основана на apsfilter, с некоторыми расширениями; SuSE-версия программы apsfilter распознает все основные типы файлов (включая HTML, если установлена программа html2ps). Существует два способа установки принтеров в системах с SuSE:
Программа YaST позволит вам настроить "PostScript", "DeskJet" и "Другие принтера" принтера поддерживаемые драйверами Ghostscript; также возможно настроить принтера HP GDI (DeskJet 710/720, 820, 1000 используя пакет "ppa"; в настоящее время только в черно-белом режиме). YaST создаст записи в /etc/printcap для каждого из принтеров ("raw", "ascii", "auto" и "color", если принтер настроен как цветной принтер). YaST создаст буферные каталоги и расположит файлы apsfilterrc, в которых вы сможете более тонко настроить некоторые опции (предварительную загрузку Ghostscript, размер и ориентацию бумаги, разрешение печати, escape последовательности для принтеров и т.п.). Также с помощью YaST возможно настроить сетевые принтера (TCP/IP, Samba или Novell Netware принтер).
Также существует обычная программа SETUP из оригинального пакета apsfilter (с некоторыми расширениями); запустите `lprsetup' для запуска это скрипта конфигурации. Однажды освоившись с ее интерфейсом, вы сможете быстро настраивать сетевые и локальные принтера (с помощью фильтра local через свойство "bypass" - это достаточно удобно).
Руководство по установке SuSE описывает обе эти процедуры настройки.
Wolf Rogner написал, что есть некоторые сложности с SuSE. Вероятно следующие ошибки могут возникнуть у вас:
Обычная программа настройки Apsfilter содержит ошибки, также как и программа настройки из состава KDE. используйте YaST.
Для сетевых принтеров, которые должны получать данные от Ghostscript, вам необходимо сначала раскомментировать строку REMOTE_PRINTER="remote" в файле /etc/apsfilterrc. Затем запустите YaST для настройки принтера и в разделе настройки сети настройте удаленную очередь печати.
Настройки YaST не позволяют настроить цветные лазерные принтера, так что настройте его как черно-белый принтер, а затем измените mono на color во всех записях printcap. Вам необходимо также переименовать буферные каталоги.
В настоящее время больше нет недостатка в WYSIWYG программном обеспечении для обработки текстов. Доступно несколько полных офисных наборов, включая один, который свободен для персонального использования (StarOffice).
StarOffice
Sun Microsystems свободно распространяет по сети StarOffice для Linux. Полный офисный набор имеет все возможности которые вы ожидаете и вы можете не беспокоится об оплате. Существует mini-HOWTO, где описывается как получить и установить этот пакет. Он генерирует на выходе PostScript или PCL, так что он должен работать с большинством принтеров в Linux; это вероятно два равноправных факта!
WordPerfect
Компания Corel свободно распространяет базовую версию Word Perfect 8 для Linux, и предполагается, что компания также будет распространять Corel Draw и Quattro Pro, когда они будут перенесены под linux. Вероятно это наилучший выбор, если у вас ARM машина; Corel делает основанные на ARM компьютеры Netwinder Linux и и почти всегда предлагает ARM Linux версии всех своих продуктов. Вы можете также купить полную версию программ и поддержку этих программ, вместе или по отдельности. Страница имеет информацию о настройке WordPerfect для использования либо Ghostscript либо его встроенных драйверов принтеров (которые очевидно похожи на драйвера принтеров DOS WordPerfect, в том случае если драйвер вашего принтера не включен в дистрибутив WP8).
Applix
Applix это многоплатформенный оффисный набор (например, разные типы юниксов, Windows и другие платформы), продаваемый фирмой Applix. Red Hat и SuSE продавали их, когда это было лишь "игрой в города"; сейчас продажу опять осуществляет Applix.
AbiWord
AbiWord является одной из нескольких GPL проектов по созданию WYSIWYG текстового процессора; этот проект создал очень хороший текстовый процессор, основанный на формате XML и с возможностями импорта файлов Word. (Но у него пока проблемы с русским языком, в том числе и с импортом русских файлов Word. прим. переводчика).
LyX
LyX это надстройка для LaTeX, которая выглядит очень многообещающей. Смотрите для более детальной информации. Также существует версия LyX сделанная в стиле KDE, она называется Klyx; автор LyX и зачинщик проекта KDE -- это одна и та же персона.
Независящие от устройства (DeVice Independant) файлы TeX могут быть просмотрены под X11 с помощью . Современные версии xdvi вызывают ghostscript для обработки специальных вставок PostScript.
Также существует драйвер VT100. Он называется dgvt. Tmview работает с Linux и svgalib, если надо вы можете работать с ним.
Традиционная настройка lpd заканчивается тем, что можно создавать очереди файлов и печатать их. Она не обращает никакого внимания на то понимает ли принтер эти файлы или нет, и скорее всего не позволит производить привлекательный вывод. Тем не менее, это первый шаг к пониманию, так что читайте!
Для добавления очереди печати к lpd, вы должны добавить запись в файл /etc/printcap, и создать новую буферную директорию в каталоге/var/spool/lpd.
Запись в файле /etc/printcap выглядит примерно так:
# ЛОКАЛЬНЫЙ djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh:
Это определяет принтер называемый lp, dj, или deskjet, его спул размещается в директории /var/spool/lpd/dj, без ограничения максимального размера задания, который печатает на устройство /dev/lp0, и который не имеет страницу с заголовком (с именем человека, который печатает и т.п. информацией) добавленную в начало задания печати.
Теперь прочитайте справочную страницу для
.
Вышеприведенный пример выглядит очень простым, но он имеет ловушку-- хотя я посылаю файлы, которые DeskJet 500 может понимать, этот DeskJet будет печатать странные вещи. Например посыл обычного текстового файла Unix приведет к тому, что deskjet будет интерпретировать символы новой строки как символы, и выдаст мне:
This is line one. This is line two. This is line three.
Печать файла PostScript на этот принтер выдаст великолепный листинг команд PostScript, напечатанных с этим "лестничным эффектом", а не полезный вывод.
Очевидно требуется что-то сделать, и это является назначением фильтрации. Более наблюдательные из тех кто читал справочную страницу printcap должны были заметить атрибуты принтера if и of. Хорошо, if, или входной фильтр -- это все что нам нужно здесь.
Если мы напишем маленький скрипт, названный filter, который добавляет возврат каретки до символа новой строки, то лестничный эффект будет ликвидирован. Так что мы добавим строку if в нашу, вышеприведенную запись в printcap:
lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh:
Для некоторых систем необходимо хранить информацию о том, кто и как много печатал; этот раздел описывает разные методы выполнения данной работы.
Обычный LPD предоставляет очень небольшую помощь в выполнение учета ресурсов. Вы можете указать имя файла для учета ресурсов используя атрибут af= в printcap, но только передается как параметр вашему фильтру, указанному в if=. Возможно сделать так, что ваш if= фильтр будет писать данные в файл учета ресурсов, и вы будете обрабатывать этот файл позже (традиционный формат в основном полезен для строчных принтеров, и нетривиален для разбора с помощью Perl, так что нет причин сохранять его).
Ghostscript предоставляет оператор PageCount, который вы можете использовать для подсчета страниц в каждом из заданий; обычно вам необходимо добавить несколько строк на postscript в конец задания для того, чтобы дописать запись в файл учета; лучшим примером этого является файл unix-lpr.sh в поставке исходного кода Ghostscript.
Заметьте, что реализация учета ресурсов использованная в unix-lpr пишет в файл из Ghostscript и таким образом несовместима с рекомендованным ключом -dSAFER. Лучшим решением мог бы быть опрос принтера с помощью команды PJL после каждого из заданий, или написать программу на postscript, которая будет выдавать число страниц на стандартный вывод, где данные могут быть захвачены другой программой.
Система буферизации LPRng включает простую реализацию учета ресурсов для HP; я думаю, что она опрашивает принтер используя PJL.
Существует программа, названная , которая поддерживает фото-печать со всеми звоночками и свистелками на ряде принтеров Epson, HP и Canon. К сожалению она была написана под действием NDA, так что поставляется без исходных текстов. За исключением ее использования для Epson Stylus Color 300 на Linux x86, она стоит 15 евро для персонального использования; коммерческая цена неизвестна.
Пакет ESP Print Pro компании Easy Software поддерживает много принтеров, которые иначе не поддерживаются. К сожалению поскольку этот пакет базируется на Ghostscript 4.03, я не ожидаю от него хороших результатов при печати фотографий. Но кто-нибудь должен попробовать.
Существует два полностью отличающихся драйвера устройства для параллельного порта; что вы используете, зависит от версии ядра (которую вы можете узнать с помощью команды uname -a). Драйвер изменен в Linux версии 2.1.33.
Несколько деталей одинаковы для обоих типов драйвера. Скорее всего, много людей обнаружат, что Linux не обнаруживает параллельного порта, до тех пор пока они не запретят "Plug and Play" в их PC BIOS. (это не является сюрпризом; отслеживание данных о PnP не-PCI устройствах в Windows и где-нибудь еще могут быть чем-то вроде бедствия).
Ядро Linux (<=2.1.32), предполагает, что вы вкомпилировали в ядро или загрузили модуль устройства lp (вывод команды cat /proc/devices должен включать устройство lp, если оно загружено), обеспечивая одно или больше устройств: /dev/lp0, /dev/lp1, и /dev/lp2. Они не присваиваются динамически, каждое соответствует специфическому адресу ввода/вывода вашего оборудования. Это означает, что ваш первый принтер может быть lp0 или lp1 в зависимости от вашего оборудования. Просто попробуйте оба.
Некоторые пользователи сообщили, что их двунаправленные lp порты не определяются, если они использовали старые однонаправленные кабеля. Проверьте, что вы используете нужный кабель.
Некоторые люди не могут запустить драйвера plip и lp в одно и тоже время на любом заданном порту (в любом случае под 2.0). Однако вы можете загрузить тот или иной драйвер вручную или с помощью kerneld для версий 2.x (и позже 1.3.x) в заданное время. При правильной установке прерываний и подобных вещей, вы по идее можете запустить plip на одном порту, а lp на другом. Некоторые люди делали это редактированием исходного текста драйверов; я с нетерпением ожидаю сообщение о том, что кто-то сделал это только с помощью правильной командной строки.
Существует маленькая утилита, названная
, предназначенная для того, чтобы вы, как администратор, могли настроить для устройств lp Linux 2.0 используемые прерывания, скорость опроса и прочие опции.
Если драйвер встроен в ядро, то ядро может воспринимать опцию lp= для установки прерываний и адресов ввода/вывода:
Когда драйвер lp встроен в ядро, вы можете использовать командную строку LILO/LOADLIN для установки адресов портов и прерываний, которые будет использовать драйвер.
Синтаксис: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
Например: lp=0x378,0 or lp=0x278,5,0x378,7 **
Заметим, что если вы используете это свойство, вы должны указать *все* порты, которые вы хотите учитывать, значений по умолчанию не существует. Вы можете запретить встроенные драйвер с помощью опции lp=0.
Когда драйвер загружен как модуль, то возможно указать адреса ввода/вывода и прерывания в командной строке программы insmod (или в файле /etc/conf.modules, при использовании kerneld) используя обычный синтаксис. Параметры следующие: io=port0,port1,port2 и irq=irq0,irq1,irq2. Прочитайте справочную страницу для команды
для более детальной информации об этом.
**Для тех из вас, кто (подобно мне) никогда не может найти номера стандартных портов когда это нужно, я привел два примера выше. Номер другого порта (для lp0) равен 0x3bc. У меня нет никаких идей о том какое прерывание обычно используется.
Исходный код для драйвера параллельного порта Linux 2.0 находится в файле /usr/src/linux/drivers/char/lp.c.
Начиная с ядра 2.1.33 (и доступно как заплатка к ядру 2.0.30), устройство lp является просто клиентом нового устройства parport. Добавление устройства parport исправляет некоторое количество проблем, которые были из-за старого устройства lp - оно может разделять порты с другими устройствами, оно динамически присваивает доступные параллельные порты номерам устройств, вместо использования фиксированных соотношений между адресами ввода/вывода и номером порта, и так далее.
Введение устройства parport позволило создать целую группу новых драйверов параллельного порта для устройств подобных дискам Zip, Backpack CD-ROM и дискам, и так далее. Некоторые из них доступны в ядрах версии 2.0; посмотрите в интернете.
Главное отличие, которое вы отметите, в том, что ядра, основанные на parport динамически присваивают устройства lp для параллельных портов. Так что, то что было lp1 в Linux 2.0 может оказаться lp0 в Linux 2.2. Убедитесь, что вы проверили это если вы делаете обновление с ядра, работающего с драйвером lp на ядро с драйвером parport.
Кажется, что основные проблемы с этим устройством проистекают от неправильной его настройки:
Дистрибутив
Некоторые дистрибутивы Linux продаются с неправильно настроенными /etc/modules.conf (или /etc/conf.modules), так что драйвер не загружается когда вам это нужно. При использовании недавних версий modutils, правильные строки в modules.conf должны выглядеть так:
alias /dev/printers lp # only for devfs? alias /dev/lp* lp # only for devfs? alias parport_lowlevel parport_pc # missing in Red Hat 6.0-6.1
BIOS
Много BIOS для персональных компьютеров представляют параллельный порт как устройство Plug-and-Play. Это только добавляет ненужную сложность к великолепному простому устройству, которое почти всегда присутствует; отключите PnP настройки для вашего параллельного порта (который называется "LPT1" во многих BIOSах) в том случае если ваш параллельный порт не определяется драйвером Linux. Правильные настройки часто называются "legacy", "ISA", или "0x378", но скорее всего не "disabled".
Вы также можете прочитать файл в исходных текстах ядра, или посмотреть на .
Xpdq это приложение для X Windows, которое показывает список доступных принтеров и сводные данные об очереди печати (включая текущие и старые задания). Существуют два пункта в меню File, один для печати указанного файла, второй для печати данных со стандартного ввода. Вы можете установить настройки вашего драйвера принтера используя диалог Driver Options; обычно можно установить параметры двунаправленного соединения, плотность печати, размер и тип бумаги, и т.п.
Одна странность старых версий lpd в том что if не запускается для удаленных принтеров. (Версии после 0.43 или примерно такой имеют изменения внесенные на FreeBSD, так что они всегда работают). Если вам нужно выполнить if, вы можете сделать это установив двойную очередь и перенаправляя задание. Как пример рассмотри такой printcap:
lj-5:remote-hplj:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :if=/usr/lib/lpd/filter-lj-5: lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\ :rp=raw:sd=/var/spool/lpd/lj-5-raw:
в свете этого скрипт filter-lj-5 будет выглядеть так:
#!/bin/sh gs <options> -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5
Опция -U lpr работает только если lpr запущен как демон, и она правильно устанавливает имя имя автора задания при его перенаправлении. Вы должны вероятно использовать более надежный метод получения имени пользователя, так как в некоторых случаях оно не является пятым аргументом. Смотрите справочную станицу
.