Per prima cosa è necessario capire cosa andremo a fare. L'idea di base
è che vi sia un filtro che trasforma il file scritto in
linguaggio Postscript in un formato riconosciuto dalla stampante.
Nel nostro caso il programma che fa da filtro si chiama ghostscript.
Guardiamo insieme come possiamo utilizzarlo.
In un sistema Linux, il file che contiene la
configurazione delle stampanti è /etc/printcap.
Nonostante non abbia una interfaccia molto umana, non è impossibile
capire come modificarlo. Partiamo da un esempio per vedere come installare
una stampante Postscript virtuale. Questo è un pezzo del file
printcap del mio sistema,
a cui ho aggiunto la numerazione delle righe (non copiate i numeri!):
1 # -------------------------------------- 2 # 3 # PostScript printer; filter: ghostscript 4 # 5 ps|PS|PostScript printer: \ 6 :lp=/dev/lp0: \ 7 :sd=/usr/spool/lpd/jp350: \ 8 :lf=/usr/spool/lpd/jp350/errs: \ 9 :sh: \ 10 :sf: \ 11 :if=/usr/spool/lpd/jp350/ps-lpf:Le prime quattro righe contengono commenti. Nella quinta vi è il nome della stampante (ps) con possibilità di definire alias (PS). Nella sesta riga viene definito il device a cui la stampante è collegata (in questo caso lp0 = LPT1 nel mio sistema). È poi necessario definire una directory di spool (dove vengono registrati i file in corso di stampa) e un file dove dirigere gli errori; nel mio caso ho creato la directory /usr/spool/lpd/jp350, come si può vedere dalle linee 7 e 8. Con i comandi sh e sf si disabilitano il banner iniziale e l'avanzamento di una pagina bianca alla fine della stampa; questi comandi non sono essenziali per stampare in Postscript, servono a me per evitare di sprecare due fogli in più per ogni stampa. Per ulteriori informazioni su sh e sf si veda il paragrafo 3.1.17 del file Printing-HOWTO. Arriviamo al bello. Con il comando if di linea 12 si può definire un file (eseguibile) che faccia da filtro. Esso prende da stdin il file da stampare, lo elabora, e restituisce su stdout i dati da mandare alla stampante. Il gioco sta nello scrivere uno script adeguato.
Qui entra in scena il ghostscript. Una verifica da fare è stabilire se la propria stampante è supportata dal programma. Con il comando "gs -h" è possibile sapere quali dispositivi vengono gestiti da ghostscript. Io ho una stampante a getto di inchiostro che lavora in emulazione HP deskjet, per cui posso utilizzare il dispositivo deskjet. Anche in questo caso diamo una occhiata al (mio) file-filtro per capire come costruirlo. Come avrete già capito l'ho chiamato ps-lpf e l'ho posto nella directory di spool della stampante. Il file si presenta così:
#!/bin/bash gs -q -dNOPAUSE -sPAPERSIZE=a4 -sDEVICE=deskjet -sOutputFile=- -La prima riga è essenziale per eseguire lo script. La seconda invoca l'interprete ghostscript con i seguenti parametri:
È possibile riutilizzare questo file cambiando solo il dispositivo (DEVICE).
Dopo aver salvato il file, è necessario
settare il permesso di esecuzione del file, con il comando
chmod 755 ps-lpfed inoltre il proprietario del file deve essere root, cosa ottenibile eseguendo il comando
chown root.root ps-lpfA questo punto avete nel sistema una stampante Postscript virtuale, che si chiama ps; notate che non è la stampante di default, per cui è necessario specificare la stampante ps al momento della stampa.
lpr -Pps file.da.stampare.pse il vostro file.da.stampare.ps viene stampato in Postscript.