Отсутствует фильтр печати для принтера Linux

Обновлено: 04.07.2024

В этом справочном документе описывается, как настраивать места назначения и управлять ими с помощью CUPS.

Введение

Местами назначения являются отдельные принтеры и классы (пулы) принтеров. Принтеры используют файл описания с одной или несколькими программами-драйверами («фильтрами»), которые взаимодействуют с принтером через «внутреннюю» программу. В настоящее время CUPS использует файлы PPD (PostScript Printer Description) для описания необходимых программ принтера и драйверов, некоторые из которых поставляются с CUPS, а другие поставляются с вашей операционной системой или дистрибутивом Linux. Бэкенды указываются с использованием URI (универсального идентификатора ресурса), где схема URI — это имя бэкенда, например, «ipp://11.22.33.44/ipp/print» указывает бэкэнд «ipp» — как и файлы PPD, некоторые бэкэнды поставляются с CUPS, а другие поставляются с вашей операционной системой.

Классы связаны с одним или несколькими принтерами и обычно используются для распределения заданий на печать среди группы принтеров или обеспечения избыточности или высокой доступности при печати. Задания на печать, отправленные в класс, перенаправляются на следующий доступный принтер в классе.

Программа lpadmin(8) используется для добавления, изменения или удаления мест назначения, а команда lpinfo(8) используется для вывода списка доступных драйверов принтеров и серверных программ. Программа cupsctl(8) используется для управления системой печати в целом, включая такие вещи, как ведение журнала отладки и совместное использование принтеров. Также можно использовать веб-интерфейс CUPS ("http://localhost:631" или "https://servername:631"), и большинство операционных систем предоставляют собственные средства администрирования с графическим интерфейсом.

Управление принтерами

Команда lpadmin используется для создания, изменения или удаления принтера. Опция -p указывает принтер, который необходимо создать или изменить:

lpadmin принимает несколько дополнительных опций после -p имя_принтера при добавлении или изменении принтера:

-D "описание" Задает описание принтера, которое часто отображается вместо имени принтера, например "HP LaserJet". -E Включает принтер и принимает новые задания на печать. -L "местоположение" Устанавливает местоположение принтера, например "Конференц-зал". -m модель Задает драйвер принтера, используя имя модели. -o опция=значение Устанавливает именованную опцию. -v uri-устройства Устанавливает URI для принтера.

Опция -x удаляет указанный принтер:

Драйверы принтеров и файлы PPD

Опция -m для lpadmin указывает драйвер («модель»), который будет использоваться для принтера. Вы можете запустить команду lpinfo -m, чтобы получить список всех доступных драйверов («моделей») в вашей системе:

Каждая строка содержит имя драйвера, за которым следует его описание, например:

Драйвер повсеместно используется почти для всех современных сетевых принтеров, продаваемых примерно с 2009 года. Например, следующая команда создает пункт назначения для принтера с IP-адресом 11.22.33.44:

Примеры драйверов CUPS (строки "drv:///sample.drv/." выше) можно использовать для "устаревших" принтеров. Например, следующая команда создает место назначения для принтера HP LaserJet с IP-адресом 11.22.33.44:

Примечание. Примеры драйверов CUPS предназначены для обеспечения базовых возможностей печати для максимально широкого диапазона принтеров, но, как правило, не используют весь потенциал принтеров или CUPS. Другие драйверы (включая универсальный драйвер) обеспечивают более широкие возможности печати и более высокое качество печати.

URI устройства (серверные части)

CUPS поставляется с несколькими стандартными бэкендами, взаимодействующими с принтерами:

  1. dnssd : протокол Bonjour (DNS-SD).
  2. ipp : протокол интернет-печати (IPP) с дополнительным шифрованием.
  3. ipps: протокол интернет-печати с обязательным шифрованием.
  4. lpd : протокол демона построчной печати.
  5. socket : протокол AppSocket (JetDirect).
  6. usb : класс принтеров универсальной последовательной шины (USB).

Выполните команду lpinfo -v, чтобы получить список доступных внутренних серверов и принтеров:

Каждая строка содержит «класс» серверной части, за которым следует имя серверной части или полный URI принтера, например:

Сетевой класс бэкендов используется для всех сетевых протоколов. Справочный документ Использование сетевых принтеров описывает, как использовать стандартные сетевые серверные части CUPS. Прямой класс бэкендов используется для принтеров с прямым подключением, таких как USB и Bluetooth. Поскольку эти серверные части используют системный идентификатор, следует использовать только URI устройств, о которых сообщается.

Как только вы узнаете правильный URI принтера, задайте его с помощью параметра -v команды lpadmin:

Параметры принтера

Команда lpadmin позволяет установить различные параметры принтера:

-o cupsIPPSupplies=false Отключает отчет об уровне снабжения IPP для принтера. -o cupsSNMPSupplies=false Отключает отчет об уровне снабжения SNMP для принтера. -o имя=значение Задает значение по умолчанию для указанной опции PPD. Например, -o PageSize=Legal устанавливает размер страницы по умолчанию в US Legal.-o принтер-ошибка-политика=имя Устанавливает политику для ошибок, таких как принтеры, которые не могут быть найдены или доступны, не поддерживают печатаемый формат, сбой при отправке данных для печати или вызывают сбой одного или нескольких фильтров: abort-job Прерывает задание при ошибке. retry-job Повторяет задание в будущем. retry-current-job Немедленно повторяет текущее задание. stop-printer Останавливает принтер при ошибке. -o print-is-shared=true/false Включает/отключает общий доступ к принтеру. Дополнительные сведения см. в разделе «Общий доступ к принтеру». -o принтер-оп-политика=имя Задает политику работы, связанную с принтером. Дополнительные сведения см. в справочном документе «Управление политиками операций». -u разрешить:<пользователь|@группа><,пользователь|,@группа>* -u разрешить:все -u запретить:<пользователь|@группа><,пользователь|,@группа>* -u запретить:нет Установить пользователя -уровень контроля доступа к принтеру. Список разрешенных определяет белый список пользователей и групп, а список запрещенных определяет черный список пользователей и групп.

Общий доступ к принтеру

CUPS поддерживает совместное использование принтеров с другими компьютерами и мобильными устройствами. Два параметра cupsctl управляют общими функциями общего доступа к принтеру:

--share-printers Позволяет совместно использовать принтеры с другими компьютерами и мобильными устройствами в вашей локальной сети. --remote-any Расширяет общий доступ к принтеру до любой сети, которая может подключиться к вашему серверу.

После того как вы включили общий доступ к принтерам, вы должны выбрать, какие принтеры будут использоваться совместно, с помощью команды lpadmin и параметра -o printer-is-shared=true.

Например, чтобы совместно использовать два принтера ("foo" и "bar") в локальной сети, выполните следующие команды:

Управление курсами

Команда lpadmin используется для создания, изменения или удаления класса. Параметр -c указывает класс для создания или изменения и сочетается с параметром -p:

Опция -r указывает, что указанный принтер удаляется из класса:

Опция -x удаляет указанный класс:

Журнал отладки и устранение неполадок

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

Чтобы отключить ведение журнала отладки, выполните ту же команду с параметром --no-debug-logging:

Я использую Mint 18.3 на принтере HP 1200.
Сегодня при попытке печати появляется сообщение об ошибке: "Ошибка фильтра". Я проверил принтер на другом ПК, и он работал нормально. На другом компьютере я получил сообщение «Отсутствует фильтр печати для HP Laserjet 1200», но он печатался нормально.
Таким образом, видимо, плохой фильтр или отсутствующий фильтр для процесса печати.
Я понятия не имею, куда идти дальше.
Спасибо за любые предложения.
изменить

У меня такая же досадная проблема с принтером Brother: я не могу печатать после обновления

Я не понимаю, что не так?

Но не могу понять, что не так, из моего /var/log/cups/error_log

Мне кажется, что патч уловил старую ошибку, о которой сообщалось в ghostscript 9.26 в апреле 2019 года:
- https://bugs.debian.org/cgi-bin/bugrepo . ошибка=926787
- https://bugs.debian.org/cgi-bin/bugrepo. bug=926789
который утверждает, что уже исправлен в чашках-фильтрах. Но как он стал "неисправленным", регресс.

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

Подробности из /var/log/cups/error_log:

Но я не знаю, сможем ли мы (у меня Mint 18.2) достичь этого исправления.

Тем временем мне скоро понадобится ремонт, потому что ни один из моих принтеров не работает, и я не могу распечатать PDF-файл.

<р>. в Mint 18.x следующее будет понижено до исходной версии:

Кто-то может добиться того же с помощью версии Synaptic - Force.
т.е. приведенное выше просто для простоты.

Для очень точной предыдущей версии.
Помимо приведенной выше ссылки CH1291 18.04 для точно предыдущей версии, также есть ссылка для 16.04 / Mint 18.

<р>. понижение версии работало нормально здесь под 18.x (почему бы и нет. ), однако обычный совет остается:
на свой страх и риск / используйте Timeshift раньше и т. д. и т. д.

EDIT – УСТАРЕВШАЯ информация выше, так как она получила официальное исправление.

Обновление: плохие новости, но хорошие новости

Плохая новость заключается в том, что я не могу ничего печатать (я думал, что проблема только в PDF, но нет, я не могу печатать из LibreOffice).

Хорошие новости: я продублировал принтер, выбрал «Универсальный» драйвер, не использующий «Foomatic», и затем снова могу печатать (вдохновение пришло из предыдущих ссылок, после того, как я увидел, что это был «foomatic», который был изменено).

В моем случае был рекомендован "Generic PCL 6/PCL XL Printer Foomatic/pxlcolor" (и он не работает); переход на «Универсальный принтер PCL 6/PCL XL — CUPS+Gutenprint v5.2.11" работает, снова печатаю.

Исправлено под стаканчиками-фильтрами всего несколько минут назад. как под Bionic, так и под Xenial.
Довольно быстрый ответ от Canonical.

Спасибо за подтверждение.
Несмотря на то, что они утверждают, что «исправление» для этой проблемы, которая выглядит как наша проблема, находится в пакете cups-filter, я проверил этот пакет, и он не изменился с момента моей последней установки LM19.1 (17 апреля) , 8 мая были обновлены только ghostscript и 3 зависимых пакета (Диспетчер обновлений, Просмотр истории обновлений). Таким образом, проблема возникла только из-за новых пакетов. Накануне все работало нормально!
Возможно, фильтр-чашки нужно было поставить как зависимость от этого?
У меня cups-filters версии 1.20.2-0ubuntu3, и менеджер пакетов говорит, что это последняя версия (ubuntu 18.04/bionic base).

Я нашел пакет ghostscript 9.26~dfsg+0-0ubuntu0.18.04.8, как уже упоминалось, но это ручной даунгрейд, и у меня есть работающий принтер, поэтому я решил подождать, а не рисковать что-то сломать. Извините, больше ничего предложить не могу. Я не уверен, как лучше всего уведомить соответствующих разработчиков. Я могу поэкспериментировать на имеющейся у меня тестовой машине.
Можно ли откатиться? Я не помню, есть ли в LM 18 функция Timeshift, к счастью, она мне никогда не понадобилась.

У меня есть лазерный принтер (Samsung ML-2010), который находится в хорошем состоянии, он работает в Windows и старых Linux, но не с моей новой установкой ArchLinux. Принтер опознается и настраивается, но не печатает, говоря ни о каком задании:

Вопрос в том, где искать больше информации? Журналы чашек, кажется, не имеют ничего общего.

10 ответов 10

Для пользователей Ubuntu 14.04 (и, возможно, других) вы не можете добавить foomatic-фильтры, как было предложено выше, поскольку они конфликтуют с версией проекта CUPS (cups-filters).

Подсказка может быть в /var/log/cups/error_log . В моем случае вывод выглядит так

Это можно решить с помощью:

Не уверен, нужны ли оба, я просто выбрал все, что похоже на hpijs, в Aptitude.



Этот совет очень полезен в моем случае. Я столкнулся с той же проблемой, но фактическая причина, которую я понял из журнала, заключается в том, что я случайно удалил ghostscript .

Спасибо, мой журнал дал мне ответ, я пытался напечатать только 2 страницы из 20, перевернутые и только четные страницы. Но ей это почему-то не понравилось, и фильтр дал мне сбой. Я не знал, что выбор таких параметров, как реверс, нечетные страницы или диапазон, считается фильтром.

Это сработало и для меня, для другого принтера (Lexmark E120n), где CUPS также предложил настроить его для использования hpijs.

У меня работало на Ubuntu 18.04.5 LTS. Гораздо проще, чем шаги, которые были необходимы hp-check -t, или что-либо о версиях Ghostprint и понижении версии.

Поскольку это самый популярный запрос в Google по запросу "debian jessie filter failed", я добавлю то, что мне помогло.

Это связано с ошибкой Debian Jessie и CUPS с ошибкой фильтра!

Виновником был пакет ghostscript из стабильной версии (в данном случае Jessie), который часто аварийно завершает работу. Я перешел на пакет ghostscript после тестирования.


Обратите внимание на всех, кто увидит это сообщение об ошибке в 2019 году. Возможная причина – несовместимость между старыми версиями cups-filters и последними версиями ghostscript . Проблема решается обновлением первого или понижением второго.

Обратите внимание, что обновления для фильтров-чашек не выпускались для некоторых платформ (например, Raspbian Stretch для Raspberry Pi) до середины июня 2019 года, поэтому, если это не сработало в прошлом, попробуйте sudo apt update && sudo apt update еще раз.

Попробуйте установить foomatic-filters и foomatic-db-engine из AUR.


У меня была такая же проблема на Debian Jessie!
Совет Эрика Винкельса решил проблему.

Затем я выполнил следующие шаги:
- sudo aptitude update
- sudo aptitude safe-upgrade ghostscript
- Восстановить sources.list и снова:
- sudo aptitude update

Теперь мой ghostscript находится в версии 9.19~dfsg-3, и печать работает.

  • 0 (ноль) для USB-принтера
  • d для загрузки — при загрузке возникла ошибка "Невозможно получить ключ от сервера ключей"
  • y для установки Да для принятия лицензионного соглашения
  • согласиться с тем, что "этот файл PPD кажется правильным"
  • Введите описание местоположения.
  • Введено через "дополнительную информацию для этого принтера"
  • y, чтобы распечатать тестовую страницу


Для пользователей Raspberry Pi и, возможно, некоторых других платформ на основе Debian, столкнувшихся с этой проблемой в мае-июне 2019 года, проблема заключалась в том, что ghostscript и libgs9 были обновлены за две или три недели до обновленных версий cups-browsed, cups -filters, cups-filters-core-drivers, libcupsfilters1 и libfontembed1 стали доступны в репозиториях Raspbian. Повторный запуск sudo apt update && sudo apt upgrade 14 июня 2019 года или позднее должен решить проблему.

Я только что решил проблему, очень похожую на эту. Это было вызвано обновлением Debian весной 2019 года. Чтобы решить эту проблему, я добавил «oldstable» в свой список исходников Debian, а затем смог понизить несколько пакетов. Я понизил рейтинг:

  • printer-driver-hpcups до 3.16.11+repack0-3
  • ghostscript, ghostsctipt-x, libgs9, libgs9-общий для 9.26a~dfsg-0+deb9u2

В моем случае (HP Laserjet CP1215) отсутствовал правильный драйвер принтера => foo2hp

Вы можете установить его с помощью: sudo apt-get install printer-driver-foo2zjs-common

Также перезапустите CUPS: перезапустите sudo service cups

В моем случае у меня есть raspberry pi, это произошло из-за того, что мои rootfs были заполнены.

Проверьте, так ли это, с помощью df -h и при необходимости очистите файловую систему.

Используйте sudo ncdu -x /, чтобы найти папку, которая занимает все это пространство, опять же, если это ваш случай.

Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками linux print cups или задайте свой вопрос.

Связанные

Горячие вопросы о сети

Чтобы подписаться на этот RSS-канал, скопируйте и вставьте этот URL-адрес в программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; вклады пользователей под лицензией cc by-sa. версия 2022.3.18.41718

Фильтр печати, используемый вместе с LPRng, называется lpdfilter и устанавливается как пакет с тем же именем. Ниже приводится подробное описание шагов, связанных с обработкой задания на печать. Если вам нужно узнать о внутренней работе фильтра печати, прочтите сценарии, его приводящие в действие (в частности, /usr/lib/lpdfilter/bin/if), а также, возможно, следуйте шагам, описанным в разделе �6.5.3. «Советы по устранению неполадок с lpdfilter».

Фильтр печати (/usr/lib/lpdfilter/bin/if) определяет, какие параметры использовать, переданные ему диспетчером очереди печати и указанные в управляющем файле задания на печать. Параметры используемой очереди также собираются из /etc/printcap и /etc/lpdfilter/queuename< tt>/conf (где имя_очереди — имя фактической очереди).

Если указана очередь ascii, фильтр печати будет вынужден обрабатывать файл как текст ASCII. Если указана очередь, отличная от ascii, фильтр принтера пытается автоматически определить тип файла. Фильтр определяет тип файла, используя сценарий /usr/lib/lpdfilter/bin/guess для запуска файла для каждого рассматриваемого файла. Вывод файла используется для определения типа в соответствии с записями в файле /etc/lpdfilter/types.

Файл преобразуется в поток данных для конкретного принтера в соответствии с типом файла и типом используемой очереди:

Если указана очередь raw, данные для печати обычно отправляются прямо на принтер или перенаправляются в другую очередь. Однако данные также могут подвергаться простому преобразованию с помощью recode , если это указано в /etc/lpdfilter/queuename/conf. Чтобы иметь абсолютный необработанный фильтр, который полностью обходит lpdfilter, удалите строку :if=/usr/lib/lpdfilter/bin/if:\ для соответствующей очереди в /etc/printcap.

Если указанная очередь не является необработанной очередью:

Если данные не в формате PostScript, они сначала преобразуются в PostScript, запустив для них /usr/lib/lpdfilter/filter/type2ps (где type фактический тип файла, определенный для рассматриваемых данных). Например, текст ASCII преобразуется в PostScript с помощью /usr/lib/lpdfilter/filter/ascii2ps, который, в свою очередь, использует a2ps для получения правильной кодировки символов, определенной для очереди. Это обеспечивает правильную печать специальных символов страны в текстовых файлах. Подробнее см. на странице руководства a2ps .

При необходимости данные PostScript можно снова преобразовать, если подходящий скрипт помещен в /etc/lpdfilter/имя_очереди/ pre (где имя_очереди — это имя фактической используемой очереди).

При необходимости данные PostScript преобразуются в другой язык принтера.

Если принтер поддерживает PostScript, данные отправляются непосредственно на принтер (или пересылаются в другую очередь).Однако данные можно дополнительно обрабатывать с помощью функций Bash duplex и tray , которые определены в /usr/lib/lpdfilter/global/functions. , чтобы включить двустороннюю печать и выбор лотка для бумаги с помощью команд PostScript (для этого требуется, чтобы принтер PostScript имел эту функцию).

Если принтер не поддерживает PostScript, Ghostscript использует драйвер, подходящий для родного языка принтера модели, для создания данных, специфичных для принтера, которые в конечном итоге отправляются на принтер (или пересылаются в другую очередь).

Параметры Ghostscript хранятся либо в строке cm файла /etc/printcap, либо в файле /etc/lpdfilter/< i>имя_очереди/upp (где имя_очереди — это имя фактической используемой очереди) .

При желании вывод Ghostscript можно снова переформатировать, если подходящий скрипт помещен в /etc/lpdfilter/queuename< tt>/post (где имя_очереди — это имя фактической используемой очереди).

Данные, относящиеся к принтеру, передаются на принтер (или в другую очередь). Управляющие последовательности для конкретного принтера могут быть отправлены на принтер как до, так и после потока данных. Они должны быть указаны в /etc/lpdfilter/ queuename/conf.

6.5.1.Настройка lpdfilter

Обычно система печати настраивается с помощью YaST (как описано в Разделе 5.3. «Настройка принтера с помощью YaST»), что включает настройку lpdfilter .

Однако некоторые специальные настройки можно изменить, только отредактировав файлы конфигурации фильтра печати вручную. Для каждой очереди отдельный файл конфигурации записывается в /etc/lpdfilter/ queuename/conf (где < i>имя_очереди — это имя фактической используемой очереди).

6.5.2.Настройка фильтра lpdf

По умолчанию файлы не в формате PostScript конвертируются в этот формат с помощью /usr/lib/lpdfilter/filter/type2ps (где type – фактический тип файла). рассматриваемый файл).

Если подходящий сценарий помещен в /etc/lpdfilter/имя_очереди/type2ps, он будет использоваться для преобразования PostScript файла файл. Сценарий должен иметь возможность принимать данные на stdin и выводить данные в формате PostScript на stdout.

При желании можно выполнить дополнительный шаг для переформатирования данных PostScript, для чего необходимо поместить подходящий сценарий в /etc/lpdfilter/ queuename< /i>/пре. Например, это может быть сценарий для добавления пользовательских предварительных загрузок PostScript. Сценарий должен иметь возможность принимать данные на stdin и выводить данные в формате PostScript на stdout. Некоторые программы для переформатирования PostScript включены в состав psutils. В частности, программа pstops способна выполнять обширные преобразования. Подробнее см. на странице руководства по pstops.

Специальные параметры Ghostscript: при записи конфигурации с помощью YaST параметры Ghostscript сохраняются в /etc/lpdfilter/имя_очереди/ upp (где имя_очереди — это имя фактической используемой очереди), но пользовательские параметры Ghostscript также можно добавить в этот файл вручную. Подробнее о параметрах Ghostscript см. Раздел 6.6. «Работа с Ghostscript».

При желании данные можно снова переформатировать после преобразования с помощью Ghostscript. Для этого необходимо поместить подходящий скрипт в /etc/lpdfilter/queuename/post (где < tt>queuename — имя фактической используемой очереди). Этот скрипт должен иметь возможность принимать данные на stdin и выводить поток данных, подходящий для конкретной модели принтера, на stdout.

6.5.2.1. Пример, не зависящий от оборудования

Для целей этого примера предположим, что существует очередь с именем testqueue, которую необходимо настроить таким образом, чтобы текст ASCII печатался с номерами строк вдоль левого поля. Кроме того, все файлы должны быть распечатаны с двумя страницами, масштабированными для размещения на одном листе. Сценарии /etc/lpdfilter/testqueue/ascii2ps и /etc/lpdfilter/testqueue/pre, показанные ниже, помогут достичь этого:

Пример�6.3.�/etc/lpdfilter/testqueue/ascii2ps: Преобразование ASCII в PostScript

Эти сценарии необходимо сделать исполняемыми для всех пользователей, что можно сделать с помощью команды chmod:

Переформатирование файлов с помощью pstops работает только с файлами PostScript, созданными для таких преобразований, как это обычно и бывает.

6.5.2.2. Использование пользовательских предварительных загрузок PostScript

Предварительные загрузки PostScript — это небольшие файлы, содержащие команды PostScript, которые предшествуют потоку данных печати для инициализации принтера или программы Ghostscript желаемым образом. Предварительная загрузка PostScript в основном используется для включения двусторонней печати на принтерах PostScript или для активации специального лотка для бумаги.Их также можно использовать для настройки полей и гаммы.

Чтобы использовать предварительную загрузку, принтер PostScript или Ghostscript должны иметь возможность интерпретировать специальные команды. Ghostscript, например, не интерпретирует команды, связанные с двусторонней печатью или лотками для бумаги.

В этом примере снова используется очередь testqueue:

Чтобы включить или отключить двустороннюю печать, создайте файлы /etc/lpdfilter/testqueue/duplexon.ps и /etc/lpdfilter/testqueue/duplexoff.ps с следующее содержание:

Пример�6.5.�/etc/lpdfilter/testqueue/duplexon.ps: включение двусторонней печати

Пример�6.6.�/etc/lpdfilter/testqueue/duplexoff.ps: Отключение двусторонней печати

Следующий код PostScript можно использовать для поворота оборотной стороны на 180 градусов для двусторонней печати:

Выбор лотка для бумаги

Чтобы включить лоток для бумаги по умолчанию 0 или лоток 2, создайте файлы /etc/lpdfilter/testqueue/tray0.ps и /etc/lpdfilter/testqueue/tray2.ps< /tt>:

Пример�6.7.�/etc/lpdfilter/testqueue/tray0.ps: включение лотка 0

Пример�6.8.�/etc/lpdfilter/testqueue/tray2.ps: включение лотка 2

Чтобы настроить параметры полей, создайте файл вида /etc/lpdfilter/testqueue/margin.ps.

Пример�6.9.�/etc/lpdfilter/testqueue/margin.ps: Настройка полей

Параметры полей слева, снизу, справа и сверху, а также размеры бумаги ширина и высота указываются в пунктах (одна точка равна 1/72 дюйма или примерно 0,35 мм). Смещения полей left-offset и top-offset указываются в пикселях, поэтому зависят от разрешения устройства вывода.

Чтобы изменить только положение области печати, достаточно создать файл вида /etc/lpdfilter/testqueue/offset.ps.

Пример�6.10.�/etc/lpdfilter/testqueue/offset.ps: изменение положения области печати

Чтобы настроить гамма-распределение между цветами, используйте файл вида /etc/lpdfilter/testqueue/cmyk.ps или /etc/lpdfilter/testqueue/rgb.ps :

Пример�6.11.�/etc/lpdfilter/testqueue/cmyk.ps: Гамма-коррекция CMYK

Пример�6.12.�/etc/lpdfilter/testqueue/rgb.ps: Гамма-коррекция RGB

Чтобы это работало, вам необходимо знать, какая цветовая модель используется вашим принтером (CMYK или RGB). Значения для голубого, пурпурного, желтого и черного или для красного, зеленый и синий должны быть определены путем тестирования. Обычно они должны находиться в диапазоне от 0,001 до 9,999.

Чтобы получить приблизительное представление о влиянии вышеуказанных действий фильтрации на выходные данные, отобразите их на экране. Чтобы увидеть, как выглядит образец файла без гамма-коррекции, введите:

Чтобы посмотреть, как это выглядит с гамма-коррекцией в соответствии с приведенными выше образцами фильтров:

Завершите тест, нажав Ctrl - C .

Сброс настроек принтера

Чтобы каждый раз возвращать принтер в исходное состояние, используйте файл типа /etc/lpdfilter/testqueue/reset.ps:

Пример�6.13.�/etc/lpdfilter/testqueue/reset.ps: Сброс принтера

Чтобы активировать одну из указанных выше предварительных загрузок PostScript, создайте файл, аналогичный /etc/lpdfilter/testqueue/pre:

В этом файле замените preload.ps именем своего пользовательского файла предварительной загрузки. Кроме того, сделайте этот скрипт исполняемым и доступным для чтения для всех пользователей, что можно сделать с помощью chmod следующим образом:

Используйте описанный выше механизм для вставки команд PostScript не только перед данными печати, но и после них. Например, с помощью такого сценария, как /etc/lpdfilter/testqueue/pre, сбрасывайте принтер в исходное состояние после завершения каждого задания на печать:

6.5.2.3. Пример конфигурации принтера GDI

В этом разделе приведен пример индивидуальной конфигурации очереди печати gdi. Как поясняется в Разделе�5.2.3. «Проблема с GDI-принтерами», часто почти невозможно заставить такие принтеры работать под Linux. Однако для некоторых моделей GDI доступны специальные программы-драйверы. В большинстве случаев они предназначены для работы в качестве надстроек Ghostscript, при этом драйвер переформатирует вывод Ghostscript на собственный язык принтера. Однако часто эти драйверы ограниченно используют функциональные возможности принтера, позволяя, например, только черно-белую печать. При наличии такого драйвера Ghostscript можно использовать с ним следующим образом (см. также Раздел 6.6. «Работа с Ghostscript»):

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

Растеризованное изображение преобразуется драйвером GDI в формат данных, подходящий для модели принтера.

Для действий, описанных ниже, предполагается, что драйвер принтера GDI, подходящий для SUSE LINUX, уже установлен или может быть загружен из Интернета. Также предполагается, что драйвер работает так, как описано выше. В некоторых случаях вам может понадобиться некоторое знакомство с тем, как исходный код обрабатывается в Unix или как работать с такими установками (из архивов .zip или .tar.gz или, может быть, из пакетов .rpm).

После распаковки такого архива вы часто найдете последние инструкции по установке, включенные в некоторые файлы, обычно в README или INSTALL, или даже в doc подкаталог. Если вы скачали архив .tar.gz, обычно вам нужно скомпилировать и установить драйвер самостоятельно.

Для примера, описанного ниже, предполагается следующая установка:

Программа драйвера была установлена ​​как /usr/local/bin/printerdriver.

Необходим драйвер Ghostscript pbmraw с выходным разрешением 600 dpi.

Принтер подключен к первому параллельному порту — /dev/lp0.

Драйвер Ghostscript и разрешение могут отличаться для вашего принтера. Прочтите документацию, прилагаемую к драйверу, чтобы узнать об этом.

Сначала создайте очередь gdi. Для этого войдите в систему как root и запустите lprsetup следующим образом:

Теперь создайте скрипт /etc/lpdfilter/gdi/post:

Прочитайте документацию программы-драйвера, чтобы узнать, какие для нее существуют параметры. При необходимости укажите их в разделе gdi_driver_parameters. Сделайте скрипт исполняемым для всех пользователей и перезапустите диспетчер очереди печати:

С этого момента пользователи должны иметь возможность печатать с помощью этой команды:

6.5.3. Советы по устранению неполадок с lpdfilter

Пример�6.16.�/usr/lib/lpdfilter/bin/if: уровни отладки

Если включен параметр DEBUG="low", программа записывает выходные данные stderr в файл /tmp/lpdfilter.if-$$.XXXXXX (где $$ — идентификатор процесса, а XXXXXX — уникальная случайная строка).

При включенном параметре DEBUG="medium" программа записывает в журнал, в дополнение к собственному выводу ошибок, вывод stderr сценариев в /usr/ lib/lpdfilter/filter, если эти сценарии запускаются /usr/lib/lpdfilter/bin/if. Результат отладки записывается в /tmp/lpdfilter.name-$$.XXXXXX (где name — это имя запускаемого скрипта, а $$.XXXXXX< /tt> строка, составленная описанным выше способом).

Если включен параметр DEBUG="high", все выходные данные об ошибках регистрируются, как указано выше. Кроме того, весь вывод, обычно предназначенный для принтера, перенаправляется в файл журнала с именем /tmp/lpdfilter.out-$$.XXXXXX (где $$.XXXXXX – это строка составлено так, как описано выше).

Чтобы не потерять контроль над ведением журнала, вы можете удалить файлы журнала с помощью команды rm -v /tmp/lpdfilter* перед каждым новым запуском теста.

Читайте также: