Page suivante Page précédente Table des matières
7. Configurer les services d'impression
La configuration minimale pour un système d'impression permet de mettre des fichiers en file d'impression puis de les imprimer. Il ne prête aucune attention au fait que votre imprimante puisse les imprimer (les comprendre même) et ne vous permettra pas d'imprimer des choses extraordinaires. Néanmoins, c'est un premier pas.
7.1 Le fichier
/etc/printcap
Le fichier
/etc/printcapdécrit toutes les imprimantes que votre système doit connaître. Il peut être modifié avec votre éditeur préféré, doit appartenir à root et avoir les droits suivants:
-rw-r--r-- 1 root system 164 Oct 25 21:23 /etc/printcapLe contenu du fichier semble assez incompréhensible à première vue. Il respecte effectivement une syntaxe particulière et malgré les apparences, assez simple lorsque l'on connaît ! Il n'y a pas toujours de manuels concernant ce fichier, et cela complique un peu les choses. Un petit conseil en passant : essayez, dans la mesure du possible de rendre votre fichier le plus lisible possible, avec des commentaires. Vous pouvez consulter les pages du manuel en ligne concernant
printcap(5)(ou empressez-vous de les récupérer si vous ne les avez pas). Plus loin sont décrits les paramètres importants.
Une entrée de
printcapdécrit une imprimante, c'est-à-dire une correspondance nom logique - imprimante physique, puis décrit la façon de transmettre les données. Par exemple, une entrée va décrire le périphérique physique à utiliser, le répertoire de spool, les traitements à effectuer sur les données avant impression, ou encore le répertoire dans lequel seront notifiées les erreurs. Vous pouvez aussi limiter la quantité de données pour un job, ou même limiter l'accès d'une imprimante à une classe d'utilisateurs. Vous trouverez dans la partie suivante la description des champs.
Il est tout à fait possible d'avoir plusieurs entrées décrivant différentes façons d'envoyer des données à une même imprimante physique. Par exemple, une imprimante physique peut supporter les formats HP LaserJet et PostScript, en fonction de la séquence de caractères envoyée au début d'un travail. Vous définirez donc deux entrées, l'une permettant de traiter le format HP, l'autre le format PostScript. Les programmes générant des données ``HP'' les enverront à l'imprimante HP, ceux générant des données PostScript les enverront à l'imprimante PostScript. Toutes les deux représentent la même imprimante physique.
Les programmes qui modifient les données avant de les envoyer à l'imprimante physique sont des filtres.
Exemple d'entrée d'un fichier
/etc/printcap:
# LOCAL djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh:Ceci définit une imprimante dont les noms sont
lp(par défaut),djetdeskjet. Les deux derniers sont des alias de la même imprimante. La file (on dit très souvent le spool, même en français...) de cette imprimante de trouve dans le répertoire/var/spool/lpd/dj(sdsignifie spool directory). Le périphérique utilisé est/dev/lp0. La page d'en-tête est supprimée (sh) et aucune limite de taille de fichier n'est fixée (mx)
Notez que la même entrée pourrait s'écrire:
lp|dj|deskjet:sd=/var/spool/lpd/dj:mx#0:lp=/dev/lp0:sh:mais c'est moins beau.
Vous pouvez consultez la page de manuel de
printcapsur
http://www.picante.com/~gtaylor/pht/man/printcap.html. Toutes les options y sont décrites.
Tous les champs exceptés les noms d'imprimantes sont entourés de deux-points et repérés par un symbole de deux lettres suivi du signe égal. Ensuite est indiquée la valeur qui peut être de type numérique, booléenne ou chaîne de caractères:
champ type signification lp string designe le peripherique d'impression sd string designe le repertoire de spool lf string designe le fichier de rapport d'erreurs if string specifie le nom du filtre d'entree rm string designe le nom d'un site d'impression distant rp string designe le nom d'une imprimante distante sh booleen indique s'il faut supprimer les en-tetes sf booleen indique s'il faut supprimer les sauts de pages de fin de travaux mx numerique indique la taille maximum d'un job (en blocs = 1Ko sous linux)
Détails sur le champ lp
Si vous spécifiez
/dev/nullcomme périphérique, tous les traitements se feront, mais tout partira à la poubelle. Ca semble ridicule, mais cela vous permet par exemple de tester une configuration. Lisez le chapitre ``Imprimantes qui ne sont pas de simples périphériques''. Si vous désignez une imprimante distante avecrpetrm,lpdoit contenir:lp=:.
Ne laissez pas ce champ vide en cas d'impression locale, le démon signalerait une erreur.
Détails sur le champ lf
Tout fichier spécifié ici doit exister, sinon le rapport d'erreurs ne se ferait pas.
Détails sur le champ if
Les filtres d'entrée sont des utilitaires transformant les données qu'il reçoivent sur leur entrée standard en un format particulier qu'il sortent sur leur sortie standard. Typiquement, la conversion texte - PostScript déjà mentionnée.
Si vous spécifiez un filtre d'entrée, le démon n'envoie pas directement les données au périphérique. Il exécute le filtre en dirigeant les donnés sur son entrée standard et en désignant le périphérique de sortie comme sortie standard.
Détails sur les champs rm et rp
Envoyer des données à une imprimante rattachée à une machine distante est très simple: il suffit de spécifier le nom de la machine avec
rmet le nom de l'imprimante avecrp. S'assurer que l'entréelpest vide. A noter que les données seront d'abord mises dans le spool local avant d'être transférées. Même si votre imprimante est distante, il faudra également un spool local.
Détails sur les champs sh et sf
Les bannières concernent éventuellement les utilisations à plusieurs personnes. Elles identifient les jobs.
La suppression de ces bannières vous permet d'économiser du papier. Par contre la gestion des sauts de page sera plus intéressante, surtout si vous utilisez des traitements de textes qui formatent toujours des pages pleines. Dans ce cas, pas besoin de saut de page supplémentaire. Vous auriez sinon une page blanche en fin de chaque travail. Si vous utilisez des listings ou autres documents, ajouter un saut de page garantit que chaque travail commancera bien en début de page.
Détail sur le champ mx
Ce champ permet de limiter la taille des données pour chaque job. Le nombre à spécifier est en blocs de
BUFSIZE(pardon, de 1 Ko) sous Linux. La valeur 0 rend la taille illimitée, permettant la soumission de travaux limitée uniquement à la taille du disque. Notez que la limite concerne la taille des données mises en spool, et non pas les données envoyées à l'imprimante physique. Si la limite est dépassée, le fichier est tronqué avec l'émission d'un message disant:lpr: <fichier>: copy file is too large.
Cela peut être intéressant pour des imprimantes physiques en mode texte, notamment si des utilisateurs ou des programmes créent accidentellement des données trop volumineuses.
Si vous manquez de mémoire de masse, pourquoi n'inventeriez-vous pas un filtre qui décompresse ce qu'il a à envoyer à l'imprimante ? Vous soumettriez alors des données compressées.
Page suivante Page précédente Table des matières