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 présente une fenêtre telle que:
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 |
#!/bin/bash
cat | gs -sDEVICE=ljet4 -sOutputFile=- -sPAPERSIZE=a4 -r600x600 -q - exit 0 |
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
|