Le royaume de Eric Buist >> Informatique >> Quelques-unes de mes recherches personnelles >> Trucs et astuces >> Astuces spécifiques au DIRO
Me contacter Plan du site
<< Protéger son territoire virtuel Imprimer de quoi Établir le profil d'une machine Linux >>

Imprimer de quoi

Non, je ne répéterai pas ici ce que l'on trouve sur le site du support technique, c'est bien fait et pas besoin d'ajouter, à part des petites subtilités, juste pour compliquer les choses un peu...

Sur l'imprimante matricielle du 3185

Comme vous le savez probablement, cette imprimante n'accepte que des fichiers textes. Il faudra donc s'arranger pour obtenir un tel fichier, ce qui n'est pas toujours de tout repos. Si vous possédez un tel fichier, pas de problèmes, vous pourrez l'imprimer, sinon...

La commande de base est bien entendu lpr. On peut taper lpr fichier où rediriger la sortie d'une commande sur l'entrée de lpr.

Impression d'une page de manuel Linux

Il est possible d'imprimer, pour consultation future, une page de manuel Linux. Par exemple, si vous souhaitez de la documentation sur lpr, vous taperez man lpr. Mais si vous la voulez sur papier, que faire? On pourrait taper man lpr | lpr, mais je ne suis pas certain que cela fonctionnerait aussi bien que l'on voudrait. La page de manuel contient en effet des caractères indiquant au programme de lecture de mettre certaines portions en gras, de souligner ... Une imprimante qui n'imprime que le texte risque de ne pas pouvoir comprendre ce charabia et va tout stupidement l'imprimer, rendant la page difficile à lire. Il va donc falloir appliquer un filtre qui va nous débarrasser de cette crasse. Il se nomme ul. La commande d'impression deviendra ainsi man lpr | ul | lpr. Si on veut s'assurer que la sortie ira sur la bonne imprimante, on remplacera alors lpr par lpr -Pq3185, qui est l'imprimante matricielle. Mais, faute d'absence de tests, je ne suis pas encore certain que cela fonctionnerait. Il vaudrait mieux faire passer la sortie dans un second filtre, afin de la débarrasser des caractères non ASCII! On écrira donc man lpr | ul | iso2ptx | lpr -Pq3185! Cela commence à être complexe et un script est de plus en plus envisageable...

Imprimer une page Web

Encore là, il faudra ruser. La commande Print de Netscape est bien prête à nous imprimer notre page Web mais en PostScript, ce qui va faire cracher beaucoup de blabla à la pauvre imprimante matricielle qui ne peut interpréter le PostScript. En fait, elle le pourrait si on lui ajoutait un filtre adéquat, ie un logiciel qui lui traduirait le PostScript en son langage. S'il n'y en a pas, c'esst donc bien que les administrateurs du réseau, pour d'obscures raisons, n'ont pas voulu en mettre.

Il va donc falloir ruser pour trouver un moyen de n'extraire que le texte de la page Web à imprimer. Or, il existe un navigateur texte appelé lynx, alors pourquoi ne pas nous en servir? Si vous tapiez lynx --dump url, vous verriez apparaître le contenu de la page Web. Il faut donc envoyer cela à l'imprimante. J'ai découvert cette technique à partir d'instructions pour imprimer le devoir 1 de IFT1213 et ils utilisaient un filtre nommé iso2ptx. Ce filtre permet d'éliminer les accents du document puisqu'en plus, cette imprimante ne prend pas les accents! Pour imprimer la page sur l'imprimante matricielle, on écrira lynx --dump url | iso2ptx | lpr -Pq3185. url constitue simplement l'adresse du site, par exemple http://www.iro.umontreal.ca/~dift1213.

Imprimer un fichier PostScript

Je ne connais pas de moyen de parvenir à un tel résultat. Il faudrait un programme permettant de convertir le fichier PostScript en texte, ce qui ne sera pas mince affaire à trouver!

Imprimer sur l'imprimante laser du 3189

Le site du support technique indique déjà bien la façon de procéder pour cela. Le plus difficile sera probablement d'ajouter du crédit à votre compte. Cela implique de localiser le Caissier Automatique le plus proche, celui du Pavillon Principal dans notre cas, de réussir à le faire fonctionner pour mettre de l'argent sur la carte étudiant. Ensuite, le reste est assez simple. Ici, la commande de base deviendra lpr -Php3189 fichier. Vous pouvez lui passer, cette fois, des fichiers PostScript.

Impression d'une page Web

Netscape possède là la fonction qu'il nous faut, mais l'imprimante par défaut est malheureusement celle du 3185! Il ne faut pas lui envoyer un fichier PostScript, quand même. Il va donc falloir, dans la boîte Print de Netscape, changer la commande d'impression. Au lieu de lpr, on mettra lpr -Php3189. Avec un peu de chance, il devrait sortir des feuilles de l'imprimante.

Prendre le contrôle sur l'impression d'un fichier texte

La première tentative d'impression s'est portée vers un fichier texte contenant les exercices du cours MAT1400. Outre écrire petit, l'imprimante a produit des en-têtes peu souhaitables dans le cadre d'un devoir. Finalement, le tout était formaté en paysage, ce qui n'est pas plaisant à lire lorsque c'est dans un cartable. Sur l'imprimante matricielle, on cherche à ramener en ASCII. Sur la hp, il faut faire le contraire: ramener en PostScript! Mais comment Diable allons-nous réussir à transformer un petit fichier texte anodin en fichier PostScript? La réponse: OpenOffice.

Il faudra l'installer avec inclure openoffice suivie de /usr/local/OpenOffice.org1.0/setup. tout est sur le site du support technique, pas d'inquiétudes à y avoir pour l'installation. Lorsque c'est fait, ouvrez OpenWriter et importez-y le fichier texte. Vous pouvez maintenant lui faire subir toutes les manucures que vous voulez afin de le rendre esthétiquement correct, puis vous l'imprimez avec la commande Imprimer, sur la hp3189. Un fichier PostScript sera créé en interne puis envoyé à l'imprimante.

Impression d'une man page

Ici, je cherche encore. Les pages de manuel sont rédigées en format troff, un autre interpréteur de texte que je n'ai pas le goût ni le temps d'apprendre. La commande troff doit pouvoir "compiler" le fichier et le transmettre sur une sortie. Toutefois, elle supprime toute la mise en forme de la page de manuel et enlève des parties de texte, ce qui la rend pratiquement illisible. On se retrouve avec un amas de texte, les paragraphes n'étant même plus délimités. Il faudrait probablement que je fasse cracher beaucoup de feuilles à l'imprimante laser avant de lui faire sortir une page correcte, ce qui va me coûter cher pour quelques lignes sur cette page!

Le secret de la sortie texte

Pourquoi le nom d'usager sur les impressions lorsqu'on passe directement un fichier texte à lpr? Pourquoi donc est-ce que la police est si petite et pourquoi donc est-ce en paysage? Y a-t-il donc un moyen plus commode que de faire sortir un fichier PostScript par OpenOffice pour prendre le contrôle de tous ces facteurs? Et la réponse est oui!

Y a-t-il moyen de modifier ces paramètres, de lui faire imprimer plus gros, voire même désactiver le recto verso? Peut-on réussir à imprimer une page de manuel et espérer qu'elle sorte correctement? La réponse est encore OUI! Mais quel est le secret de tout cela? A2PS!

a2ps signifie ASCII to PostScript, c'est un véritable programme de conversion d'un texte ASCII vers un fichier PostScript. Lorsque l'on envoie un fichier vers l'imprimante laser, si c'est un fichier texte, il passe dans a2ps et devient un PostScript qui, lui, est imprimé. Toutefois, a2ps est appelé avec les paramètres par défaut et pas moyen d'influer... à moins d'appeler a2ps directement! Rien ne nous empêche de le faire et cela va nous donner un contrôle pas mal plus grand sur ce que l'on peut faire.

On appelle a2ps un peu comme on le fait avec lpr. Toutefois, il y a pas mal plus d'options que lpr. Taper man a2ps donnera la cauchemardesque liste de toutes ces options. Voici quelques lignes de commande qui peuvent s'avérer d'une grande utilité.

a2ps -f12 -Php3389 --columns=1 -R --borders=no --left-footer="" --right-footer="" <fichiers> permet d'imprimer une liste de fichiers. Vous pouvez passer plus d'un fichiers séparés par des espaces et le programme va faire un fichier PostScript unique. L'option -f12 met une police 12 points plutôt que 6 points, -Php3389 effectue le choix de l'imprimante. On pourrait la remplacer par -Pdisplay afin d'obtenir une fenêtre GhostView qui affichera l'aperçu avant l'impression du document. Ce qui permet d'effectuer des tests et éviter de gaspiller trop de papier. Au lieu d'une imprimante, il est également possible d'écrire -o <fichier.ps> afin d'obtenir un fichier PostScript. Grâce à ce fichier, il est possible de transporter le résultat sur une machine Windows qui n'est pas munie de a2ps et de l'imprimer chez soi si on le veut. L'option --columns=1 demande une sortie sur une colonne tandis que -R provoque le passage en mode portrait plutôt que le mode paysage par défaut. --left-footer="" et --right-footer="" enlèvent le contenu des pieds de page tandis que --borders=no supprime les bordures autour des pages.

À noter que le programme effectue la mise en surbrillance des mots-clés dans plusieurs langages de programmation, dont le C/C++ et le Java. Il permet aussi l'impression d'une page de manuel, bien entendu. Il suffit de rediriger la sortie de la commande man vers l'entrée de a2ps. La commande man <manpage> | a2ps <options> effectuera ce travail et produira un résultat élégant.

Cette commande solutionne ainsi tout problème de sortie de fichiers texte, il existe des centaines d'autres options, dont par exemple celle pour désactiver le recto-verso: -DDuplex:false.

Sur les imprimantes HP du DIRO, et peut-être sur d'autres imprimantes HP ou non imprimant recto-verso, il existe une façon de désactiver ce mode d'impression sans devoir modifier le fichier PostScript. Ce qui est bien commode pour paramétrer des fichiers générés avec d'autres programmes que a2ps. Le paramètre -Z simplex, ajouté à la commande lpr permettra la désactivation du mode recto-verso.

État de l'impression

Si on ne veut pas attendre devant l'imprimante, il existe un moyen simple de savoir si et quand les feuilles sont sorties et prêtes. Il faut juste entrer lpq sur la ligne de commande. Cela va nous donner les jobs que l'imprimante est en train d'accomplir. On trouvera entre autres le nom d'usager qui a lancé l'impression, ce qui permet de facilement la reconnaître. Pour l'imprimante laser, on tapera lpq -Php3189. Sur cette dernière imprimante, votre crédit ne sera débité que si l'impression s'est effectuée. La machine sort les pages assez rapidement, lorsqu'elle est prête, pour que je ne sois pas en mesure de tester ce qui se passerait si on enlevait un travail d'impression au moment où il est en cours d'impression.

Modification de l'imprimante par défaut

Que se passe-t-il si on tape lpr, lpq ou lprm sans paramètres spécifiant l'imprimante à utiliser. Eh bien, le programme se tournera vers l'imprimante par défaut fixée par l'administrateur système. À l'heure où j'écris, je crois que c'est la hp3352 ou quelque chose du genre. Il est possible de modifier cela en changeant la variable d'environnement PRINTER. Par exemple, la commande setenv PRINTER=hp3189, insérée dans le fichier .cshrc ou tapée sur la ligne de commande, définiera l'imprimante laser du 3189 par défaut. Après ce petit changement, il sera possible de taper lpr seulement plutôt que lpr -Php3189.