Page suivante Page précédente Table des matières

9. Les impressions

Il existe plusieurs systèmes de gestion des imprimantes : LPR (BSD), System V, CUPS, LPRnG, etc. On présente ici le système traditionnel LPR de BSD.

9.1 Le système d'impression LPR (BSD)

Le système d'impression fonctionne de la façon suivante (en simplifiant)

Ce système est décrit par le fichier /etc/printcap.

9.2 Déclarer une imprimante locale

Voici un extrait du fichier /etc/printcap, concernant une imprimante nommée lp

lp est le nom conventionnel de l'imprimante par défaut
reliée au port parallèle /dev/lp0.

lp|Imprimante sur port parallèle:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/lp:\
        :lf=/var/log/lp-errs:\
        :mx=0:\
        :sh:

Après le nom de l'imprimante et sa description, on trouve différents champs. Ici :

9.3 Le fonctionnement : lpd et lpc

Pour imprimer l'utilisateur emploie la commande lpr, ou a2ps, ou enscript, etc.

Le système d'impression est lancé par le démon lpd qui gère les files d'attentes, et lance les traitements quand les périphériques sont disponibles.

La commande lpc permet de contrôler le fonctionnement du système d'impression :

9.4 Filtres d'impression

De nos jours la plupart des logiciels utilisent une version de PostScript

Marque déposée d'Adobe
ou une autre comme langage pour les sorties sur imprimantes.

Les imprimantes courantes (et bon marché) ne reconnaissent pas ce langage, mais seulement des codes de bas niveau comme PCL (HP), ESC (epson) etc.

On utilise donc des programmes de conversion, appelés filtres d'impressions pour traduire les fichiers PostScript en codes spécifiques de l'imprimante. En intégrant ceci dans le système d'impression, on transformera donc n'importe quelle imprimante (ou presque) en imprimante PostScript virtuelle.

Ce n'est pas très compliqué à faire : il suffit d'ajouter un champ if qui précise l'emplacement du filtre. Exemple :

bureau302ps|Imprimante PostScriptifiée Bureau302:\
        :lp=/dev/lp0:\
        :sd=/var/spool/lpd/bureau302ps:\
        :if=/usr/local/bin/filtre-postscript:\
        :lf=/var/log/lp-errs:\
        :sh:
et bien sûr il faut réaliser (ou se procurer) le programme de filtrage.

Exemple : un filtre simpliste pour LaserJet 4

#!/bin/bash

gs -sDEVICE=$MODE -r300x300 \     
       -q -dNOPAUSE -dBATCH -dSAFER \ 
       -sOutputFile=- 

En réalité, on préfère plutôt faire des filtres magiques qui commencent par détecter le type du document reçu (texte ordinaire, PostScript, DVI, HTML, image, etc.) et lancent un programme de conversion/formattage adapté à la situation.

9.5 Utiliser une imprimante distante

Pour imprimer sur une imprimante qui est reliée à une autre machine, on indique deux clauses

bureau302|Imprimante distante:\
        :rm=pc302a:\
        :rp=bureau302ps:\
        :sd=/var/spool/lpd/bureau302:

Pour que ça marche, il faut que la machine qui possède l'imprimante autorise les impressions venant de telle autre machine. Il suffit de donner les noms dans /etc/lpd.conf.


Page suivante Page précédente Table des matières