Paramétrer ses imprimantes

De Cliss XXI
Sauter à la navigation Sauter à la recherche

Cette page donne quelques informations sur la configuration des imprimantes sous GNU/Linux, à l'aide du serveur d'impression CUPS, qui est celui généralement utilisé de nos jours.

Tout déléguer à un serveur d'impression réseau

Si un serveur d'impression CUPS est déjà installé sur une machine de votre réseau local, vous pouvez rediriger simplement toutes les impressions vers les impressions vers ce serveur. Vous pourrez ainsi utiliser sur votre machines toutes les imprimantes qu'il partage.

Pour cela, il suffit d'installer (pour ce qui est des systèmes Debian) le paquet cups-client qui fournit les commandes d'impression de base, et de modifier le ficher /etc/cups/client.conf pour y préciser le nom de la machine proposant le serveur CUPS (le paquet cups-bsd installé ici fournit permet d'utiliser les commandes traditionnelle d'UNIX pour imprimer avec CUPS) :

aptitude install cups-client cups-bsd
sed 's/#ServerName.*/ServerName nom_serveur/' /etc/cups/client.conf

Installer une imprimante locale

Si vous souhaitez brancher une imprimante directement sur votre machine, installez le serveur CUPS. Sous Debian, celui-ci est fourni par le paquet cups.

aptitude install cups

Visiter http://localhost:631/printers/, cliquez sur "Ajouter Imprimante", puis suivez les instructions. Pour pourrez ensuite utiliser cette interface pour vérifier la liste des jobs en attente, ou relancer l'impression qui peut parfois se bloquer. Pour effectuer des tâches d'administration, CUPS demande un login et un mot de passe. C'est généralement celui de l'administrateur de la machine que vous devrez fournir (c'est à dire login root, et le mot de passe associé).

Partager les imprimantes avec les autres serveurs CUPS

Si vous disposez de plusieurs serveurs CUPS, vous pouvez demander de partager automatiquement les imprimantes configurées sur CUPS avec d'autres serveurs d'impression CUPS du réseau local. Pour cela, rendez-vous sur l'interface web d'administration de CUPS, à l'adresse http://localhost:631/admin, cochez la case « Share printers connected to this system », et cliquez sur le bouton « Change Settings ».

Ajouter une imprimante gérée par un autre serveur CUPS

Sur les autres serveurs CUPS, si vous souhaitez qu'il proposer également d'imprimer sur les imprimantes gérées par les autres serveurs CUPS du réseau, rendez-vous sur cette même interface, cochez la case « Show printers shared by other systems », et cliquez sur le bouton « Change Settings ».

Si vous souhaite ajouter uniquement une des imprimantes gérées par un autre serveur CUPS, ajoutez une nouvelle imprimante dans l'interface web de CUPS, de type "connexion ipp", avec une URL de type ipp://nom_autre_serveur_cups/printers/nom_imprimante, avec pilote "Raw" (brut).

Permettre l'administration de CUPS par le réseau

Configuration par l'interface web

Par défaut, l'interface web de CUPS n'est acessible que depuis l'interface locale du serveur d'impression (c'est à dire via l'URL http://localhost:631/). Si vous souhaitez permettre aux autres machines connectées au réseau local d'y accéder, cochez la case « Allow remote administration » de l'interface d'admin, (sur http://localhost:631/admin), et cliquez sur le bouton « Change Settings ». Si votre serveur d'impression utiliser l'IP 192.168.0.1, vous pourrez accéder à l'interface de CUPS par l'URL http://192.168.0.1:631.

Si vous souhaitez permettre l'accès à cette interface avec un nom DNS plutôt que l'adresse IP, rendez-vous sur http://localhost:631/admin, cliquez sur le bouton « Edit Configuration File », ajoutez une ligne « ServerAlias * » en début de fichier (ou bien « ServerAlias nom_du_serveur » si vous souhaitez n'utiliser qu'un des noms DNS du serveur), puis cliquez sur le bouton « Save Changes ». Vous pourrez alors accéder à l'interface de CUPS via l'URL http://nom_du_serveur:631/.

Modification directe du fichier de configuration CUPS

Alternativement, cette manipulation peut se faire directement sur le fichier de configuration de CUPS, /etc/cups/cupsd.conf (la localisation de ce fichier peut changer selon votre distribution GNU/Linux). C'est ce fichier qui est manipulé par l'interface web de CUPS. Ajouter ou assurez-vous que les lignes suivantes y sont présentes:

ServerAlias *
Port 631
Listen /var/run/cups/cups.sock

Vous devrez ensuite redémarrer votre serveur CUPS (sous Debian, c'est /etc/init.d/cups restart).

Attention ne modifiez pas le nom des imprimantes (i.e. <Printer machin> il faut en effet changer en cascade /etc/cups/ppd/machin.ppd et d'autre choses qui font qu'en pratique il faut mieux recreer une imprimante que changer son nom-identifiant, surtout lorsqu'on utilise un serveur cups central et des serveurs cups locaux qui decouvrent automatiquement les imprimantes sur le reseau.

Detail techniques

Le diable est dans les details...

  1. la bonne maniere de configurer une imprimante est de passer par l'interface web.
  2. chaque logiciel ne presente pas la meme interface pour imprimer... mais normalement toutes les options sont quand meme visibles.

Dans une configuration:

[poste-utilisateur]---[serveur-cups1-partageant-ses-imprimantes]---[imprimante]

Le fichier (ici un pdf) est transmit tel quel au serveur cups1. Le serveur cups sur le poste utilisateur ne fait qu'une copie. Le serveur cups1 fait la transformation en langage imprimante puis l'envoie (ligne backend dans les logs).

-- extrait de log du poste utilisateur (serveur cups se connectant au serveur cups1)
** D [14/Sep/2012:16:25:37 +0200] cupsdAcceptClient: 13 from localhost (Domain)
*** D [14/Sep/2012:16:25:37 +0200] cupsdReadClient: 13 POST /printers/bob_copieur_NB HTTP/1.1...
*** I [14/Sep/2012:16:25:37 +0200] [Job 2429] File of type application/pdf queued by "user1"....
*** D [14/Sep/2012:16:25:37 +0200] [Job 2429] argv[3]="test.pdf"...
** D [14/Sep/2012:16:25:37 +0200] [Job 2429] Connecting to 192.168.1.1:631...

-- extrait de log du serveur cups1:
** D [14/Sep/2012:16:25:37 +0200] cupsdAcceptClient: 12 from 192.168.1.2:631 (IPv4)...
*** D [14/Sep/2012:16:25:41 +0200] cupsdReadClient: 12 POST /printers/bob_copieur_NB HTTP/1.1...
*** I [14/Sep/2012:16:25:41 +0200] [Job 152] File of type application/pdf queued by "user1"....
*** D [14/Sep/2012:16:25:41 +0200] [Job 152] argv[3]="test.pdf"...
** I [14/Sep/2012:16:25:41 +0200] [Job 152] Started filter /usr/lib/cups/filter/pdftopdf (PID 24796)
** I [14/Sep/2012:16:25:41 +0200] [Job 152] Started filter /usr/lib/cups/filter/cpdftocps (PID 24797)
** I [14/Sep/2012:16:25:41 +0200] [Job 152] Started backend /usr/lib/cups/backend/socket (PID 24798)...


Pour imprimer depuis windows vers un serveur cups

Attention encore en developpement

Sous linux, on envoie le document (pdf, odt, bmp, etc...) au serveur cups qui fait le "tampon" de mise en attente (spooler) puis le "filtrage" c'est a dire la transformation dans un langage approprié pour l'imprimante et enfin l'expédition du document traduit dans le langage imprimante approprié. Sous windows, on transforme le document sur le poste (filtrage) puis on l'envoi au serveur d'impression qui ne fait dans ce cas la que tampon de mise en attente (spool). Il faut dire que sous windows on tombe sur beaucoup de format proprietaires qu'on serait bien en peine de transformer sur le serveur CUPS (.doc, .ppt, .dwg etc...)

Pour imprimer depuis windows sur un serveur CUPS, il y a en gros 2 manières:

  • On filtre sur le poste windows, mais vers une imprimante générique "postscript" et on envoie le tout au serveur CUPS qui sait se débrouiller avec ça.
    • ajouter une imprimante sur le réseau
http://<computer-ip>:631/printers/<cups-printer-name>
    • choisir le pilote "Generic", et l'imprimante "MS Publisher Imagesetter".
  • On filtre sur le poste windows avec le driver spécifique de l'imprimante et on configure le serveur CUPS pour qu'il ne filtre pas une deuxième fois ces travaux. Donc même chose côté windows, sauf qu'on choisi cette fois le pilote spécifique de l'imprimante (sans doute à télécharger sur le site du constructeur).
    • etc/cups/mime.convs on décommente :
application/octet-stream application/vnd.cups-raw  0 - 
    • etc/cups/mime.types
application/octet-stream