Ghostscript permet d'afficher et d'imprimer des fichiers PostScript entre autre. Pour l'appeller, il faut taper gs
, puis entrer help ou une des commandes possibles dans le mode interactif :
Aladdin Ghostscript 4.03 (1996-9-23) Copyright (C) 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved. This software comes with NO WARRANTY: see the file PUBLIC for details. GS>
Pour avoir la liste des périphériques que Ghostscript reconnaît, taper :
devicenames ==
La liste s'affiche alors :
[/tiffg4 /pnmraw /oce9050 /la50 /ap3250 /ljet3d /pjxl /miff24 /png16m /mgrgray4 /tiffg3 /pgnmraw /m8510 /lips3 /bjc600 /ljet2p /pj /t4693d8 /png16 /mgrmono /faxg4 /pgmraw /imagen /bjc800 /bj200 /hpdj /dnj650c /cdj550 /pngmono /bitrgb /faxg3 /pbmraw /cp50 /t4693d2 /lp2563 /iwlo /djet500 /cgm24 /pcx256 /psmono /dfaxhigh /xes /lj250 /cdjmono /pdfwrite /lj4dith /cdj850 /cgmmono /pcxgray /tifflzw /pkm /r4081 /la75plus /cdeskjet /st800 /eps9high /appledmp /bmp256 /mgr8 /tiff12nc /ppm /oki182 /la70 /epson /ljet4 /x11cmyk /x11 /bmpmono /mgrgray8 /tiffg32d /pnm /necp6 /declj250 /tek4696 /ljet3 /pjetxl /png256 /mgrgray2 /tiffcrle /pgnm /jetp3852 /nullpage /lbp8 /laserjet /paintjet /t4693d4 /pnggray /bitcmyk /faxg32d /pgm /ibmpro /iwlq /bj10e /djet500c /cif /pcx24b /bit /dfaxlow /pbm /ccr /cdj500 /ljetplus /iwhi /deskjet /cgm8 /pcx16 /tiffpack /pkmraw /sj48 /ln03 /cdjcolor /epsonc /x11mono /bmp16m /pcxmono /tiff24nc /ppmraw /okiibm /la75 /stcolor /eps9mid /pjxl300 /x11alpha /bmp16 /mgr4]
et pour quitter :
GS>quit
Pour imprimer en utilisant le péripherique epson, par exemple, appeller Ghostscript comme suit :
gs -sDEVICE=epson
ou initialiser la variable d'environnement $GS_DEVICE :
export GS_DEVICE=epson
Plusieurs filtres peuvent être utilisés pour imprimer (nenscript, APSfilters...). Voici un exemple de filtrage (pour HP-500, 510, 520,...).
#!/bin/sh # Script d'impression pour imprimante HP-500 Noir et Blanc # # Eric.Dumas@freenix.org # # Version 2.0 # # 5/01/95 (ED) : Ajout du format dvi ; # 27/10/95 (ED) : Conversion des fichiers textes en fichier PostScript ; # 01/11/95 (ED) : Un peu de ménage ; # 12/08/96 (ED) : modification pour gs # 04/12/96 (ED) : quelques corrections et ajouts. TmpDir=/tmp TmpFile=$TmpDir/deskjet.$$ # Utilisateur à prevenir en cas d'erreur NOTIFY=lp-owner # Programmes CAT=/bin/cat DVIPS=/usr/TeX/bin/dvips PGS=/usr/bin/gs AIIPS=/usr/local/bin/a2ps # Chemins d'accès pour GS GS_LIB=/usr/lib/ghostscript:/usr/lib/ghostscript/psfonts:\ /usr/lib/ghostscript/Type1:/usr/lib/ghostscript/fonts # C'est parti $CAT - > $TmpFile echo -ne '\033E' set -- `file $TmpFile` shift FileType=$* # Transformation du PostScript en format Deskjet500 # résolution à 300x300 - format a4 GS="$PGS -I$GS_LIB -q -sDEVICE=djet500 -r300x300 -sPAPERSIZE=a4 -dNOPAUSE\ -sOutputFile=- - /usr/lib/ghostscript/quit.ps || echo -ne '\033&10H'" case $FileType in *DVI*) # Fichier DVI $DVIPS -t a4 $TmpFile \ -f | $GS ;; *PostScript*) # Impression de fichiers Postscript $CAT $TmpFile | $GS ;; *text*|*script*) $CAT $TmpFile | $AIIPS -nP -r -8 | $GS ;; *data*) echo -ne '\033&;k0G' # C'est un et commercial sans ; ! /bin/cat $TmpFile ;; *) echo "Deskjet: Unknow filetype $FileType" >> /dev/console echo "Deskjet: $TmpFile Unknow filetype $FileType" | mail $NOTIFY ;; *DVI*) # Fichier DVI $DVIPS -t a4 $TmpFile \ -f | $GS ;; *PostScript*) # Impression de fichiers Postscript $CAT $TmpFile | $GS ;; *text*|*script*) $CAT $TmpFile | $AIIPS -nP -r -8 | $GS ;; *data*) echo -ne '\033&;k0G' # C'est un et commercial sans ; ! /bin/cat $TmpFile ;; *) echo "Deskjet: Unknow filetype $FileType" >> /dev/console echo "Deskjet: $TmpFile Unknow filetype $FileType" | mail $NOTIFY ;; esac /bin/rm -f $TmpFile echo -ne '\033E'
Le filtre joint au paquet de gestion d'impression se nomme /usr/sbin/lpf
. Il est peu pratique, mais d'autres filtres sont sûrement disponibles sur le système. Pour en avoir la liste, taper :
man -k filter
Pour spécifier un filtre, il faut modifier la valeur de la variable if dans le fichier de configuration /etc/printcap
, puis relancer lpd
:
lpc restart all
Il existe deux filtres fréquemment utilisés car très puissants :
/usr/bin
. Il imprime sur l'imprimante spécifiée par, dans l'ordre de préférence :
lpr
si aucune des deux précédentes variables d'environnement n'est initialisée.
L'option -Z empêche la conversion si le fichier ne commence pas par ``%!
'' (la plupart des fichiers PostScript commencent par ``%!
''). Bien que ce filtre ne soit pas fiable à ,
nenscript
devrait convenir dans la plupart des cas. Les options à passer comme -Z par exemple pouront être spécifiées par la variable d'environnement $NENSCRIPT. Voici un exemple d'utilisation :
nenscript -B -L66 -N -Pepson memo.txt
L'option -B supprime l'en-tête, -N numérote les lignes du fichier, -L66 fixe le nombre de lignes par page à 66, et -Pepson imprime sur l'imprimante ``epson''. Si aucune imprimante n'est spécifiée, l'impression se fera sur l'imprimante standard : il n'y a pas besoin de mettre en place de tube, sauf si l'option -p est spécifiée.
La variable d'environnement $NENSCRIPT peut contenir les options standard :
export NENSCRIPT=''-B -L66 -Pepson''
Pour convertir un fichier texte en PostScript, il faut fournir l'option -p, qui représente la sortie standard :
nenscript -2 -fCourier6 -TA4 -pmemo.ps memo.txt
L'option -2 imprimera sur deux colonnes, -f précise la police (ici Courier 6 pt, 10 pt par défaut), -TA4 représente le format de la page. Le document ASCII memo.txt
sera donc convertit en fichier PostScript memo.ps
.
Pour imprimer un document sans enrichissements, utiliser la commande col
:
man nenscript | col -b | nenscript
La page de manuel se voit supprimer ses caractères de mise en valeur, puis le filtre nenscript
imprime le tout.
/usr/lib/apsfilter/
:
gunzip apsfilter*gz tar -xvf apsfilter*gz -C /usr/lib
Il faut ensuite spécifier ou corriger dans les fichiers Global.sh
ou apsfilter
les variables et les chemins suivants, s'il ne sont pas correctes :
LP_OWNER=root LP_GROUP=lp SPOOL=/var/spool/lpd MAGIC=etc/magic
Bien lire la documentation pour plus d'information. Ne pas oublier de relancer le démon d'impression :
lpc restart all
Dans tous les cas, un filtre général comme présenté plus haut pourra invoquer ou non suivant les cas différents filtres comme gs
ou nenscript
.