[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 89.   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.

Il formato PostScript è proprietario. Nonostante questo fatto, sulla base di tale formato sono stati sviluppati diversi applicativi nell'ambito del software libero.

89.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 (in una sua edizione molto vecchia). 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

89.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, quanto 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.

89.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 del quale esistono versioni sia per i sistemi Unix che per altri sistemi operativi (Dos incluso).(1)

89.2.1   Ghostscript

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.

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 89.1, 89.2 e 89.3.

Tabella 89.1. Alcuni dei formati per stampanti utilizzabili con Ghostscript.

Nome Descrizione
iwhi Apple Imagewriter, alta risoluzione
iwlo Apple Imagewriter, bassa risoluzione
iwlq Apple Imagewriter LQ, 320×216 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 (360×360 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 89.2. Alcuni dei formati grafici 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 89.3. Alcuni dei formati alternativi di conversione utilizzabili con Ghostscript.

Nome Descrizione
pdfwrite PDF (Portable document format)
psmono PostScript 1, monocromatico, bitmap

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

Tabella 89.4. Formati di stampa di Ghostscript.

formato larghezza altezza larghezza altezza larghezza altezza
1/72 pollici 1/72 pollici 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

-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=- <-'
`->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 <-'
`->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 <-'
`->esempio.ps < /dev/null

Genera, a partire dal documento esempio.ps, il file esempio.prn pronto per essere inviato a una stampante HP Deskjet.

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

89.3.1   BMV

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 all'adattatore 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 (640×480 16 colori), il numero 29 (800×600 16 colori), il 30 (1 024×768 16 colori) e il 31 (1 280×1 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.

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.

89.3.2   Ghostview

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 89.1. Ghostview.

figure/a2-ghostview

Ghostview è piuttosto spartano nella sua impostazione, per cui tende a essere sostituito dai suoi discendenti, GV e GGV, più curati esteticamente e più semplici 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 menù di Ghostview può essere utilizzato con il mouse, ma le stesse funzionalità sono accessibili anche attraverso delle combinazioni di tasti. Segue la struttura del menù con l'indicazione della combinazione di tasti equivalente a ogni voce.

89.3.3   GV

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

Figura 89.2. GV.

figure/a2-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).

89.3.4   GGV

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

Figura 89.3. GGV.

figure/a2-ggv

gnome-gv [opzioni] [file]

L'eseguibile gnome-gv permette l'utilizzo di un gran numero di opzioni che però generalmente non si utilizzano, dal momento che la sua interfaccia grafica è abbastanza semplice e intuitiva.

89.4   Estrazione di disegni

Il formato PostScript consente la rappresentazione di disegni in forma vettoriale. In certe situazioni, può essere necessario estrarre le informazioni di un disegno vettoriale da una pagina PostScript per consentirne la rielaborazione con un programma adatto.

89.4.1   Pstoedit

Pstoedit (7) è un programma molto semplice, in grado di estrarre le informazioni vettoriali da un file PostScript o da un file PDF.(8) Il programma eseguibile che svolge questo compito è pstoedit, che si utilizza secondo lo schema sintattico seguente:

pstoedit [opzioni_varie] -f formato_finale[:opzioni_del_formato] [file_originale [file_da_ottenere]]

In condizioni normali, è sufficiente indicare l'opzione -f, a cui segue una parola chiave che identifica il formato finale in cui si vuole convertire il file PostScript (o PDF). Se il formato di conversione prevede delle opzioni, queste vanno indicate dopo il nome della conversione, separate da due punti verticali (come si vede dal modello sintattico). Alla fine della riga di comando si indicano i file da utilizzare, ma in loro mancanza si tre il file in ingresso dallo standard input e si emette il risultato della conversione attraverso lo standard output.

I formati per la conversione sono numerosi e si può ottenere l'elenco completo di quelli incorporati nel programma con l'opzione -help. Per approfondire i dettagli sulle opzioni di alcuni formati conviene leggere la pagina di manuale pstoedit(1). Qui viene proposto un elenco ridotto di opzioni:

Opzione Descrizione

-help

Emette attraverso lo standard error una guida rapida sul suo utilizzo, completa di un elenco di formati disponibili.

-page n

Converte la pagina n-esima.

-merge

Consente la ricostruzione di poligoni riempiti.

-v

Mostra qualche informazione in più durante la conversione.

-f gnuplot

Converte in formato Gnuplot.

-f fig

 

-f xfig

Converte in formato FIG (per XFig).

-f pic

Converte in formato PIC (per Groff).

-f latex2e

Converte in un formato adatto a LaTeX.

-f java1

 

-f java2

Converte in formato sorgente Java, 1 o 2.

Viene proposto un esempio molto semplice, in cui si vuole convertire il file figura.ps (PostScript contenente una sola pagina) nel file figura.fig (adatto a XFig):

pstoedit -f fig figura.ps figura.fig

89.5   Riferimenti

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Esistono due filoni nello sviluppo di Ghostscript; solo quello contrassegnato dalla sigla «GNU» è rilasciato con la licenza GNU GPL, mentre l'altro non è propriamente software libero.

2) Ghostscript   GNU GPL

3) BMV   GNU GPL

4) Ghostview   GNU GPL

5) GV   GNU GPL

6) GGV   GNU GPL

7) Pstoedit   GNU GPL

8) Ci possono essere difficoltà nella conversione a partire dal formato PDF, ma in tal caso è sufficiente convertirlo prima in PostScript.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome postscript.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]