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


73. Rielaborazione PostScript

Nel capitolo 72 si è accennato alla struttura di un file PostScript, e al fatto che il suo contenuto possa essere riadattato. Per queste rielaborazioni vengono in aiuto diversi programmi, in particolare la raccolta denominata PSUtils (PostScript Utilities).

Attraverso la rielaborazione di un file PostScript, si potrebbe ottenere:

Purtroppo, questi programmi di utilità non sono perfetti, e generalmente funzionano solo con file che rispettano fedelmente le specifiche PostScript di Adobe.

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

50.jpg

Figura 73.1: 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 solo foglio quattro facciate ridotte alla metà della dimensione normale. Si osservi la figura 73.2; rappresenta la sequenza necessaria per la stampa corretta di quattro facciate su un solo 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.

51.jpg

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

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

52.jpg

Figura 73.3: Sequenza pratica per la stampa di quattro facciate su un foglio normale, utilizzando stampanti normali.

Se la stampa supera le quattro 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 quattro facciate su un foglio unico, le cose si complicano; in pratica, le due facciate ridotte che vanno collocate nel retro del foglio, devono essere rovesciate. Forse, la figura 73.4 aiuta a comprendere la cosa.

53.jpg

Figura 73.4: Sequenza per la stampa di quattro 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 73.5 mostra in che modo debbano essere reimmessi i fogli in questo caso.

54.jpg

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

73.2 PSUtils

La raccolta di programmi di utilità più importante per la rielaborazione dei file PostScript è PSUtils. Nelle sezioni seguenti viene descritto il funzionamento dei suoi componenti più importanti.

È il caso di sottolineare che le 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'.

73.2.1 $ 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.

73.2.2 $ 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 dal numero uno. 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 trattino singolo (`-'). 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'.

73.2.3 $ 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 quattro 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'.

73.2.4 $ 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 quattro 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 (segnature) di un solo foglio.

I gruppi di pagine possono essere di dimensioni maggiori, precisamente si tratta di multipli di quattro, 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 gruppo unico per tutte le pagine del file originale. Il valore minimo è quattro, e può assumere solo un valore multiplo a quattro.

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.

73.2.5 $ 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 argomento singolo 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 zero, 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 il numero uno corrisponde al 100%, di conseguenza, per indicare delle riduzioni si useranno valori inferiori all'unità (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 due iniziale è il modulo di due pagine. Segue la definizione della prima pagina di questo raggruppamento, con il numero zero, che viene ruotata di 90 gradi in senso antiorario (verso sinistra), viene ridotta al 70%, e viene anche spostata in orizzontale di 21 cm. La seconda pagina relativa (con il numero uno) 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.

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

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

pstops (segue)
  "4:3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm),1L@0.7(21cm,0)+2L@0.7(21cm,14.85cm)" (segue)
  originale.ps mio_file.ps

Come nell'esempio precedente, facendo uso di `pstops'.

psbook -s4 originale.ps | pstops (segue)
  "4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2L@0.7(21cm,0)+3L@0.7(21cm,14.85cm)" (segue)
  > 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 quattro 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 (segue)
  "4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2L@0.7(21cm,0)+3L@0.7(21cm,14.85cm)" (segue)
  > 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 73.5.

pstops (segue)
  "4:3L@0.7(21cm,0)+0L@0.7(21cm,14.85cm),1R@0.7(0,29.75cm)+2R@0.7(0,14.85cm)" (segue)
  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 73.5.

psbook -s4 originale.ps | pstops (segue)
  "4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2R@0.7(0,29.75cm)+3R@0.7(0,14.85cm)" (segue)
  > mio_file.ps

Esattamente come nell'esempio precedente.

psbook -s16 originale.ps | pstops (segue)
  "4:0L@0.7(21cm,0)+1L@0.7(21cm,14.85cm),2R@0.7(0,29.75cm)+3R@0.7(0,14.85cm)" (segue)
  > mio_file.ps

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

73.3 Problemi di allineamento della stampa

Quando si gestisce un sistema di stampa basato sui filtri, e in particolare si parte da un formato uniforme PostScript, che poi viene convertito nel modo più adatto alla propria stampante, manca la possibilità di intervenire nella regolazione fine di questa, al contrario di quello che si può fare di solito con alcuni sistemi operativi proprietari. Il problema più grosso sta nella correzione degli errori di allineamento che potrebbero essere introdotti dalla stampante, spesso a causa dall'incapacità di stampare al di fuori di un certo margine minimo. Il testo seguente è un file PostScript, in formato A4, che serve a stampare quattro linee (una verticale, una orizzontale e due oblique) che permettono di vedere dove si trova il centro della pagina. Piegando il foglio che si ottiene si può misurare (con un righello) lo sfasamento orizzontale e verticale della stampa.

%!
% Verifica dell'allineamento della stampante per la carta A4.
% Le linee che vengono disegnate, non possono essere spostate attraverso
% i programmi comuni come PSUtils.

% Definizione dell'unità «cm».
/cm { 28.34645 mul } bind def

% Servirebbe a spostare il disegno.
%0 cm dup translate

% Definizione dell'utilizzo dell'unità «cm».
1 cm dup scale

% Spessore delle linee (1/10 di cm).
1 5 cm div setlinewidth

newpath
	% Traccia una linea obliqua ascendente.
	0      0    moveto
	21    29.7  lineto

	% Traccia una linea obliqua discendente.
	0     29.7  moveto
	21    0     lineto

	% Traccia una linea verticale al centro.
	10.5  29.7  moveto
	10.5    0   lineto

	% Traccia una linea orizzontale al centro.
	0     14.85 moveto
	21    14.85 lineto
stroke

showpage

Inviando questo file al sistema di stampa, che si presume sia predisposto con un filtro basato su Ghostscript, si potrebbe osservare un risultato simile a quello mostrato nella figura 73.6.

                      : : 0,5 cm
                      : :
           +---------------------+
           |                     |
	   |     \      |      / |
	   |      \     |     /  |
	   |       \    |    /   |
	   |        \   |   /    |
	   |         \  |  /     |
 - - - - - |          \ | /      | - - - - -
 _ _ _ _ _ |     ______\|/______ | _ _ _ _ _ 1 cm
	   |           /|\       |          
	   |          / | \      |
	   |         /  |  \     |
	   |        /   |   \    |
	   |       /    |    \   |
	   +---------------------+
                      : :         

Figura 73.6: Risultato ipotetico della stampa per la verifica dell'allineamento: la stampa risulta più bassa di 1 cm e più a destra di 0,5 cm.

Per misurare lo scostamento della stampa rispetto alla carta, si piega il foglio in quattro, e si vede dove sta il centro. Nel caso dell'esempio, il centro è più a destra e più in basso, delle misure che sono state indicate. Per risolvere il problema, si può inserire un'elaborazione ulteriore nei filtri di stampa, attraverso l'aiuto di `pstops'.

È importante osservare che il file per la verifica dell'allineamento, così come è stato proposto, non può essere riallineato dai programmi di PSUtils. Questo garantisce che l'errore che si stampa sia quello effettivo.

Seguendo i valori dell'esempio, si può utilizzare `pstops' nel modo seguente, tenendo conto che il file deve essere fornito attraverso lo standard input, e il risultato si ottiene dallo standard output:

/usr/bin/pstops -q "1:0@1.0(-0.5cm,1cm)"

Per `pstops': uno spostamento a destra è positivo; uno spostamento a sinistra è negativo; uno spostamento in basso è negativo; uno spostamento in alto è positivo. Questo serve a chiarire gli argomenti indicati nell'esempio

Per fare un esempio più realistico, nel caso si utilizzi Magicfilter, considerato che di solito le direttive per i file PostScript sono simili a quella che si vede qui,

0	%!		filter	\
    /usr/bin/gs  -q -dSAFER -dNOPAUSE -r300 -sDEVICE=ljet4 -sOutputFile=- -

è sufficiente aggiungere `pstops' alla catena:

0	%!		filter				\
    /usr/bin/pstops -q "1:0@1.0(-0.5cm,1cm)"		\
    | /usr/bin/gs  -q -dSAFER -dNOPAUSE -r300 -sDEVICE=ljet4 -sOutputFile=- -

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

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


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