Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://www.arcetri.astro.it/irlab/doc/library/linux/AppLinux/al84.htm
Äàòà èçìåíåíèÿ: Tue Sep 21 18:08:39 1999
Äàòà èíäåêñèðîâàíèÿ: Sat Dec 22 13:21:58 2007
Êîäèðîâêà:

Ïîèñêîâûå ñëîâà: íàáëþäåíèÿ ìåòåîðíûõ ïîòîêîâ
Appunti Linux: PostScript [inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]

64. PostScript

Come giÞ accennato nel capitolo precedente, a suo tempo, il sistema PostScript ha segnato una rivoluzione nel modo di stampare definendo uno standard generale per la stampa. A causa del suo 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. 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*

64.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-2.0), 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 1692 3600 42 v 300 2000 a FM(Appunti)58 b(Linux)p
300 2151 V 300 2409 a FL(Daniele)18 b(G)o(iacomini)76
b(daniele@calion.com)20
2584 y FK(1998.05.06)p eop
%%Page: 2 2
2 1 bop -72 -167 3600 5 v -72 -200 a FJ(2)-72 5 y FI(D)o(aniele)23
b(G)o(iacomini)p FK(,)j(ha)h(incontr)o(ato)f(il)g(softwar)o(e)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 scrittura 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

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

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

64.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 un EOF, 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 64.1, 64.2 e 64.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 Color BubbleJet BJC-600 e BJC-400
bjc800 Canon Color BubbleJet BJC-800
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 Color
st800 Epson Stylus 800
dnj650c HP DesignJet 650C
deskjet HP DeskJet e 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 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 64.1: Alcuni dei formati di 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 64.2: Alcuni dei formati grafici utilizzabili con Ghostscript.

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

Tabella 64.3: Alcuni dei formati alternativi di conversione utilizzabili con Ghostscript.

-q | -dQUIET

Permette di sopprimere il messaggio di avvio del programma. õ particolarmente 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 64.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 64.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 semplice trattino (-) isolato, viene utilizzato per questo 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, a partire dal documento esempio.ps, una serie di file, 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.

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

64.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 completo 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.

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


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

64.3.2.1 Uso della tastiera

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.

64.3.2.2 Uso della mouse

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

64.3.2.3 Uso del menu

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.

64.3.3 GV

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


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

Vedere gv(1).

64.4 PSUtils

All'inizio di questo capitolo si Õ accennato alla struttura di un file PostScript, e al fatto che il suo contenuto possa essere riadattato. Per queste rielaborazioni viene in aiuto una raccolta di programmi di utilitÞ, denominato PSUtils (PostScript Utilities).

Si tratta di un insieme di programmi e script utili per chi vuole rimaneggiare file di questo tipo. Gli usi piÛ comuni possono riguardare:

La dimensioni della carta, quando devono essere fornite, possono essere espresse senza l'indicazione di un'unitÞ di misura, e in tal caso si riferiscono a punti tipografici (1/72 di pollice), altrimenti si possono indicare le sigle cm o in che si riferiscono rispettivamente a centimetri e pollici. Il formato della carta puÐ essere espresso anche attraverso il suo nome standard, e vengono accettate le parole chiave: a3, a4, a5, b5, letter, legal, tabloid, statement, executive, folio, quarto e 10x14.

Purtroppo, questi programmi di utilitÞ non sono perfetti, e generalmente funzionano solo con file che rispettano fedelmente le specifiche PostScript di Adobe. Assieme ai programmi di utilitÞ sono forniti alcuni script in grado di adattare e rendere compatibili alcuni formati PostScript che altrimenti risulterebbero inadatti. Restano comunque delle situazioni in cui i programmi di PSUtils non sono in grado di compiere il loro lavoro.

64.4.1 Sequenza di stampa

Quando si vuole organizzare la stampa di un documento voluminoso, il primo problema Õ stabilire la gestione della stampa fronte-retro. Dal momento che si dispone normalmente di stampanti che stampano una sola faccia per volta, dopo la prima passata, occorre stabilire come deve essere girata la carta, e se deve essere invertita la sequenza dei fogli.


Figura 64.3: Movimento della carta in una tipica stampante laser.

Il programma GV permette di stampare in maniera distinta le pagine dispari da quelle pari, ma per la gestione di sequenze piÛ complesse, occorre fare affidamento sui programmi che sono descritti in queste sezioni.

Il problema piÛ comune Õ quello di stampare su un unico foglio 4 facciate ridotte alla metÞ della dimensione normale. Si osservi la figura 64.4; rappresenta la sequenza necessaria per la stampa corretta di 4 facciate su un unico foglio, quando si dispone di una stampante normale che stampa su una sola facciata alla volta, tenendo conto quindi che il foglio deve essere reimmesso nella stampante.


Figura 64.4: Sequenza per la stampa di 4 facciate su un foglio normale utilizzando stampanti normali.

Se la stampante funziona come mostrato nella figura 64.3, si puÐ comprendere il meccanismo osservando la sequenza di operazioni mostrata dalla figura 64.5. In pratica, dopo la stampa della prima facciata, occorre prendere il foglio senza ruotarlo e reimmetterlo in ingresso per la stampa.


Figura 64.5: Sequenza pratica per la stampa di 4 facciate su un foglio normale.

Se la stampa supera le 4 facciate ridotte, ovvero se richiede piÛ di un foglio, occorre suddividere la stampa in modo da stampare prima il fronte e poi il retro. Nel momento in cui si passa a stampare il retro, occorre verificare se si deve invertire la sequenza dei fogli, oppure se si invia la stampa del gruppo di pagine in senso inverso.

Volendo, il problema si puÐ complicare ancora di piÛ, se i fogli che si ottengono devono essere rilegati a gruppetti (segnature), attraverso una cucitura centrale. In pratica, la prima facciata del primo foglio conterrÞ la prima e l'ultima pagina, mentre la seconda facciata conterrÞ la seconda e la penultima pagina, e cosË avanti con i fogli successivi.

Un altro problema da considerare quando si utilizzano stampanti laser, Õ la temperatura. La stampa richiede il riscaldamento e la fusione dell'inchiostro in polvere, cosË facendo, sia la stampante che la carta si riscaldano notevolmente durante il funzionamento. Quando si deve reimmettere la carta che Õ giÞ stata stampata da un lato, Õ probabile che alcuni fogli tendano ad appiccicarsi, rovinando la sequenza di stampa. In queste situazioni Õ consigliabile stampare a piccoli blocchi, per dare il tempo alla stampante e alla carta di raffreddarsi un po'.

64.4.1.1 Stampanti duplex

Le stampanti duplex possono stampare simultaneamente fronte-retro. Per arrivare a questo risultato, l'immagine che viene stampata nel retro del foglio Õ rovesciata tenendo conto dell'orientamento normale di questo: verticale. Quando si vogliono stampare 4 facciate su un unico foglio, le cose si complicano; in pratica, le due facciate ridotte che vanno collocate nel retro del foglio, devono essere rovesciate. Forse, la figura 64.6 aiuta a comprendere la cosa.


Figura 64.6: Sequenza per la stampa di 4 facciate su un foglio normale utilizzando stampanti duplex.

Una sequenza di stampa di questo tipo puÐ essere simulata anche con una stampante normale, nella quale i fogli debbano essere reimmessi per la stampa della parte retrostante. la figura 64.7 mostra in che modo debbano essere reimmessi i fogli in questo caso.


Figura 64.7: Sequenza pratica per la stampa di 4 facciate su un foglio normale simulando una stampante duplex.

64.4.2 $ psresize

psresize [<opzioni>] [<file-originale> [<file-elaborato>]]

psresize elabora un file PostScript adattandone le dimensioni, in base a quanto specificato con le opzioni, e generando un nuovo file. Se il secondo file non viene indicato attraverso la riga di comando, il risultato viene emesso attraverso lo standard output; se non viene indicato nemmeno il primo, il file da elaborare viene tratto dallo standard input.

Alcune opzioni

-w<larghezza>

Definisce l'ampiezza orizzontale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-h<altezza>

Definisce l'ampiezza verticale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-p<formato>

In alternativa all'indicazione delle dimensioni del formato finale, si puÐ usare questa opzione per indicare direttamente il nome standard del formato finale. Se le dimensioni non vengono definite, si sottintende trattarsi di a4.

-W<larghezza>

Definisce l'ampiezza orizzontale della carta del formato di origine. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-H<altezza>

Definisce l'ampiezza verticale della carta del formato di origine. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-P<formato>

In alternativa all'indicazione delle dimensioni del formato di origine, si puÐ usare questa opzione per indicare direttamente il nome standard del formato di origine. Se le dimensioni non vengono definite, si sottintende trattarsi di a4.

-q

Durante l'elaborazione, viene emesso attraverso lo standard error l'elenco dei numeri di pagina che vengono elaborati. Se si utilizza questa opzione, se ne sopprime la segnalazione.

64.4.3 $ psselect

psselect [<opzioni>] [<file-originale> [<file-elaborato>]]

psselect elabora un file PostScript estraendone alcune pagine e generando un nuovo file con queste. Se il secondo file non viene indicato attraverso la riga di comando, il risultato viene emesso attraverso lo standard output; se non viene indicato nemmeno il primo, il file da elaborare viene tratto dallo standard input.

Le pagine vengono selezionate attraverso l'opzione -p che puÐ essere usata congiuntamente a -e (pagine pari) oppure -o (pagine dispari).

I numeri di pagina a cui si fa riferimento, sono relativi alla disposizione effettiva, contando a partire da 1. Infatti, un file PostScript puÐ essere il risultato di un assemblaggio di pagine numerate in vario modo, e questa numerazione puÐ non corrispondere alla disposizione effettiva delle pagine all'interno del file.

Alcune opzioni

-e

Seleziona solo le pagine pari.

-o

Seleziona solo le pagine dispari.

-p<pagine>

Permette di specificare un gruppo di pagine, attraverso un elenco separato da virgole. All'interno dell'elenco si possono specificare anche degli intervalli, separando il numero iniziale da quello finale con un singolo trattino (-). Se un numero di pagina Õ prefissato dal carattere di sottolineatura (_), questo si intende riferito alla fine del documento, contando all'indietro.

-r

Con questa opzione, le pagine estratte vengono organizzate in ordine inverso rispetto a quello di origine.

-q

Durante l'elaborazione, viene emesso attraverso lo standard error l'elenco dei numeri di pagina che vengono elaborati. Se si utilizza questa opzione, se ne sopprime la segnalazione.

Esempi

psselect -p1,3 documento.ps mio_file.ps

Estrae dal file documento.ps la prima e la terza pagina, generando il file mio_file.ps.

psselect -p1,_3 documento.ps mio_file.ps

Estrae dal file documento.ps la prima e la terza pagina dalla fine, generando il file mio_file.ps.

psselect -p1-3,10-15 documento.ps mio_file.ps

Estrae dal file documento.ps le prime tre pagine e le pagine dalla 10 alla 15, generando il file mio_file.ps.

psselect -p-3,10-15 documento.ps mio_file.ps

Esattamente come nell'esempio precedente, con la differenza che la prima pagina viene considerata in modo predefinito, avendo lasciato il trattino da solo.

psselect -p3,150- documento.ps mio_file.ps

Estrae dal file documento.ps la terza pagina e tutte le pagine a partire dalla 150, generando il file mio_file.ps.

psselect -e -p150- documento.ps mio_file.ps

Estrae dal file documento.ps tutte le pagine pari (even) a partire dalla 150, generando il file mio_file.ps.

psselect -o -r -p150- documento.ps mio_file.ps

Estrae dal file documento.ps tutte le pagine dispari (odd) a partire dalla 150, in ordine inverso, generando il file mio_file.ps.

64.4.4 $ psnup

psnup [<opzioni>] [<file-originale> [<file-elaborato>]]

psnup elabora un file PostScript generando un file in cui diverse pagine di origine sono assemblate in un'unica pagina finale. In pratica permette di ottenere due o piÛ pagine in un'unica facciata.

Se il secondo file non viene indicato attraverso la riga di comando, il risultato viene emesso attraverso lo standard output; se non viene indicato nemmeno il primo, il file da elaborare viene tratto dallo standard input.

Le pagine riunite assieme da psnup sono inserite in sequenza, cosË come si trovano nel file originale. Per cambiare l'ordine di stampa in modo da poter ottenere un fronte-retro, occorre preelaborare il file di origine attraverso psbook.

Alcune opzioni

-w<larghezza>

Definisce l'ampiezza orizzontale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-h<altezza>

Definisce l'ampiezza verticale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-p<formato>

In alternativa all'indicazione delle dimensioni del formato finale, si puÐ usare questa opzione per indicare direttamente il nome standard del formato finale. Se le dimensioni non vengono definite, si sottintende trattarsi di a4.

-W<larghezza>

Definisce l'ampiezza orizzontale della carta del formato di origine. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-H<altezza>

Definisce l'ampiezza verticale della carta del formato di origine. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-P<formato>

In alternativa all'indicazione delle dimensioni del formato di origine, si puÐ usare questa opzione per indicare direttamente il nome standard del formato di origine. Se le dimensioni non vengono definite, si sottintende trattarsi di a4.

-q

Durante l'elaborazione, viene emesso attraverso lo standard error l'elenco dei numeri di pagina che vengono elaborati. Se si utilizza questa opzione, se ne sopprime la segnalazione.

-n

Un trattino seguito da un numero indica la quantitÞ di pagine che si vogliono unire in un'unica pagina finale. Per esempio, -2 fa in modo che su una pagina finale siano unite assieme due pagine di quelle originali, ridotte opportunamente.

Esempi

psnup -2 documento.ps mio_file.ps

Elabora il file documento.ps (A4) generando il file mio_file.ps (A4) che, per ogni pagina, conterrÞ due pagine del documento originale.

psnup -4 documento.ps mio_file.ps

Come nell'esempio precedente, con la differenza che vengono riunite 4 pagine in una sola facciata.

psnup -Pletter -4 documento.ps mio_file.ps

Come nell'esempio precedente, con la differenza che il file originale conteneva pagine in formato letter.

64.4.5 $ psbook

psbook [<opzioni>] [<file-originale> [<file-elaborato>]]

psbook elabora un file PostScript generando un altro file in cui la sequenza delle pagine risulta alterata in modo da poter stampare un libretto. Per esempio, nel caso della stampa di gruppi di 4 pagine, la sequenza generata Õ 4-1-2-3, in modo da poter stampare un foglio in cui sul fronte (recto) appaiano le pagine 4-1 e sul retro (tergo) le pagine 2-3. Questo permette di piegare il foglio e di leggerlo a modo di libretto. In tal caso si hanno legature di un solo foglio.

I gruppi di pagine possono essere di dimensioni maggiori, precisamente si tratta di multipli di 4, e se non viene specificato diversamente con le opzioni, si intende un gruppo di dimensioni sufficienti a contenere tutte le pagine contenute nel file originale.

Se il secondo file non viene indicato attraverso la riga di comando, il risultato viene emesso attraverso lo standard output; se non viene indicato nemmeno il primo, il file da elaborare viene tratto dallo standard input.

Alcune opzioni

-q

Durante l'elaborazione, viene emesso attraverso lo standard error l'elenco dei numeri di pagina che vengono elaborati. Se si utilizza questa opzione, se ne sopprime la segnalazione.

-sn

L'opzione -s permette di definire la dimensione del raggruppamento. Se non viene specificato, si intende un unico gruppo per tutte le pagine del file originale. Il valore minimo Õ 4 e puÐ assumere solo un valore multiplo a 4.

Esempi

psbook -s4 documento.ps mio_file.ps

Elabora il file documento.ps generando il file mio_file.ps con una sequenza del tipo 4-1+2-3.

psbook -s8 documento.ps mio_file.ps

Elabora il file documento.ps generando il file mio_file.ps con una sequenza del tipo 8-1+2-7+6-3+4-5.

64.4.6 $ pstops

pstops [<opzioni>] <definizione-pagine> [<file-originale> [<file-elaborato>]]

pstops elabora un file PostScript generando un altro file in cui le pagine possono figurare ridotte, ingrandite, ruotate e sovrapposte. Lo scopo di pstops Õ anche quello di riorganizzare la sequenza di queste pagine, in modo piÛ libero rispetto a psbook.

Se il secondo file non viene indicato attraverso la riga di comando, il risultato viene emesso attraverso lo standard output; se non viene indicato nemmeno il primo, il file da elaborare viene tratto dallo standard input.

L'argomento piÛ delicato di pstops Õ quello che serve a definire le pagine: si tratta di un unico argomento che definisce come sono raggruppate, e per ogni raggruppamento definisce le nuove pagine che vengono generate. Per comprendere il senso di ciÐ occorre scomporre questo argomento in fasi successive. Per prima cosa viene definito come sono fatti i gruppi:

[<modulo>:]<definizione-pagine-del-gruppo>

Il modulo Õ un numero che esprime la quantitÞ di pagine da prendere in considerazione di volta in volta. Il valore minimo Õ di una sola pagina, e si tratta anche di quello predefinito nel caso non sia indicato espressamente. In base a questo raggruppamento, vengono definite delle pagine relative numerate a partire da 0, fino al valore del modulo meno uno. Ogni pagina relativa viene definita con la sintassi seguente:

[-]<n-relativo-pagina>[L][R][U][@<scala>][(<scostamento-orizzontale>,<scostamento-verticale>)]

In pratica, il numero relativo della pagina serve a specificare a quale pagina del modulo si fa riferimento. Questo numero potrebbe essere fatto precedere dal segno -, ma in tal caso si intende fare riferimento a raggruppamenti che partono dalle pagine finali del documento e scorrono verso quelle iniziali.

Le lettere L, R e U, servono rispettivamente a ottenere una rotazione a destra (di 90 gradi in senso orario), a sinistra (di 90 gradi in senso antiorario) e a rovesciare dall'alto in basso (rispetto al suo orientamento originale). Queste lettere possono essere usate in modo cumulativo, e di solito si combinano la L con la U, o la R con la U (combinare la L con la R non serve a nulla). Dopo queste lettere puÐ essere indicata una scala (preceduta dal simbolo @). Il valore che regola la scala Õ tale per cui 1 corrisponde al 100%, di conseguenza, per indicare delle riduzioni si useranno valori inferiori a 1 (utilizzando il punto come separatore decimale).

L'ultima parte della definizione della pagina serve a stabilire uno spostamento di questa sulla superficie del foglio finale che si vuole ottenere. I due numeri indicano uno spostamento orizzontale e verticale. L'unitÞ di misura predefinita Õ il punto tipografico, ma puÐ essere specificata un'unitÞ di misura piÛ conveniente: cm per i centimetri e in per i pollici. I valori sono sempre positivi, ma per sapere l'effetto che questi hanno (per determinare se lo spostamento Õ verso destra o sinistra, oppure in alto o in basso) occorre provare necessariamente, perchÈ tutto dipende dal tipo di rotazione che si stabilisce. In ogni caso, se si ruotano le pagine Õ indispensabile spostarle, altrimenti queste risultano collocate fuori dalla superficie finale.

Per mettere assieme piÛ pagine su uno stesso foglio, si usa il simbolo + per unirne le specifiche; per indicare le pagine da collocare su facciate finali successive, si usa una virgola (,) per unire assieme tali indicazioni.

A titolo di esempio, si osservi la definizione seguente con la quale si vogliono stampare due pagine A4, riducendole, su un'unica facciata A4.

2:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm)

Il numero 2 iniziale Õ il modulo di due pagine. Segue la definizione della prima pagina di questo raggruppamento, la numero 0, che viene ruotata di 90 gradi in senso antiorario (verso sinistra), viene ridotta al 70%, e viene anche sposta in orizzontale di 21 cm. La seconda pagina relativa (la numero 1) viene collocata nella stessa facciata finale, e questo lo si vede perchÈ Õ unita attraverso il simbolo +. La seconda pagina viene ruotata anch'essa di 90 gradi in senso antiorario, Õ ridotta nello stesso modo, e viene spostata orizzontalmente come la prima, ma anche verticalmente di 14,85 cm. Il risultato che si ottiene Õ una pagina A4 che deve essere rovesciata in senso orario per poter leggere le due pagine ridotte.

4:3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm),1R@0.7(0,29.75cm)+2R@0.7(0,14.85cm)

Questo nuovo esempio, simile al precedente, mostra la generazione di due facciate finali, in pratica un fronte-retro, dove nella prima si inseriscono le riduzioni della prima e della quarta pagina di un raggruppamento di quattro (4-1), e nella seconda facciata finale le riduzioni della seconda e della terza pagina del raggruppamento (2-3). Nella prima facciata, le pagine ridotte sono orientate verso sinistra, nella seconda sono orientate verso destra. In pratica, si ottiene una sequenza 4-1+2-3, orientata in modo da essere stampata correttamente con una stampante duplex.

Alcune opzioni

-w<larghezza>

Definisce l'ampiezza orizzontale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-h<altezza>

Definisce l'ampiezza verticale della carta del formato finale. Se il valore viene espresso senza l'indicazione dell'unitÞ di misura, si intende trattarsi di punti tipografici.

-p<formato>

In alternativa all'indicazione delle dimensioni del formato finale, si puÐ usare questa opzione per indicare direttamente il nome standard del formato finale. Se le dimensioni non vengono definite, si sottintende trattarsi di a4.

-d[<spessore>]

Con questa opzione si ottiene una cornice attorno alle pagine, con lo spessore indicato dall'argomento (in mancanza dell'unitÞ di misura, si intendono punti tipografici). Se lo spessore non viene specificato, si ottiene una linea di un punto.

-q

Durante l'elaborazione, viene emesso attraverso lo standard error l'elenco dei numeri di pagina che vengono elaborati. Se si utilizza questa opzione, se ne sopprime la segnalazione.

64.4.7 Esempi particolari

I programmi del pacchetto PSUtils sono potentissimi, ma anche complicati da usare. Alcuni esempi per comprendere come combinarli assieme dovrebbe essere di aiuto.

Molti degli esempi mostrati sono realizzati con comandi piuttosto lunghi. Qui vengono mostrati spezzati su piÛ righe, utilizzando la barra obliqua inversa (\) alla fine della riga da continuare, per riprendere il comando in quella successiva, cosË come si potrebbe fare con la shell Bash.

Stampante normale

Gli esempi mostrati qui sono fatti per ottenere file PostScript adatti alla stampa su una sola facciata alla volta.

psbook -s4 originale.ps | psnup -2 > mio_file.ps

Rielabora il file originale.ps generando una pagina ogni due di origine, e facendo in modo che il risultato possa essere stampato in fronte-retro con una stampante normale, secondo la sequenza mostrata nella figura 64.5.

pstops \

"4:3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm),1L@0.7(21cm,0)+2L@0.7(21cm,14.85cm)" \

originale.ps mio_file.ps

Come nell'esempio precedente, facendo uso di pstops. *2*

psbook -s4 originale.ps | pstops \

"4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2L@0.7(21cm,0)+3L@0.7(21cm,14.85cm)" \

> mio_file.ps

Esattamente come nell'esempio precedente, facendo uso di psbook e di pstops.

psbook -s4 originale.ps | psnup -2 | psselect -e > mio_file.ps

Come nel primo esempio, selezionando solo le pagine pari del risultato finale.

psbook -s4 originale.ps | psnup -2 | psselect -o -r > mio_file.ps

Come nell'esempio precedente, selezionando solo le pagine dispari del risultato finale, e invertendone l'ordine.

psbook originale.ps | psnup -2 > mio_file.ps

Rielabora il file originale.ps generando una pagina ogni due di origine, e facendo in modo che il risultato possa essere stampato in fronte-retro, ma a differenza del primo esempio, i fogli stampati andranno rilegati piegandoli tutti assieme, unendoli al centro.

psbook -s16 originale.ps | psnup -2 > mio_file.ps

Rielabora il file originale.ps generando una pagina ogni due di origine, a segnature di 4 fogli A4 da piegare a metÞ, e facendo in modo che il risultato possa essere stampato in fronte-retro con una stampante normale.

psbook -s16 originale.ps | pstops \

"4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2L@0.7(21cm,0)+3L@0.7(21cm,14.85cm)" \

> mio_file.ps

Come nell'esempio precedente.

Stampante duplex

Questi altri esempi sono fatti per ottenere file PostScript adatti alle stampanti duplex, che perÐ possono essere utilizzati anche con stampanti normali, ruotando opportunamente i fogli prima di reimmetterli nella stampante. Si veda la figura 64.7.

pstops \

"4:3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm),1R@0.7(0,29.75cm)+2R@0.7(0,14.85cm)" \

originale.ps mio_file.ps

Rielabora il file originale.ps generando una pagina ogni due di origine, e facendo in modo che il risultato possa essere stampato in fronte-retro con una stampante duplex, oppure una normale secondo la sequenza mostrata nella figura 64.7.

psbook -s4 originale.ps | pstops \

"4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2R@0.7(0,29.75cm)+3R@0.7(0,14.85cm)" \

> mio_file.ps

Esattamente come nell'esempio precedente.

psbook -s16 originale.ps | pstops \

"4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2R@0.7(0,29.75cm)+3R@0.7(0,14.85cm)" \

> mio_file.ps

Come nell'esempio precedente, ma ottenendo segnature di 4 fogli A4 da piegare a metÞ.

64.5 Riferimenti

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

Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini --  daniele @ pluto.linux.it


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

2.) Come si vede, il comando viene mostrato spezzato su due righe per un problema di spazio nella composizione tipografica. La barra obliqua inversa alla fine della prima riga, indica la continuazione. All'inizio della seconda riga appare il simbolo >, per sottolineare il fatto che si sta continuando un comando.


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