[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


72. PostScript

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*

72.1 File PostScript

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

72.1.1 Scomposizione e ricomposizione

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.

72.2 Emulazione

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).

72.2.1 Ghostscript

Ghostscript è 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.

Alcune opzioni

-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 72.1, 72.2 e 72.3.

Nome Descrizione
iwhi Apple Imagewriter, alta risoluzione
iwlo Apple Imagewriter, bassa risoluzione
iwlq Apple Imagewriter LQ, 320x216 dpi
bj10e Canon BubbleJet BJ10e
bj200 Canon BubbleJet BJ200
bjc600 Canon BubbleJet BJC-600 e BJC-400 colore
bjc800 Canon BubbleJet BJC-800 colore
lbp8 Canon LBP-8II (laser)
la50 DEC LA50
la70 DEC LA70
la75 DEC LA75
la75plus DEC LA75plus
lj250 DEC LJ250 (colore)
epson Epson-compatibile (9 o 24 aghi)
eps9mid Epson-compatibile (9 aghi a media risoluzione)
eps9high Epson-compatibile (9 aghi ad alta risoluzione)
epsonc Epson LQ-2550 e Fujitsu 3400/2400/1200 a colori
stcolor Epson Stylus colore
st800 Epson Stylus 800
dnj650c HP Designjet 650C
deskjet HP Deskjet e HP Deskjet Plus
djet500 HP Deskjet 500
cdeskjet HP Deskjet 500C (1 bit/pixel colore)
cdjcolor HP Deskjet 500C (24 bit/pixel colore)
cdjmono HP Deskjet 500C (solo nero)
cdjcolor HP Deskjet 500C
cdj500 HP Deskjet 500C
djet500c HP Deskjet 500C
cdj550 HP Deskjet 550C/560C
laserjet HP Laserjet
ljetplus HP Laserjet Plus
ljet2p HP Laserjet IId/IIp/III* (con compressione TIFF)
ljet3 HP Laserjet III* (con compressione Delta Row)
ljet3d HP Laserjet IIID (duplex)
ljet4 HP Laserjet 4 (600 dpi)
lj4dith HP Laserjet 4 (Floyd-Steinberg dithering)
pj HP Paintjet XL
pjetxl HP Paintjet XL
pjxl HP Paintjet XL (colore)
paintjet HP Paintjet XL (colore)
pjxl300 HP Paintjet XL300 (colore) e HP Deskjet 1200C
lp2563 HP 2563B
ibmpro IBM Proprinter (9 aghi)
jetp3852 IBM Jetprinter (a getto, colore, modello #3852)
imagen Imagen ImPress
m8510 C.Itoh M8510
cp50 Mitsubishi CP50 (colori)
necp6 NEC P6/P6+/P60 (360x360 dpi)
r4081 Ricoh 4081 (laser)
sj48 StarJet 48 inkjet
t4693d2 Tektronix 4693d (colore, 2 bit)
t4693d4 Tektronix 4693d (colore, 4 bit)
tek4696 Tektronix 4695/4696 (plotter a getto d'inchiostro)
xes Xerox XES 2700, 3700, 4045, e altri modelli

Tabella 72.1: Alcuni dei formati per stampanti utilizzabili con Ghostscript.

Nome Descrizione
dfaxhigh DigiBoard DigiFAX (alta risoluzione)
dfaxlow DigiBoard DigiFAX (bassa risoluzione)
faxg3 Fax gruppo 3, con EOL, senza intestazione e EOD
faxg32d Fax gruppo 3 2-D, con EOL, senza intestazione e EOD
faxg4 Fax gruppo 4, con EOL, senza intestazione e EOD
pcxmono PCX monocromatico
pcxgray PCX 8 bit in scala di grigi
pcx16 PCX 4 bit a colori
pcx256 PCX 8 bit a colori
pcx24b PCX 24 bit a colori
bit Binario semplice (raw), monocromatico
bitrgb Binario semplice (raw), RGB
bitcmyk Binario semplice (raw), CMYK
pbm PBM (Portable BitMap), formato ASCII
pbmraw PBM (Portable BitMap), formato raw
pgm PGM (Portable GrayMap), formato ASCII
pgmraw PGM (Portable GrayMap), formato raw
pngmono PNG (Portable Network Graphics), monocromatico
pnggray PNG (Portable Network Graphics), 8 bit grigi
png16 PNG (Portable Network Graphics), 4 bit colori
png256 PNG (Portable Network Graphics), 8 bit colori
png16m PNG (Portable Network Graphics), 24 bit colori
ppm PBM (Portable PixMap), formato ASCII
ppmraw PBM (Portable PixMap), formato raw
tiffcrle TIFF b/n, CCITT RLE 1-dim (fax gruppo 3 senza EOL)
tiffg3 TIFF b/n, fax gruppo 3 (con EOL)
tiffg32d TIFF b/n, fax gruppo 3 2-D
tiffg4 TIFF b/n, fax gruppo 4
tifflzw TIFF b/n, LZW
tiffpack TIFF b/n, PackBits
tiff12nc TIFF 12 bit RGB colori (senza compressione)
tiff24nc TIFF 24 bit RGB colori (senza compressione)

Tabella 72.2: Alcuni dei formati grafici utilizzabili con Ghostscript.

Nome Descrizione
pdfwrite PDF (Portable Document Format)
psmono PostScript 1, monocromatico, bitmap

Tabella 72.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 72.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 1008 8,50 14,00 21,59 35,56
a0 2380 3368 33,0556 46,7778 83,9611 118,816
a1 1684 2380 23,3889 33,0556 59,4078 83,9611
a2 1190 1684 16,5278 23,3889 41,9806 59,4078
a3 842 1190 11,6944 16,5278 29,7039 41,9806
a4 595 842 8,26389 11,6944 20,9903 29,7039
a5 421 595 5,84722 8,26389 14,8519 20,9903
a6 297 421 4,125 5,84722 10,4775 14,8519
a7 210 297 2,91667 4,125 7,40833 10,4775
a8 148 210 2,05556 2,91667 5,22111 7,40833
a9 105 148 1,45833 2,05556 3,70417 5,22111
a10 74 105 1,02778 1,45833 2,61056 3,70417
b0 2836 4008 39,3889 55,6667 100,048 141,393
b1 2004 2836 27,8333 39,3889 70,6967 100,048
b2 1418 2004 19,6944 27,8333 50,0239 70,6967
b3 1002 1418 13,9167 19,6944 35,3483 50,0239
b4 709 1002 9,84722 13,9167 25,0119 35,3483
b5 501 709 6,95833 9,84722 17,6742 25,0119
archE 2592 3456 36,00 48,00 91,44 121,92
archD 1728 2592 24,00 36,00 60,96 91,44
archC 1296 1728 18,00 24,00 45,72 60,96
archB 864 1296 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 1224 11,00 17,00 27,94 43,18
ledger 1224 792 17,00 11,00 43,18 27,94

Tabella 72.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.

Esempi

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.

72.3 Anteprima di stampa

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.

72.3.1 BMV

BMV è 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.

Alcune opzioni

-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 (1024x768 16 colori) e il 31 (1280x1024 256 colori).

-p<dimensione-carta>

Permette di passare a Ghostscript l'indicazione sulla dimensione della carta in modo esplicito.

-g<percorso-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.

Alcuni comandi da tastiera

[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.

Esempi

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.

72.3.2 Ghostview

È un programma che facilita la visualizzazione di file PostScript all'interno dell'ambiente grafico X attraverso una gestione automatizzata e semplificata di Ghostscript.

48.jpg

Figura 72.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.

A parte l'uso ovvio del mouse con le barre di scorrimento, sono interessanti le possibilità seguenti.

Il menu di Ghostview può essere utilizzato attraverso il mouse oppure attraverso delle combinazioni di tasti. Segue la struttura del menu con l'indicazione della combinazione di tasti equivalente a ogni voce.

72.3.3 GV

GV è un programma derivato da Ghostview con lo stesso scopo, ma con un'interfaccia grafica più comoda e intuitiva.

49.jpg

Figura 72.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).

72.4 Riferimenti

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) PostScript is a trademark of Adobe Systems Incorporated.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]