Comment ajouter une imprimante fausse, factice, nulle dans CUPS?

12

J'écris un logiciel qui prend en charge plusieurs imprimantes. Afin de le tester, je dois ajouter plusieurs imprimantes à mon serveur CUPS. Comment puis je faire ça?

Je veux ajouter quelques fausses imprimantes qui enverront les travaux directement à / dev / null. De cette façon, je peux regarder la liste des "travaux terminés" dans l'interface CUPS et voir si mon logiciel utilise la bonne imprimante pour chaque travail.

Denilson Sá Maia
la source
n'est-ce pas correct "lpadmin -p lp0 -E -v / dev / null -m raw"
Ashika Umanga Umagiliya
1
Voir aussi création d'une imprimante factice .
Wilfred Hughes

Réponses:

11

Une solution consiste à installer cups-pdf . Il ajoute une imprimante virtuelle qui écrit des fichiers PDF. Il existe plusieurs didacticiels sur le Web sur la façon de l'installer et de le configurer; depuis que j'utilise Gentoo, j'ai lu Gentoo-wiki , qui mentionne également Sabayon wiki .

L' imprimante virtuelle cups-pdf contient un fichier de configuration /etc/cups/cups-pdf.confet, par défaut, tous les fichiers PDF sont écrits /var/spool/cups-pdf/${USER}.

(NB: sur Ubuntu, il écrit dans ~ / PDF /)

Il existe cependant quelques limitations:

  • Puisqu'il n'y a qu'un seul fichier de configuration, plusieurs imprimantes PDF seront enregistrées dans le même répertoire.

  • Il est impossible d'imprimer des données "brutes" (en utilisant, par exemple, lpr -o raw). Même l'envoi d'un fichier PDF en tant que travail brut ne fonctionnera pas. Les travaux d'impression bruts généreront un fichier PDF vierge avec juste une page vide.

Même avec ces limitations, cela fonctionne parfaitement pour mes besoins.


Note: si l'utilisateur utilise Gnome ou imprime via une application GTK +, il y a déjà une pseudo-imprimante "Imprimer dans un fichier" dans la boîte de dialogue d'impression. Ainsi, pourquoi l'utilisateur devrait-il toujours vouloir ajouter une imprimante PDF virtuelle? Voici quelques raisons:

  • Cette «impression dans un fichier» est spécifique à GTK + et n'est pas disponible pour les applications non GTK +. (peut-être que KDE a une fonctionnalité similaire, mais je ne suis pas sûr)
  • Il permet de générer un PDF à partir "d'applications" Flash conçues pour l'impression. Par exemple, le PocketMod .
  • L'ajout d'une imprimante virtuelle à CUPS permet de tester l'impression à l'aide de scripts shell ou d'un autre logiciel qui communique directement avec CUPS. Ceci est particulièrement utile pour les développeurs lors du test de leurs applications.
  • Il est possible de "partager" cette imprimante virtuelle avec le réseau local. Pas vraiment utile, mais possible.
  • Il est possible de joindre une commande de post-traitement à exécuter juste après l'enregistrement du fichier PDF.
Denilson Sá Maia
la source
10

Le Forum Cups a une réponse plus complète / précise à cette question.

La réponse est que l'URI du périphérique doit être défini sur file: / dev / null

Donc, dans ma configuration Ubuntu:

  • URI de l'appareil: fichier: / dev / null
  • Marque et modèle: Imprimante brute locale

Ce qui fonctionne parfaitement pour moi.

J'ai de nouveau cherché sur le forum Cups et j'ai trouvé ceci:

Configuration de l'imprimante nulle en ligne de commande dans le forum Cups

Dans votre cupsd.conf:

FileDevice yes

Configurer l'imprimante

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

Test d'imprimante

who |lp -d nowhere
Andrew Russell
la source
Je regarde juste mon impression maintenant: détails fins, couleurs vibrantes, il saute de la page à moi. ... salut Waitaminute ....
Andrew Russell
Je vous remercie. J'avais besoin d'une imprimante factice dans ma machine virtuelle pour capturer certaines instructions. :)
njallam
Merci. Cela a fonctionné wineaussi.
Tinti
7

Vous pouvez créer une imprimante qui sort /dev/nullavec lpadmin:

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

Ce sera écrit sur /etc/cups/printers.conf, mais vous pouvez également afficher les imprimantes avec 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

Notez que vous devrez peut-être activer FileDevice dans /etc/cups/cupsd.conf sur les anciennes distributions Linux .

Pour définir votre nouvelle imprimante par défaut, utilisez lpoptions:

$ sudo lpoptions -d myprinter
Wilfred Hughes
la source
Comment l'enlever?
Richard
@Richard Use lpadmin -x myprinterou l'interface Web.
Torkel Bjørnson-Langen
2

L'une des meilleures solutions est d'utiliser ippserver. Il vient avec CUPSv2.2.2et plus. Vous pouvez également obtenir le projet à partir d'ici: exemples d'implémentations IPP .

Selon la description de la page de manuel :

ippserver est un simple serveur IPP (Internet Printing Protocol) conforme aux spécifications IPP Everywhere et IPP Shared Infrastructure Extensions (INFRA). Il peut être utilisé comme serveur d'impression autonome et / ou serveur d'infrastructure très basique entre des clients IPP standard et des proxys IPP conformes à la spécification INFRA.

Pour l'utiliser, tout ce que vous devez faire est d'exécuter ippserver "My cool printer"et il créera une imprimante virtuelle avec le nom My cool printerpour vous. Il fonctionne comme un serveur Web et écoute sur des ports spécifiques.

Si vous avez besoin de plusieurs imprimantes, vous pouvez exécuter le serveur sur plusieurs ports en utilisant ippserver "My other cool printer" -p 8888.

Vous pouvez même fournir des attributs d'imprimante à l'aide d'un fichier d'attributs. Par exemple, votre imprimante prend en charge par défaut des impressions de haute qualité, vous pouvez ajouter l'attribut suivant dans le fichier d'attributs:

ATTR enum print-quality-default high

et exécutez le serveur en utilisant:

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

Les références:

  1. Échantillon PWG IPP
  2. Page de manuel CUPS ipptoolfile
Sahil Arora
la source
1

Tiré de http://inai.de/linux/adm_virtualprinter :

Imprimante virtuelle dans CUPS

Pour créer une imprimante dans CUPS qui n'envoie les données nulle part (comme /dev/null), il existe plusieurs façons. Cette page utilise la socket:// méthode.

Configurer d'abord xinetd

Ce dont nous avons besoin, c'est du service TCP Discard sur le port 9. Xinetd l'a intégré, nous pouvons donc simplement l'utiliser. Assurez-vous que la définition suivante est généralement disponible dans les fichiers de configuration de xinetd /etc/xinetd.d/discard. Il doit contenir un service comme le suivant:

    rejet de service
        type = INTERNE
        id = discard-stream
        socket_type = stream
        protocole = tcp
        user = root
        attendre = non
        désactiver = non
        DRAPEAUX = IPv6 IPv4 
Exécutez rcxinetd reloadpour relire les fichiers de configuration et activer le nouveau discardservice. Ou utilisez rcxinetd startsi xinetd n'était pas déjà actif.

Imprimante CUPS

Accédez maintenant à l'interface Web CUPS et ajoutez une nouvelle imprimante. En tant que destination, utilisez socket://localhost:9/, en tant qu'imprimante, choisissez quelque chose qui semble fonctionnel, par exemple le "HP 2500C Foomatic / pcl3". C'est tout ce qu'on peut en dire.

Golar Ramblar
la source