Imprimer sous Linux
Attention, cette documentation est publiée dans l'espoir d'être utile mais SANS AUCUNE GARANTIE. Si vous désirez avoir un support professionnel, adressez vous à un professionnel des logiciels libres comme Evolix par exemple ;)
Imprimer sous Linux n'est pas difficile pour une très grande majorité d'imprimantes. On peut vérifier qu'elle est compatible sur des sites comme http://www.linuxprinting.org
Branchez votre imprimante
Branchez votre imprimante (pas besoin d'éteindre le PC a priori).
- Si votre imprimante se branche sur le port parallèle, testez sans rien installer une commande ressemblant à :
# cat test.txt > /dev/lp0
Cela pourrait imprimer directement le contenu de votre fichier test.txt
L'imprimante n'avalera pas forcément le papier tout seul, et il faudra peut-être appuyer sur un bouton de l'imprimante pour que cela marche (c'est ce qui se passe sur certaines impirmantes).
Il est aussi possible que cela ne marche pas, mais poursuivez tout de même sans crainte.
- Si votre imprimante se branche sur un port USB, vérifiez que l'usb est bien géré par le noyau (sinon voyez une recompilation du noyau) (c'est sûrement le cas si votre installation est récente).
Testez maintenant une commande du genre :
#cat test.txt > /dev/usb/lp0
Installer CUPS
J'ai testé plusieurs solutions, et AMHA je pense que la plus simple mais également la meilleure est d'installer CUPS.
Avec Debian GNU/Linux:
# apt-get install lpr cupsys cupsys-driver-gimpprint
Ceci installera aussi les paquets: cupsys-pstoraster libslp1 libcupsys2
Éventuellement installez également le paquet de pilotes cupsomatic-ppd mais normalement les pilotes gimpprint suffisent (à vous de tester mais chez moi les pilotes gimpprint apparaissent comme étant meilleurs pour mon imprimante).
Deux daemons sont lancés: lpd et cupsd lancés respectivement par/etc/init.d/lpd et /etc/init.d/cupsys
Notez que la commande cat /tmp/test.txt > /dev/lp0 doit marcher quelque soit l'état de ces daemons.
Il faut maintenant configurer cups avec le fichier /etc/cups/cupsd.conf que voici: cupsd.conf
Il faut notamment adapter les lignes ServerName, ServerAdmin mais surtout autoriser le réseau local à s'y connecter par les lignes suivantes :
<Location /> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow from 192.168.0.* </Location>Et il faut autoriser les postes autorisés à se connecter pour administrer cups (ici 192.168.1.54):
<Location /admin> Order Deny,Allow Deny From All Allow From 127.0.0.1 Allow from 192.168.1.54 </Location>
Enfin vous choisirez sûrement /etc/printcap comme fichier de configuration des imprimantes donc:
Printcap /etc/printcap
On redémarre cups par un
/etc/init.d/cupsys restartEnsuite, lancez en console :
# cups-calibrate
ou bien ouvrez http://serveur:631 dans un navigateur.
Vous devriez obtenir quelque chose comme cela :
Dans l'onglet Printers, ajoutez une imprimante avec (Add Printer).
Vous devrez entrer le login root et son mot de passe.
Nommez votre imprimante du nom que vous voulez dans (Name), la location et la description sont facultatives.
On choisit si l'imprimante est sur le port parallèle, USB, ou autre.
On doit maintenant choisir la marque de son imprimante: Raw, CANON, DYMO, EPSON, HP, LEXMARK, OKIDATA sont disponibles.
Puis on choisit le pilote pour votre modèle d'imprimante (essayer le pilote gimp-print si possible).
Et voilà, un message vous indique que votre imprimante a été ajouter avec succès.
Vous pouvez cliquer sur (configure printer) pour choisir des options diverses (format du papier, résolution, etc.)
Vous devriez obtenir un message Test page sent; job ID is nom_imprimante-1.
Normalement la configuration a ajouté des lignes /etc/cups/printers.conf
Voici à quoi doit ressembler votre fichier printers.conf :
<DefaultPrinter nom_imprimante> Info Ce que vous avez mis comme infos Location Ce que vous avez mis comme location DeviceURI epson:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 </Printer>
Vous pouvez maintenant tester l'impression en local par :
#lpr -P nom_imprimante /tmp/test.txt
Notez que si vous ne voulez pas de page de garde, l'option -h est disponible.
Si tout fonctionne bien jusqu'ici, vous avez fait le plus difficile.
En cas de problème, vérifiez vos fichiers de configuration, pensez à regarder si des démons ne tournent pas :
# ps aux | grep lp
Et surtout pensez à vérifier vos niveaux d'encre (pour les Epson voir en bas de cette page)
Imprimer d'un poste (Linux) sur le réseau
On remarque donc que l'installation de cups ouvre deux ports sur le serveur :
# nmap serveur 515/tcp open printer 631/tcp open ipp
Sur les clients du serveur d'impression, il faut faire :
# apt-get install cupsys-client
Il faut aller modifier le fichier etc/cups/clients.conf et mettre une ligne spécifiant votre serveur d'impression :
ServerName nom_serveur_impression.nom_domaine
Ensuite, tester la commande lpstat :
$ lpstat -p -d printer nom_imprimante is idle. enabled since Jan 01 00:00 system default destination: nom_imprimante
Vous devez voir votre imprimante apparaitre...
Maintenant si vous utilisez KDE, vous pouvez aller dans le centre de configuration et ajouter et/ou configurer votre nouvelle imprimante. Vous pouvez aussi la définir par défaut ce qui vous permettra d'utiliser directement la commande lp sans préciser le nom de l'imprimante.
En console, essayez :
#l pr -h -Pnom_imprimante test.txt # lp -dnom_imprimante test.txt
Si l'imprimante est spécifiée pour être celle utilisée par défaut, vous pouvez peut-être omettre de mettre le nom de l'imprimante.
Il semble (à re-tester car cela est inexact):
lp utilise /etc/printcap et lpr utilise la variable PRINTER
Le fichier /etc/printcap contiendra donc cette ligne:
imprim:
et l'on rajoutera par exemple dans /etc/profile:
PRINTER='imprim'
export PRINTER
Ainsi, on pourra imprimer grâce aux commandes lp test.txt ou lpr test.txt
Et si j'ai (la bêtise d'avoir encore) des postes sous Windows ?
Il faut partager votre imprimante grâce à Samba, voir HowTo samba
Pour résumer, il faut installer Samba :
# apt-get install samba
Utiliser l'interface SWAT ou editer /etc/samba/smb.conf en ajoutant notamment :
[global] printing = cups [imprim] comment = All printers path = /tmp read only = No create mask = 0700 guest ok = Yes printable = Yes printer name = nom_imprimante oplocks = No
Ceci partage l'imprimante mais il faudra tout de même installer un pilote pour Windows.
Une partie de samba permet cela (TODO).
Utilitaires pour l'imprimante
J'ai été un peu embêté au début car je voulais effectuer des tâches de nettoyage, alignement des têtes d'impression, vérification du niveau d'encre et autres opérations diverses. Une solution temporaire était d'accéder à l'imprimante depuis une machine Windows (en partageant l'imprimante grâce à samba) mais j'ai trouvé un utilitaire sympatique pour mon Epson Stylus Color 680, il s'agit du paquet escputil disponible sous Debian GNU/Linux.
On peut l'utiliser ainsi avec l'option --raw-device /dev/lp0 :
-d : envoie des informations à l'imprimante et tente de l'identifier. -i : donne les niveaux d'encres des cartouches -c : nettoie les têtes d'impression -M : donne la liste des modèles dispos -m 680 -a : fait un test en plusieurs étapes pour un SC680 \ afin d'aligner les têtes d'impression
Il peut être nécessaire d'arrêter cups pour pouvoir faire certains de ces tests...
Note: en cas d'erreur Cannot read from /dev/lp0: Invalid argument, il faut activer l'option CONFIG_PARPORT_1284 dans le noyau.