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*
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 |
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 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).
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.
|
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 |
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) |
Nome | Descrizione |
pdfwrite | PDF (Portable Document Format) |
psmono | PostScript 1, monocromatico, bitmap |
|
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.
|
Disabilita l'invito e la pausa alla fine di ogni pagina.
|
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 |
|
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.
-
$
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.
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 è 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.
|
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).
|
Permette di passare a Ghostscript l'indicazione sulla dimensione della carta in modo esplicito.
|
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.
[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.
È un programma che facilita la visualizzazione di file PostScript all'interno dell'ambiente grafico X attraverso una gestione automatizzata e semplificata di Ghostscript.
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 seguenti possibilità.
Zoom:
facendo un clic con uno dei tasti del mouse quando il cursore si trova nella zona in cui si visualizza il documento, si ottiene uno zoom locale. Con il primo tasto si ha uno zoom piccolo, con il secondo tasto si ottiene uno zoom medio, con il terzo si ottiene lo zoom 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 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.
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 è un programma derivato da Ghostview con lo stesso scopo, ma con un'interfaccia grafica più comoda e intuitiva.
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).
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:
l'adattamento delle dimensioni del foglio;
l'estrazione di pagine in un documento a parte;
la fusione di file diversi;
la modifica nella sequenza delle pagine;
l'unione di più pagine in un solo foglio.
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. |
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'.
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.
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.
|
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.
|
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.
|
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
.
|
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.
|
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.
|
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
.
|
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.
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
che può essere usata congiuntamente a -
p
(pagine pari) oppure -
e
(pagine dispari).
-
o
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. |
|
Seleziona solo le pagine pari.
|
Seleziona solo le pagine dispari.
|
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.
|
Con questa opzione, le pagine estratte vengono organizzate in ordine inverso rispetto a quello di origine.
|
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.
$
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
.
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 |
|
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.
|
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.
|
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
.
|
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.
|
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.
|
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
.
|
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.
|
Un trattino seguito da un numero indica la quantità di pagine che si vogliono unire in un'unica pagina finale. Per esempio,
fa in modo che su una pagina finale siano unite assieme due pagine di quelle originali, ridotte opportunamente.
-
2
$
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
.
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.
|
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.
|
L'opzione
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.
-
s
$
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.
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:
[
|
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.
|
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.
|
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.
|
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
.
|
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.
|
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.
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.
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.
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à.
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
---------------------------
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.