Як додати підроблений, фіктивний, нульовий принтер у CUPS?


12

Я пишу програмне забезпечення, яке підтримує декілька принтерів. Щоб перевірити це, мені потрібно додати кілька принтерів на мій сервер CUPS. Як я можу це зробити?

Я хочу додати кілька підроблених принтерів, які будуть надсилати завдання безпосередньо в / dev / null. Таким чином, я можу спостерігати за списком "виконаних завдань" в інтерфейсі CUPS і спостерігати, чи моє програмне забезпечення використовує правильний принтер для кожного завдання.


хіба це не правильно "lpadmin -p lp0 -E -v / dev / null -m raw"
Ашика Уманга Умагілія

Відповіді:


11

Одне рішення - встановити чашки-pdf . До нього додається віртуальний принтер, який записує PDF-файли. В Інтернеті є кілька навчальних посібників про те, як її встановити та налаштувати; оскільки я використовую Gentoo, я читав Gentoo-wiki , де також згадується вікі Sabayon .

У віртуальному принтері cups-pdf є файл конфігурації /etc/cups/cups-pdf.conf, і за замовчуванням всі файли PDF записуються в /var/spool/cups-pdf/${USER}.

(Примітка: У Ubuntu він пише до ~ / PDF /)

Однак є кілька обмежень:

  • Оскільки існує лише один файл конфігурації, кілька принтерів PDF зберігатимуться в одній директорії.

  • Не можна друкувати "необроблені" дані (використовуючи, наприклад, lpr -o raw). Навіть надсилання PDF-файлу як необробленого завдання не вийде. Завдання для друку в режимі сирого друку створюють порожній PDF-файл із лише порожньою сторінкою.

Навіть з цими обмеженнями він ідеально підходить для моїх потреб.


Виноска: якщо користувач використовує Gnome або друкує через додаток GTK +, у діалоговому вікні друку вже є псевдопринтер "Друк у файл". Таким чином, навіщо користувачеві все ж хочеться додати віртуальний принтер PDF? Ось кілька причин:

  • Цей "Друк у файл" характерний для GTK + і не доступний для програм, що не є GTK +. (можливо, KDE має подібну функцію, але я не впевнений)
  • Це дає змогу генерувати PDF із Flash-додатків, призначених для друку. Наприклад, PocketMod .
  • Додавання віртуального принтера до CUPS дозволяє протестувати друк за допомогою скриптів оболонки чи іншого програмного забезпечення, яке безпосередньо спілкується з CUPS. Це особливо корисно розробникам під час тестування їхніх додатків.
  • Можна "поділитися" цим віртуальним принтером з локальною мережею. Не зовсім корисно, але можливо.
  • Можна приєднати команду після обробки, яку слід виконати відразу після збереження файлу PDF.

10

На форумі Кубків є більш повна / точна відповідь на це питання.

Відповідь полягає в тому, що URI пристрою слід встановити на файл: / dev / null

Отже, у моїй установці Ubuntu:

  • URI пристрою: файл: / dev / null
  • Марка та модель: Місцевий сирий принтер

Що для мене працює чудово.

Я знову шукав форум Кубків і виявив це:

Налаштування нульового принтера командного рядка на форумі Кубків

У вашому часі.conf:

FileDevice yes

Налаштування принтера

lpadmin -p nowhere -E -v file:/dev/null

Тестування принтера

who |lp -d nowhere

Зараз я просто дивлюся на свою роздруківку: дрібні деталі, яскраві кольори, це звичайний стрибок зі сторінки. ... hey waitaminute ....
Ендрю Рассел

Дякую. Мені потрібен був фіктивний принтер у моїй віртуальній машині, щоб зробити скріншот деяких інструкцій. :)
njallam

Дякую. Це wineтеж спрацювало .
Тінті

7

Ви можете створити принтер , який виводить на /dev/nullз lpadmin:

$ sudo lpadmin -p myprinter -E -v file:///dev/null

Це буде написано /etc/cups/printers.conf, але ви також можете переглянути принтери за допомогою lpstat:

$ sudo lpstat -s
myprinter accepting requests since Thu 22 Jan 2015 11:04:46 AM GMT
system default destination: myprinter
device for myprinter: ///dev/null

Зауважте, що вам може знадобитися ввімкнути FileDevice в /etc/cups/cupsd.conf на старих дистрибутивах Linux .

Щоб зробити ваш новий принтер за замовчуванням, використовуйте lpoptions:

$ sudo lpoptions -d myprinter

Як її видалити?
Річард

@ Richard Використання lpadmin -x myprinterабо веб-інтерфейс.
Torkel Bjørnson-Langen

2

Одне з найкращих рішень - це використання ippserver. Він буває CUPSv2.2.2і вище. Ви також можете отримати проект тут: реалізація зразка IPP .

Відповідно до опису на сторінці керівництва :

ippserver - це простий сервер протоколу Інтернет-протоколу (IPP), який відповідає специфікаціям IPP Everywhere та IPP Shared Infrastructure Extension (INFRA). Він може використовуватися як окремий сервер друку та / або дуже базовий інфраструктурний сервер між стандартними клієнтами IPP та проксі-серверами IPP, що відповідають специфікації INFRA.

Щоб скористатися нею, потрібно запустити все ippserver "My cool printer", що створить віртуальний принтер з назвою My cool printerдля вас. Він працює як веб-сервер і слухає певні порти.

Якщо вам потрібно кілька принтерів, ви можете запустити сервер на декількох портах, використовуючи ippserver "My other cool printer" -p 8888.

Ви навіть можете надати атрибути принтера, використовуючи файл атрибутів. Наприклад, ваш принтер підтримує за замовчуванням відбитки високої якості, ви можете додати наступний атрибут у файл атрибутів:

ATTR enum print-quality-default high

та запустіть сервер, використовуючи:

ippserver "My high quality cool printer" -a attributes-file.txt

Список літератури:

  1. Зразок IPP PWG
  2. CUPS ipptoolfile man page

1

Взято з http://inai.de/linux/adm_virtualprinter :

Віртуальний принтер в CUPS

Для створення принтера в CUPS, який передає дані нікуди (як /dev/null), існує багато способів. На цій сторінці використовується socket:// метод.

Спершу налаштуйте xinetd

Нам потрібна послуга TCP Discard на порту 9. Xinetd має вбудований, тому ми можемо просто цим користуватися. Переконайтеся, що у файлах конфігурації xinetd зазвичай доступне таке визначення /etc/xinetd.d/discard. Він повинен містити таку послугу, як:

    відмовитися від обслуговування
        type = ВНУТРІШНІ
        id = відкинути-потік
        socket_type = потік
        протокол = tcp
        користувач = root
        чекати = ні
        вимкнути = ні
        ФЛАГИ = IPv6 IPv4 
Запустіть, rcxinetd reloadщоб перечитати файли конфігурації та активувати нову discardпослугу. Або використовувати, rcxinetd startякщо xinetd ще не був активним.

Принтер CUPS

Тепер перейдіть до веб-інтерфейсу CUPS та додайте новий принтер. В якості призначення socket://localhost:9/в якості принтера вибирайте щось, що виглядає особливо функціонально, наприклад "HP 2500C Foomatic / pcl3". Це все, що там є.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.