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


Capitolo 90.   Rielaborazione PostScript

Nel capitolo 89 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 servizio non sono perfetti e funzionano generalmente solo con file che rispettano alcune convenzioni, allo scopo di facilitare l'individuazione delle pagine del documento.

90.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 90.1. Movimento della carta in una stampante laser tipica.

figure/a2-sequenza-stampa-stampante

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, fronte e retro, quattro facciate ridotte alla metà della dimensione normale. Si osservi la figura 90.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.

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

figure/a2-sequenza-stampa-4x2

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

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

figure/a2-sequenza-stampa-4x2-bis

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, continuando così 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 90.4 aiuta a comprendere la cosa.

Figura 90.4. Sequenza per la stampa di quattro facciate su un foglio normale utilizzando stampanti duplex.

figure/a2-sequenza-stampa-4x2-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 90.5 mostra in che modo debbano essere reimmessi i fogli in questo caso.

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

figure/a2-sequenza-stampa-4x2-bis-duplex

90.1.1   Piega doppia

Si possono stampare su un solo figlio, fronte e retro, otto facciate ridotte; successivamente si può piegare e tagliare il foglio in modo da ottenere un libretto molto piccolo, in proporzione alla dimensione di partenza. In pratica, supponendo di partire da un foglio A4, si vuole arrivare a una dimensione simile al A6, che si ha proprio quando si piega due volte un foglio A4.

Figura 90.6. Un foglio piegato in quattro per rappresentare otto pagine ridotte.

foglio piegato in quattro

La figura 90.6 dovrebbe chiarire in che modo vada piegato il foglio e si intravede la sequenza delle pagine. La figura 90.7 mostra meglio la sequenza delle pagine ridotte, mostrando anche quando queste devono risultare capovolte.

Figura 90.7. Schema per stampare quando si intende piegare il foglio due volte.

schema di un foglio piegato in quattro

Naturalmente, volendo piegare assieme più fogli, la sequenza si complica ulteriormente, pur rimanendo questo il principio di funzionamento.

Le pagine piegate in questo modo, vanno tagliate nella parte alta, dopo la piega. Un libro stampato in questo modo, potrebbe essere rilegato ignorando il problema della pagine attaccate sul lato superiore, lasciando poi al lettore il compito di separarle con un tagliacarte.

90.2   PSUtils

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

Molti di questi programmi hanno in comune le opzioni che vengono elencate brevemente nella tabella 90.1.

Tabella 90.1. Opzioni comuni dei programmi di PSUtils.

Opzione Descrizione

-wlarghezza

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.

-haltezza

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.

-pformato

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.

-Wlarghezza

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.

-Haltezza

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.

-Pformato

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.

È il caso di sottolineare che le dimensioni della carta, quando devono essere fornite, possono essere espresse senza l'indicazione di un'unità di misura, facendo riferimento implicitamente a punti tipografici da 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; precisamente vengono accettate le parole chiave: a3, a4, a5, b5, letter, legal, tabloid, statement, executive, folio, quarto e 10x14.

90.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, 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.

Sono disponibili le opzioni comuni elencate nella tabella 90.1.

90.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, dove 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.

-ppagine

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 trattino basso (_), 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.

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

Sono disponibili le opzioni comuni elencate nella tabella 90.1; inoltre:

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

90.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; 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.

90.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, 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), mentre nella seconda facciata finale si inseriscono 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

Sono disponibili le opzioni -w, -h, -p e -q, come descritto nella tabella 90.1, a cui si aggiunge in particolare l'opzione -d:

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

90.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, facendo in modo che il risultato possa essere stampato in fronte-retro con una stampante normale, secondo la sequenza mostrata nella figura 90.3.

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.

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, 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à, 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 90.5.

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, 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 90.5.

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 quattro fogli A4 da piegare a metà.

pstops "8:4U@0.45(10cm,29.2cm)+3U@0.45(20.5cm,29.2cm)+<-'
`->7@0.45(0.5cm,0.5cm)+0@0.45(11cm,0.5cm), <-'
`->2U@0.45(10cm,29.2cm)+5U@0.45(20.5cm,29.2cm)+<-'
`->1@0.45(0.5cm,0.5cm)+6@0.45(11cm,0.5cm)" <-'
`->> mio_file.ps

Stampa in modo da ottenere otto pagine ridotte su un foglio A4 (fronte e retro), piegandolo due volte. La riduzione delle pagine è maggiore del necessario (le pagine ridotte sono più piccole) per garantire la presenza di margini sufficienti alla rilegatura.

pstops "16:8U@0.45(10cm,29.2cm)+7U@0.45(20.5cm,29.2cm)+<-'
`->15@0.45(0.5cm,0.5cm)+0@0.45(11cm,0.5cm), <-'
`->6U@0.45(10cm,29.2cm)+9U@0.45(20.5cm,29.2cm)+<-'
`->1@0.45(0.5cm,0.5cm)+14@0.45(11cm,0.5cm), <-'
`->10U@0.45(10cm,29.2cm)+5U@0.45(20.5cm,29.2cm)+<-'
`->13@0.45(0.5cm,0.5cm)+2@0.45(11cm,0.5cm), <-'
`->4U@0.45(10cm,29.2cm)+11U@0.45(20.5cm,29.2cm)+<-'
`->3@0.45(0.5cm,0.5cm)+12@0.45(11cm,0.5cm)" <-'
`->> mio_file.ps

Come nell'esempio precedente, piegando assieme due fogli A4.

90.3   Problemi di allineamento della stampa

Quando si gestisce un sistema di stampa basato sui filtri, partendo 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 ciò 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), assieme alle informazioni sulla distanza dai bordi, che permettono di vedere dove si trova il centro della pagina.

%!PS-Adobe-2.0
%%DocumentPaperSizes: a4
%%EndComments
%%EndProlog

%%Page: 1 1

% Verifica dell'allineamento della stampante per la carta A4.

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

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

% Spessore delle linee (1/50 di cm, pari a 0,2 mm).
1 50 div setlinewidth

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

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

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

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

% Misurazione del bordo superiore.
10.25  29.60  moveto  10.75  29.60  lineto stroke
10.25  29.50  moveto  10.75  29.50  lineto stroke
10.25  29.40  moveto  10.75  29.40  lineto stroke
10.25  29.30  moveto  10.75  29.30  lineto stroke
10.00  29.20  moveto  11.00  29.20  lineto stroke
10.25  29.10  moveto  10.75  29.10  lineto stroke
10.25  29.00  moveto  10.75  29.00  lineto stroke
10.25  28.90  moveto  10.75  28.90  lineto stroke
10.25  28.80  moveto  10.75  28.80  lineto stroke
10.00  28.70  moveto  11.00  28.70  lineto stroke
10.25  28.60  moveto  10.75  28.60  lineto stroke
10.25  28.50  moveto  10.75  28.50  lineto stroke
10.25  28.40  moveto  10.75  28.40  lineto stroke
10.25  28.30  moveto  10.75  28.30  lineto stroke
10.00  28.20  moveto  11.00  28.20  lineto stroke

/Helvetica findfont 00.30 scalefont setfont
11.20  29.10  moveto (0,5 cm) show
11.20  28.60  moveto (1,0 cm) show
11.20  28.10  moveto (1,5 cm) show

% Misurazione del bordo inferiore.
10.25  00.10  moveto  10.75  00.10  lineto stroke
10.25  00.20  moveto  10.75  00.20  lineto stroke
10.25  00.30  moveto  10.75  00.30  lineto stroke
10.25  00.40  moveto  10.75  00.40  lineto stroke
10.00  00.50  moveto  11.00  00.50  lineto stroke
10.25  00.60  moveto  10.75  00.60  lineto stroke
10.25  00.70  moveto  10.75  00.70  lineto stroke
10.25  00.80  moveto  10.75  00.80  lineto stroke
10.25  00.90  moveto  10.75  00.90  lineto stroke
10.00  01.00  moveto  11.00  01.00  lineto stroke
10.25  01.10  moveto  10.75  01.10  lineto stroke
10.25  01.20  moveto  10.75  01.20  lineto stroke
10.25  01.30  moveto  10.75  01.30  lineto stroke
10.25  01.40  moveto  10.75  01.40  lineto stroke
10.00  01.50  moveto  11.00  01.50  lineto stroke

/Helvetica findfont 00.30 scalefont setfont
11.20  00.30  moveto (0,5 cm) show
11.20  00.80  moveto (1,0 cm) show
11.20  01.30  moveto (1,5 cm) show

% Misurazione del bordo sinistro.
00.10  14.60  moveto  00.10  15.10  lineto stroke
00.20  14.60  moveto  00.20  15.10  lineto stroke
00.30  14.60  moveto  00.30  15.10  lineto stroke
00.40  14.60  moveto  00.40  15.10  lineto stroke
00.50  14.35  moveto  00.50  15.35  lineto stroke
00.60  14.60  moveto  00.60  15.10  lineto stroke
00.70  14.60  moveto  00.70  15.10  lineto stroke
00.80  14.60  moveto  00.80  15.10  lineto stroke
00.90  14.60  moveto  00.90  15.10  lineto stroke
01.00  14.35  moveto  01.00  15.35  lineto stroke
01.10  14.60  moveto  01.10  15.10  lineto stroke
01.20  14.60  moveto  01.20  15.10  lineto stroke
01.30  14.60  moveto  01.30  15.10  lineto stroke
01.40  14.60  moveto  01.40  15.10  lineto stroke
01.50  14.35  moveto  01.50  15.35  lineto stroke

/Helvetica findfont 00.30 scalefont setfont
01.30  15.50  moveto (1,5 cm) show

% Misurazione del bordo destro.
20.90  14.60  moveto  20.90  15.10  lineto stroke
20.80  14.60  moveto  20.80  15.10  lineto stroke
20.70  14.60  moveto  20.70  15.10  lineto stroke
20.60  14.60  moveto  20.60  15.10  lineto stroke
20.50  14.35  moveto  20.50  15.35  lineto stroke
20.40  14.60  moveto  20.40  15.10  lineto stroke
20.30  14.60  moveto  20.30  15.10  lineto stroke
20.20  14.60  moveto  20.20  15.10  lineto stroke
20.10  14.60  moveto  20.10  15.10  lineto stroke
20.00  14.35  moveto  20.00  15.35  lineto stroke
19.90  14.60  moveto  19.90  15.10  lineto stroke
19.80  14.60  moveto  19.80  15.10  lineto stroke
19.70  14.60  moveto  19.70  15.10  lineto stroke
19.60  14.60  moveto  19.60  15.10  lineto stroke
19.50  14.35  moveto  19.50  15.35  lineto stroke

/Helvetica findfont 00.30 scalefont setfont
19.30  15.50  moveto (1,5 cm) show

showpage
%%Trailer
%%EOF

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 90.8, ma si vede meglio nella figura successiva: 90.9.

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

                      : : 0,5 cm
                      : :
           .---------------------.
           |                     |
           |     \      |      / |
           |      \     |     /  |
           |       \    |    /   |
           |        \   |   /    |
           |         \  |  /     |
 - - - - - |          \ | /      | - - - - -
 _ _ _ _ _ |     ______\:/______ | _ _ _ _ _ 1 cm
           |           /:\       |          
           |          / | \      |
           |         /  |  \     |
           |        /   |   \    |
           |       /    |    \   |
           `---------------------'
                      : :         

Figura 90.9. Riduzione dell'immagine che viene stampata su un foglio A4.

pagina di prova ridotta

Per misurare lo scostamento della stampa rispetto alla carta, sono disponibili dei riferimenti su ogni bordo; in alternativa 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.

Il file per la verifica dell'allineamento, così come è stato proposto, può essere riallineato dai programmi di PSUtils, verificando così il risultato degli spostamenti che vengono introdotti. Se questo non è desiderabile, per evitare che l'immagine sia riallineabile, occorre eliminare i commenti iniziali:

%%DocumentPaperSizes: a4
%%EndComments
%%EndProlog

%%Page: 1 1

In tal caso può essere eliminato anche il commento finale:

%%Trailer

Seguendo i valori dell'esempio, si può utilizzare pstops nel modo seguente, tenendo conto che il file deve essere fornito attraverso lo standard input, mentre 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=- -

90.4   Riferimenti

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

1) PSUtils   licenza speciale formulata in modo poco preciso


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

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