[>a298.html>] [<a296.html<] [^a2.html^]
Come già accennato in precedenza, a suo tempo il sistema PostScript ha segnato una rivoluzione nel modo di stampare definendo uno standard generale. Tuttavia, a causa del prezzo, le stampanti PostScript si sono introdotte particolarmente nel settore tipografico e raramente nei piccoli uffici o in casa.
PostScript è una sorta di linguaggio di programmazione per la stampa, o in altri termini, si può definire anche come linguaggio di stampa. I dati inviati a una stampante PostScript sono in forma di file di testo contenente un programma di stampa.(1)
<!> Il formato PostScript è proprietario. Nonostante questo fatto, sulla base di tale formato sono stati sviluppati diversi applicativi nell'ambito del software libero. |
Un file PostScript è ciò che viene inviato a una stampante PostScript per ottenere un documento finale. Questo file contiene tutte le informazioni per definire l'aspetto finale del documento, senza conoscere le caratteristiche particolari della stampante, la quale da sola deve arrangiarsi a interpretarlo. Il file PostScript è un file di testo normale, come se fosse un sorgente di un linguaggio di programmazione, con la differenza che le istruzioni non sono così intelligibili.
%!PS-Adobe-2.0 ...
La prima parte di questo file inizia generalmente con la dichiarazione del tipo di file (%!PS-Adobe-versione), quindi il testo prosegue con la definizione di una serie di caratteristiche che riguardano l'intero documento.
Successivamente inizia la definizione dettagliata di altre caratteristiche, principalmente le fonti tipografiche, ovvero i tipi di carattere. La descrizione di questi si rende necessaria quando il documento utilizza dei tipi che non appartengono allo standard minimo PostScript. In pratica, il linguaggio PostScript prevede che alcuni tipi di carattere siano predefiniti all'interno della stampante, per cui, quando vengono utilizzati questi tipi, non occorre specificarne le caratteristiche; in tutti gli altri casi, occorre fornire alla stampante tutte le informazioni necessarie a disegnarli nel modo corretto.
Questo particolare deve essere tenuto da conto quando si vogliono ottenere file PostScript di dimensioni ridotte, per esempio quando si tratta di documenti brevi.
... %%Page: 1 1 1 0 bop 300 1350 3600 42 v 300 1984 a FP(Appunti)138 b(Linux)p 300 2184 V 2142 2403 a FO(Daniele)21 b(Giacomini)114 b(daniele)21 b(@)i(pluto.linux.it)2865 2973 y FN(1999.09.21)p eop %%Page: 2 2 2 1 bop -72 -90 a FM(D)o(aniele)17 b(G)o(iacomini)h FL(\350)i(un)g (autodidatta)e(che)j(ha)f(tro)n(vato)e(in)i(GNU/Linux)h(la)f (possibilit\340)e(di)h(studiar)o(e)g(e)h(approfondir)o(e)-72 2 y(un)c(sistema)f(oper)o(ativo)h(completo)m(.)h(P)o(r)q(ima)e(di)g ...
A un certo punto, finalmente, inizia il contenuto delle varie pagine. L'estratto di esempio si riferisce alla prima e all'inizio della seconda pagina di questo documento (nel momento in cui è in corso la revisione di questa sezione). Con qualche difficoltà si riesce anche a intravedere il testo che verrà stampato. Al termine dell'ultima pagina c'è una conclusione, come nell'estratto seguente:
... %%Trailer end userdict /end-hook known{end-hook}if %%EOF
Questa struttura ordinata di un file PostScript, lascia intuire la possibilità di scomporre un file di questo tipo e di ricomporlo come si desidera. Quello che conta è che ciò che si ottiene contenga il preambolo iniziale, quello che precede le descrizioni delle pagine, e la conclusione finale. Per esempio, potrebbe essere conveniente estrarre da un file PostScript alcune pagine e ricomporle in un file indipendente.
Questo tipo di scomposizione può essere fatta manualmente, con l'aiuto di un programma per la modifica di file di testo, oppure per mezzo di strumenti appositi.
In mancanza di una stampante PostScript si può utilizzare un emulatore che trasforma un file PostScript in uno adatto alla stampante che si possiede. In passato sono apparsi diversi programmi proprietari di emulazione, ma attualmente si è imposto il programma Ghostscript (GNU-GPL) del quale esistono versioni sia per i sistemi Unix che per altri sistemi operativi (Dos incluso).
Ghostscript (2) è un programma che si occupa di trasformare un file PostScript in un altro adatto alla stampante che si utilizza. Permette di utilizzare una serie di opzioni fornite come argomenti della riga di comando, ma al termine costringe a uscire dal programma inserendo la parola quit, oppure il codice di EOF (che di solito si ottiene con la combinazione di tasti [Ctrl+d]), nello standard input (attraverso la tastiera o una ridirezione dell'input). Anche con la combinazione di tasti [Ctrl+c] si ottiene la conclusione del funzionamento del programma.
gs [opzioni] [file...]
Ghostscript utilizza un elenco molto lungo di argomenti nella riga di comando. Questi sono molto importanti per automatizzare l'utilizzo del programma attraverso degli script.
-sDEVICE=stampante
Permette di definire per quale tipo si stampante o altra unità deve essere generato il risultato della trasformazione del file PostScript. Possono essere utilizzati i nomi indicati nelle tabelle 73.1, 73.2 e 73.3.
Tabella 73.1. Alcuni dei formati per stampanti utilizzabili con Ghostscript.
Tabella 73.2. Alcuni dei formati grafici utilizzabili con Ghostscript.
Nome | Descrizione |
pdfwrite | PDF (Portable Document Format) |
psmono | PostScript 1, monocromatico, bitmap |
Tabella 73.3. Alcuni dei formati alternativi di conversione utilizzabili con Ghostscript.
-q | -dQUIET
Permette di sopprimere il messaggio di avvio del programma. È utile quando si ridirige l'output e di conseguenza non si vogliono avere dati estranei nel file che si ottiene.
-dNOPAUSE
Disabilita l'invito e la pausa alla fine di ogni pagina.
-sPAPERSIZE=formato
Permette di definire il formato della pagina. Possono essere utilizzati i formati elencati nella tabella 73.4.
formato | larghezza | altezza | larghezza | altezza | larghezza | altezza |
1/72" | 1/72" | pollici | pollici | cm | cm | |
note | 540 | 720 | 7,50 | 10,00 | 19,05 | 25,4 |
letter | 612 | 792 | 8,50 | 11,00 | 21,59 | 27,94 |
legal | 612 | 1 008 | 8,50 | 14,00 | 21,59 | 35,56 |
a0 | 2 380 | 3 368 | 33,055 6 | 46,777 8 | 83,961 1 | 118,816 |
a1 | 1 684 | 2 380 | 23,388 9 | 33,055 6 | 59,407 8 | 83,961 1 |
a2 | 1 190 | 1 684 | 16,527 8 | 23,388 9 | 41,980 6 | 59,407 8 |
a3 | 842 | 1 190 | 11,694 4 | 16,527 8 | 29,703 9 | 41,980 6 |
a4 | 595 | 842 | 8,263 89 | 11,694 4 | 20,990 3 | 29,703 9 |
a5 | 421 | 595 | 5,847 22 | 8,263 89 | 14,851 9 | 20,990 3 |
a6 | 297 | 421 | 4,125 | 5,847 22 | 10,477 5 | 14,851 9 |
a7 | 210 | 297 | 2,916 67 | 4,125 | 7,408 33 | 10,477 5 |
a8 | 148 | 210 | 2,055 56 | 2,916 67 | 5,221 11 | 7,408 33 |
a9 | 105 | 148 | 1,458 33 | 2,055 56 | 3,704 17 | 5,221 11 |
a10 | 74 | 105 | 1,027 78 | 1,458 33 | 2,610 56 | 3,704 17 |
b0 | 2 836 | 4 008 | 39,388 9 | 55,666 7 | 100,048 | 141,393 |
b1 | 2 004 | 2 836 | 27,833 3 | 39,388 9 | 70,696 7 | 100,048 |
b2 | 1 418 | 2 004 | 19,694 4 | 27,833 3 | 50,023 9 | 70,696 7 |
b3 | 1 002 | 1 418 | 13,916 7 | 19,694 4 | 35,348 3 | 50,023 9 |
b4 | 709 | 1 002 | 9,847 22 | 13,916 7 | 25,011 9 | 35,348 3 |
b5 | 501 | 709 | 6,958 33 | 9,847 22 | 17,674 2 | 25,011 9 |
archE | 2 592 | 3 456 | 36,00 | 48,00 | 91,44 | 121,92 |
archD | 1 728 | 2 592 | 24,00 | 36,00 | 60,96 | 91,44 |
archC | 1 296 | 1 728 | 18,00 | 24,00 | 45,72 | 60,96 |
archB | 864 | 1 296 | 12,00 | 18,00 | 30,48 | 45,72 |
archA | 648 | 864 | 9,00 | 12,00 | 22,86 | 30,48 |
flsa | 612 | 936 | 8,50 | 13,00 | 21,59 | 33,02 |
flse | 612 | 936 | 8,50 | 13,00 | 21,59 | 33,02 |
halfletter | 396 | 612 | 5,50 | 8,50 | 13,97 | 21,59 |
11x17 | 792 | 1 224 | 11,00 | 17,00 | 27,94 | 43,18 |
ledger | 1 224 | 792 | 17,00 | 11,00 | 43,18 | 27,94 |
Tabella 73.4. Formati di stampa di Ghostscript.
-sOutputFile=file
Permette di definire il nome del file che si vuole generare con questa trasformazione. Se al posto del nome si mette un trattino (-), questo file viene emesso attraverso lo standard output.
-
Se al posto del nome del file PostScript da convertire si indica un trattino (-) isolato, viene utilizzato quanto proveniente dallo standard input.
$
gs -dNOPAUSE -q -sDEVICE=cdjmono -sOutputFile=- (segue)
esempio.ps < /dev/null | lpr
Invia al sistema di stampa (tramite lpr) il documento esempio.ps
dopo la trasformazione nel formato compatibile con le stampanti HP Deskjet.
$
gs -dNOPAUSE -q -sDEVICE=cdjmono -sOutputFile=pagina%0004d (segue)
esempio.ps < /dev/null
Genera una serie di file, a partire dal documento esempio.ps
, uno per ogni pagina, con un nome che inizia per pagina
seguito da quattro cifre numeriche.
$
gs -dNOPAUSE -q -sDEVICE=cdjmono -sOutputFile=esempio.prn (segue)
esempio.ps < /dev/null
Genera, a partire dal documento esempio.ps
, il file esempio.prn
pronto per essere inviato a una stampante HP Deskjet.
Nello stesso modo in cui Ghostscript viene utilizzato per convertire file PostScript in formati adatti alle stampanti normali, così è possibile ottenere una conversione in un formato che possa essere mostrato attraverso lo schermo, solitamente all'interno del sistema grafico X.
Alcuni strumenti grafici specifici, si occupano di guidare l'utente all'utilizzo di Ghostscript in modo da ottenere un'anteprima di stampa su schermo.
BMV (3) è un programma che permette la visualizzazione di file PostScript utilizzando direttamente una console di tipo VGA. Per visualizzare i file PostScript si avvale naturalmente di Ghostscript che deve essere stato installato. Il file eseguibile, bmv, deve appartenere all'utente root e avere il bit SUID attivo (SUID-root), altrimenti può essere utilizzato solo dall'utente root a causa del fatto che accede direttamente alla scheda VGA.
bmv [opzioni] file_da_visualizzare
Una volta avviato l'eseguibile bmv, se Ghostscript è installato (e BMV lo trova), viene visualizzato il file utilizzando la console virtuale dalla quale è stato avviato. Per cambiare console virtuale non funzionano più le combinazioni consuete, [Ctrl+Fn] o [Ctrl+Alt+Fn]; per cambiare console virtuale occorre un comando di BMV: [s][n] che permette di raggiungere l'n-esima console virtuale.
-vn
Permette di stabilire il tipo di modalità VGA attraverso un numero che fa riferimento a quanto stabilito normalmente attraverso il file /usr/include/vga.h
(utilizzato nella compilazione della libreria SVGAlib). Alcuni valori interessanti potrebbero essere il numero 4 (640x480 16 colori), il numero 29 (800x600 16 colori), il 30 (1 024x768 16 colori) e il 31 (1 280x1 024 256 colori).
-pdimensione_carta
Permette di passare a Ghostscript l'indicazione sulla dimensione della carta in modo esplicito.
-gpercorso_gs
Permette di indicare il percorso assoluto per l'avvio dell'eseguibile gs. Potrebbe essere necessario utilizzare questa opzione se BMV è stato compilato con un'indicazione che non corrisponde a quella della propria situazione.
[q]
Conclude il funzionamento del programma.
[h], [j], [k], [l]
Questi tasti rappresentano uno spostamento dell'immagine rispettivamente: verso sinistra, verso il basso, verso l'alto e verso destra. In pratica ripetono la tradizione di VI.
[+], [-]
Ingrandisce e riduce l'immagine.
[g][n][n][n]
Salta alla pagina definita dal numero nnn (sono obbligatorie tre cifre).
[s][n]
Salta alla console virtuale n.
$
bmv -g/usr/bin/gs prova.ps
Utilizza l'eseguibile gs che si trova nella directory /usr/bin/
per visualizzare il file prova.ps
, con la modalità VGA predefinita.
$
bmv -v30 -g/usr/bin/gs prova.ps
Come nell'esempio precedente ma utilizzando la modalità VGA numero 30.
$
bmv -pA4 -g/usr/bin/gs prova.ps
Visualizza il solito file specificando a Ghostscript che il formato della carta deve essere A4.
Ghostview (4) è un programma che facilita la visualizzazione di file PostScript all'interno dell'ambiente grafico X attraverso una gestione automatizzata e semplificata di Ghostscript.
Figura 73.1. Ghostview. |
Ghostview è piuttosto spartano nella sua impostazione, e per questo tende a essere sostituito da un suo discendente, GV, più curato esteticamente e più semplice da usare. Tuttavia, Ghostview è ancora insostituibile per la facilità con cui si possono selezionare gruppi di pagine molto grandi.
ghostview [opzioni] [file]
L'eseguibile ghostview viene utilizzato generalmente senza alcun argomento, eventualmente può essere fornito il nome del file PostScript che si vuole visualizzare.
La libreria grafica con cui è stato realizzato questo programma, non è molto comoda da utilizzare con il solo mouse. Per questo, è conveniente conoscere alcuni comandi che si possono dare attraverso la tastiera.
Scorrimento delle pagine:
l'uso dei tasti [pagina su] e [pagina giù] permette di scorrere il documento da una pagina all'altra.
Orientamento:
premendo il tasto [freccia su], si orienta il documento a 0 gradi (cioè nella sua posizione normale);
premendo il tasto [freccia giù], si orienta il documento a 180 gradi;
premendo il tasto [freccia sinistra], si orienta il documento in senso antiorario di 90 gradi;
premendo il tasto [freccia destra], si orienta il documento in senso orario di 90 gradi.
Spostamento della zona visualizzata:
premendo il tasto [u] o [k], si visualizza la parte superiore della pagina (se questa non appare completamente nella finestra a disposizione);
premendo il tasto [d] o [j], si visualizza la parte inferiore della pagina (se questa non appare completamente nella finestra a disposizione);
premendo il tasto [h], si visualizza la parte sinistra della pagina (se questa non appare completamente nella finestra a disposizione);
premendo il tasto [l], si visualizza la parte destra della pagina (se questa non appare completamente nella finestra a disposizione).
A parte l'uso ovvio del mouse con le barre di scorrimento, sono interessanti le possibilità seguenti.
Lente di ingrandimento:
facendo un clic con uno dei tasti del mouse quando il cursore si trova nella zona in cui si visualizza il documento, si ottiene un ingrandimento locale. Con il primo tasto si ha un ingrandimento piccolo, con il secondo tasto si ottiene un ingrandimento medio, con il terzo si ottiene l'ingrandimento massimo.
Selezione delle pagine:
con un clic del primo tasto su un numero di pagina si seleziona tale numero. Premendo successivamente il terzo tasto si seleziona un gruppo di pagine a partire da quella selezionata in precedenza. Utilizzando il tasto centrale si visualizza la pagina con quel numero.
Il menù di Ghostview può essere utilizzato attraverso il mouse oppure attraverso delle combinazioni di tasti. Segue la struttura del menù con l'indicazione della combinazione di tasti equivalente a ogni voce.
File
Open...
[o]
Permette di aprire un file PostScript per la sua visualizzazione.
Reopen
[r]
Permette di riaprire il documento in corso di visualizzazione, nel caso che questo sia stato modificato nel frattempo.
Print...
[P]
Permette di stampare l'intero documento. Viene richiesto il nome della stampante; se non viene fornito si intende quella predefinita.
Print marked pages...
[p]
Permette di stampare solo le pagine marcate.
Save marked pages...
[s]
Permette di salvare le pagine marcate.
Copyright...
Visualizza il copyright.
Quit
[q]
Termina l'esecuzione del programma.
Page
Next
[barra spaziatrice] [Invio] [f]
Passa a visualizzare la pagina successiva.
Redisplay
[.] [Ctrl+l]
Visualizza nuovamente la pagina corrente.
Previous
[backspace] [canc] [b]
Passa a visualizzare la pagina precedente.
Center
Centra la pagina all'interno della zona di visualizzazione.
Mark
[m]
Marca le pagine selezionate. Le pagine marcate hanno un asterisco alla sinistra del numero.
Unmark
[n]
Toglie la marcatura alle pagine selezionate.
Magstep
[0] [1] [2] [3] [4] [5] [+] [-]
Permette di definire il livello di ingrandimento della pagina visualizzata. Zero è il valore centrale; un valore maggiore aumenta l'ingrandimento, un valore minore lo diminuisce.
Orientation
Permette di cambiare l'orientamento della visualizzazione del documento.
Media
Permette di selezionare un formato di carta diverso rispetto a quello naturale del documento. Il primo ad apparire nell'elenco di quelli a disposizione è proprio quello originale.
GV (5) è un programma derivato da Ghostview con lo stesso scopo, ma con un'interfaccia grafica più comoda e intuitiva.
Figura 73.2. GV. |
gv [file] [opzioni]
L'eseguibile gv permette l'utilizzo di un gran numero di opzioni ed è altamente configurabile. Generalmente però non si utilizzano tutte queste risorse dal momento che la sua interfaccia grafica è abbastanza semplice e intuitiva.
Esiste solo uno svantaggio rispetto al programma Ghostview originale: è un po' scomoda la selezione delle pagine. Per approfondirne l'uso, si può leggere la pagina di manuale gv(1).
Peter J. Weingartern, A First Guide to PostScript
<http://www.cs.indiana.edu/docproject/programming/postscript/postscript.html>
Internet PostScript Resources
Thomas Merz, Ghostscript User Manual, 1997
1) PostScript is a trademark of Adobe Systems Incorporated.
2) Ghostscript GNU GPL
3) BMV GNU GPL
4) Ghostview GNU GPL
5) GV GNU GPL