Gcolpart.com by reg

Imprimer sous Linux


News
Merci de me faire part de vos critiques, suggestions, questions ou remerciements sur howto@gcolpart.com

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 restart
Ensuite, 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.) Tentez ensuite d'imprimer la page test de CUPS par (Print Test Page)

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.



powered by Apache     powered by Debian     Valid XHTML 1.1     Valid CSS     ecrit avec Vim    
Copyright (c) 2002-2014 Gregory Colpart. Infogerance serveur