2010-02-14 Cups, configurer une imprimante réseau

http://www.k1ka.be/pics/cups3.jpeg

La configuration des imprimantes via l'interface web de Cups est, à mon humble avis, une belle réussite. J'ai remarqué que chez beaucoup d'utilisateurs, ceux de Windows, en particulier, cette façon de procéder paraît totalement déroutante, alors que je la trouve d'une grande efficacité. Elle est particulièrement appréciable quand on utilise un environnement léger qui ne propose pas de Control-Center, et qu'on peut retrouver ainsi une interface standardisée et familière.

Pourtant, configurer Cups sur mon portable pour accéder à mon imprimante connectée à une station de travail m'a donné du fil à retordre, pour la raison malheureuse que c'est l'interface web d'administration, ainsi que l'aide en ligne, qui induit en erreur. Un malheureux bémol qui tient à peu de choses.

En effet, lors de la création d'une imprimante via cette interface, il est proposé de choisir entre autres parmi

À l'étape suivante, sous le champ à compléter pour l'URI de l'imprimante, on trouve ceci

  Exemples :
    http://nom_machine:631/ipp/
    http://nom_machine:631/ipp/port1
    
    ipp://nom_machine/ipp/
    ipp://nom_machine/ipp/port1
    
    lpd://nom_machine/queue
    
    socket://nom_machine
    socket://nom_machine:9100

À la fin de la procédure, après avoir précisé une marque et un modèle d'imprimante, on retombe sur la page de description de l'imprimante. En essayant l'impression de la page de test via cette page, j'ai reçu comme réponse:

"l’imprimante de destination n’existe pas."

Et sur la machine distante, dans les logs de cups:

  D [14/Feb/2010:17:05:17 +0100] cupsdAcceptClient: 9 from 192.168.0.201:631 (IPv4)
  D [14/Feb/2010:17:05:17 +0100] Report: clients=1
  (...)
  D [14/Feb/2010:17:05:17 +0100] Get-Printer-Attributes ipp://fantasio:631/ipp
  D [14/Feb/2010:17:05:17 +0100] Get-Printer-Attributes client-error-not-found: The printer or class was not found.
  D [14/Feb/2010:17:05:17 +0100] cupsdProcessIPPRequest: 9 status_code=406 (client-error-not-found)
  D [14/Feb/2010:17:05:17 +0100] cupsdCloseClient: 9

Il ressort de tout ça que l'adresse de l'imprimante n'est pas correct; après quelques recherches sur le net, il s'avère que la syntaxe correcte est

 protocole://nom_d_hote[:port]/printers/nom_d_imprimante

ce dont je n'avais pas trouvé mention dans la documentation de Cups, ce qui est quand même dommage. Je ne comprend donc non plus dans quels cas il est nécessaire d'utiliser /ipp/port1 .

Dans mon cas, ça s'est traduit par

 ipp://fantasio/printers/Brother

C'est la syntaxe la plus simple parmi celles que j'ai essayées, mais http://fantasio:631/printers/Brother et ipp://fantasio:631/printers/Brother fonctionnaient aussi.

Pour le choix de l'imprimante et du modèle, le choix de «Raw», puis «Raw Queue (En)» estt suffisant, ce qui a pour effet qu'il n'est pas nécessaire de spécifier un fichier PPD1. Dans ce cas, on pourrait s'attendre à ce qu'il ne soit pas possible de spécifier des options d'impression (comme la résolution ou la taille du papier) sur la machine locale, mais si on clique sur le lien «Definir les options de l'imprimante», on s'aperçoit qu'on est renvoyé sur la page du serveur distant 2

http://www.k1ka.be/pics/cups1.jpeg

(noter le nom du serveur distant dans le lien affiché en bas, lorsque le curseur survole le lien «Définir les oprions de l'imprimante». remarquer aussi que le modèle indique «Remote Printer».)

Il faut avoir à l'esprit que dans cette configuration, on sollicite deux «serveurs» d'impression successifs; d'abord celui de la machine cliente, puis celui de la machine où est raccordée l'imprimante. Chacun des serveurs peut transmettre le fichier de façon brute à la file d'impression, ou le convertir dans le format souhaité par l'imprimante. On a donc le choix entre effectuer la conversion sur la machine cliente, et laisser la machine distante transmettre le fichier à l'imprimante de façon inchangée, ou l'inverse.

Cette dernière solution me semble plus logique; pourquoi se préoccuper de trouver le bon driver sur chaque client, quand ça a déjà été fait sur le serveur ?

À titre d'expérience, j'ai cependant «installé» deux fois la même imprimante réseau, sous deux noms différents, en spécifiant un modèle d'imprimante sur la machine cliente dans un cas, et en utilisant l'option «raw» dans l'autre.

Quelle que soit l'application choisie, il s'avère que dans le premier cas, les options disponibles correspondent à celle spécifiées par le fichier PPD local, tandis que dans le second, ce sont bien celles figurant dans le PPD du serveur distant.

http://www.k1ka.be/pics/cups2.jpeg

(à partir d'Open-Office, les options d'impression spécifiées dans le PPD sont accessibles dans l'onglet «Device»)

Footnotes:

1. Le fichier PPD décrit les caractéristiques d'une imprimante Postscript. http://fr.wikipedia.org/wiki/Printer_Postscript_Description . Sur les systèmes GNU/Linux, il comprend des directives indiquant quelles options passer à Ghostscript pour convertir le fichier Postscript dans le format souhaité par l'imprimante.
2. Dans cette configuration, il y a cependant une chose à laquelle il faut être attentif, c'est que le lien «Suppimer l'imprimante» renvoit également vers le serveur distant. Ça me paraît un choix discutable, parce qu'une fausse maneuvre lors de la configuration d'une machine cliente peut amener à mettre par terre la configuration du serveur. Si c'est bien l'imprimante locale qu'on veut supprimer, il ne semble pas y avoir d'autre choix que de modifier le nom du serveur dans la barre d'adresse du navigateur.