next up previous contents Next: Contrôle d'accès. Up: Services du système et Previous: Le fichier printcap en   Table des matières  


22.6 PostScript et filtre d'impression.

Sur UNIX, le format de référence pour toutes les impressions est le PostScript. Les fichiers PostScript .ps sont de type graphique et représentent un texte, des lignes quelconques et/ou des images de manière à ce que leur taille soit ajustable. En réalité, PostScript est un langage de programmation destiné à tracer des éléments sur une page; donc, les filchiers .ps sont réellement des programmes Postscript. La dernière ligne de tout fichier Postscript est toujours une showpage, ce qui indique que les opérations de traçage sont terminées et que la page peut être affichée/imprimée. En conséquence, il est aisé de visualiser le nombre de pages se trouvant dans un fichier PostScript en effectuant un grep sur la chaîne de caractères showpage.

La méthode pour imprimer sur UNIX consiste toujours à convertir le document à imprimer en un fichier PostScript. Les fichers .ps peuvent être visualiser grâce à un émulateur PostScript tel que le programme gv (GhostView). Le programme appelé gs (GhostScript) est l'utilitaire permettant de convertir un fichier Postscript dans un format manipulable par l'imprimante. PostScript est un langage qui peut être facilement ``passé'' à tout imprimante. Il existe des imprimantes ``PostScript'' qui sont des périphériques interprétant directement les fichiers PostScript. Cependant, elles sont relativement coûteuses et la plupart des imprimantes comprennent seulement le dialecte PCL (printer control language) et quelques autres formats.

En résumé, les centaines de formats différents de graphiques et de textes possèdent un utilitaire qui leur permet d'être convertis en Postscript. Après cette opération, gs convertit le fichier résultant afin qu'il soit imprimable par les centaines de modèles d'imprimantes. [Au moment où ces lignes sont écrites, il faut signaler qu'il existe de nombreux types d'imprimantes qui ne gèrent pas gs. Ceci est dû au fait que les fabricants refusent d'émettre les spécifications de leurs protocoles de communication propriétaires]. Le filtre d'impression est le cheval de labeur réalisant l'ensemble de ces opérations.

En général, les applications émettent de manière convenable des fichiers PostScript lors des impressions. Par exemple, le menu de sélection de netscape Image img25 présente une fenêtre telle que:

Image img26

qui envoye du PostScript vers l'entrée standard (stdin) de lpr. Toutes les applications n'ayant pas leurs propres pilotes d'impression procèdent de cette manière. Ceci signifie qu'en général, nous pouvons compter sur le fait que le filtre d'impression reçoit du PostScript. En revanche, gs peut convertir du PostScript pour toutes les imprimantes, de telle sorte qu'il ne reste plus qu'à déterminer les options en ligne de commande.

Si vous avez choisi ``Print To: File'', vous pouvez visualiser le résultat avec le programme gv qui affiche une prévisualisation (print preview) à l'écran. Sur UNIX, la plupart des applications des bureaux n'ont pas leurs propres utilitaires de prévisualisation car les imprimantes PostScript sont elle-mêmes émulées par gv.

Remarquez que les programmes de filtre ne devraient pas être utilisés avec des filtres distants. Les files d'impression distantes peuvent envoyer leurs fichiers PostScript ``tels quels'' avec: if=/bin/cat: (comme dans l'exemple du fichier printcap vu ci-dessus). De cette manière, la machine connectée au périphérique doit être la seule configurée spécialement à cette fin.

Le programme de filtre que nous allons utiliser pour la file d'impression est un script de shell /var/spool/lpd/lp/filter. Créez le filtre de cette façon:

touch /var/spool/lpd/lp/filter 
chmod a+x /var/spool/lpd/lp/filter 


et modifiez le de manière à ce qu'il contienne le code suivant:

#!/bin/bash 
cat | gs -sDEVICE=ljet4 -sOutputFile=- -sPAPERSIZE=a4 -r600x600 -q - 
exit 0 


L'option -sDEVICE décrit l'imprimante. Dans cet exemple, il s'agit d'une Hewlett Packard LaserJet 1100. Beaucoup d'imprimantes ont des formats similaires et compatibles. Donc, il y a beaucoup moins de types de DEVICE que de marques d'imprimantes. Pour obtenir une liste complète des périphériques d'impression supportés, utilisez la commande gs -h et consultez également un des fichiers suivants (cela dépendra de votre distribution):

Le terme -sOutputFile=- indique d'écrire dans stdout (comme cela est requis par le filtre). L'option -sPAPERSIZE peut être fixée à une des valeurs suivantes: 11x17, a3, a4, b3, b4, b5, halfletter, ledger, legal, letter, note. D'autres valeurs sont indiquées dans la page de man. Vous pouvez également utiliser -g<largeur>x<hauteur> pour attribuer la taille de page exacte en pixels. Par exemple, -r600x600 fixe la résolution à 600 dpi (dots per inch ou points par pouce carré). L'option -q indique d'utiliser le mode silencieux, ce qui supprime les messages d'information qui autrement, corromperaient la sortie en PostScript. Le signe - signifie qu'il faut lire depuis stdin et non depuis le fichier.

La configuration de notre imprimante est à présent complète. Il faut maintenant lancer lpd et tester l'impression. Vous pouvez réaliser cette opération en ligne de commandes grâce au paquet enscript. enscript est un programme de conversion des fichiers-textes en pages PostScript joliment formatées. La page de man d'enscript décrit de très nombreuses d'options. Cependant, vous pouvez vous contenter d'essayer:

echo hello | enscript -p - | lpr 


next up previous contents Next: Contrôle d'accès. Up: Services du système et Previous: Le fichier printcap en   Table des matières  
1-01-2006