[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Un sistema di filtri di stampa ben organizzato deve passare per la generazione di un formato intermedio (prima di quello finale adatto alla stampante) per poter gestire l'impostazione della stampa in modo completamente trasparente. La figura 141.1 mostra questa idea.
Figura 141.1. Stampa attraverso un formato intermedio uniforme.
|
L'esistenza di Ghostscript, descritto meglio nel capitolo 142, giustifica la scelta del formato PostScript come standard per il formato intermedio di stampa, benché questo formato sia proprietario. L'utilità di questo passaggio obbligato sta anche nel fatto che prima della conversione finale, il formato PostScript può essere rimaneggiato, per adattarlo a esigenze particolari, compresa la riduzione o l'ingrandimento. Tuttavia, in questa situazione, anche i file di testo vanno rielaborati in modo da generare prima un file PostScript. A questo scopo sono stati realizzati programmi come A2ps.
A2ps (1) è un programma per generare file PostScript a partire, prevalentemente, da file di testo. Gli obiettivi di chi sviluppa A2ps vanno oltre tale livello; tuttavia, questa è la sua funzionalità più importante.
A2ps è controllato da un file di configurazione generale, /etc/a2ps.cfg
, al quale può essere affiancato un file personale, ~/.a2ps/a2psrc
, e anche uno locale (nella directory corrente), .a2psrc
. Pur senza approfondire la configurazione di A2ps, vale la pena di descrivere brevemente come si compongono questi file. Il simbolo # rappresenta l'inizio di un commento che termina alla fine della riga; le righe bianche e quelle vuote vengono ignorate; le altre righe sono direttive nella forma:
tipo_dichiarazione: dichiarazione |
Il file di configurazione generale che di solito viene fornito assieme al programma (/etc/a2ps.cfg
) dovrebbe essere adatto alla maggior parte delle situazioni e in generale non serve altro per utilizzare A2ps. In ogni caso, questo file è commentato molto bene e la documentazione che fornisce A2ps è molto dettagliata (info a2ps).
A2ps si utilizza in pratica attraverso l'eseguibile a2ps, il cui scopo è quello di ricevere uno o più file in modo da poter generare una trasformazione adeguata in formato PostScript:
a2ps [opzioni] [file...] |
I file possono essere indicati attraverso la riga di comando e in mancanza della loro indicazione viene usato lo standard input. Lo scopo di A2ps è quello di generare un file PostScript, secondo quanto definito nella configurazione, oppure dalle opzioni della riga di comando. In generale, il risultato viene inviato alla stampa attraverso il comando lpr, come si può vedere dalla direttiva seguente, che appare generalmente nel file di configurazione globale, con la quale si dichiara l'invio dello standard output verso tale comando di stampa:
|
Di solito non c'è ragione di cambiare questo comportamento di A2ps, ma è importante sapere che non è sempre necessariamente così.
Il fatto che A2ps sia configurato in questo modo, lo rende simile a un comando di stampa alternativo a quello normale, per cui, il comando
$
lpr pippo
[Invio]
viene sostituito direttamente dal comando
$
a2ps pippo
[Invio]
che in più si occupa di impaginare meglio il testo.
A2ps offre molte possibilità nel modo di impaginare il testo e non si limita semplicemente a consentire la stampa ridotta di più pagine virtuali su una facciata singola. È molto importante anche la sua capacità di evidenziare il testo in funzione del suo contenuto, cosa che diventa molto utile per la lettura dei sorgenti di un programma. La tabella 141.4 riepiloga brevemente alcune opzioni più importanti che possono essere usate nella riga di comando dell'eseguibile a2ps, opzioni che possono essere anche incluse nella configurazione attraverso direttive nella forma:
Options: opzione_della_riga_di_comando |
Per esempio, per selezionare il formato di carta A4 si può utilizzare l'opzione --medium=A4 nella riga di comando, oppure la direttiva seguente nel file di configurazione:
|
Tabella 141.4. Alcune opzioni di A2ps.
|
La tabella 141.5 riporta invece l'elenco di alcuni nomi di stili di evidenziamento della stampa, in funzione del contenuto del file di testo che si intende stampare. Questi nomi si usano con l'opzione -E.
Tabella 141.5. Alcuni nomi che definiscono uno stile nel modo di evidenziare il testo. |
La tabella 141.6 riporta l'elenco delle sigle che si possono utilizzare con l'opzione -X per definire la codifica con cui è scritto il testo da convertire. Si osservi che è probabile non sia disponibile una codifica UTF-8.
Tabella 141.6. Alcuni nomi che identificano la codifica del testo. |
Prima di passare all'elenco di esempi comuni, vale la pena di proporre il comando che potrebbe essere usato in un filtro di stampa per gestire i file di testo, senza lasciare che questi vengano inviati direttamente alla stampante:
|
In questo modo si specifica che: si vuole ottenere una pagina virtuale per ogni pagina reale; il formato della carta è A4; il testo deve utilizzare un carattere da 11 punti (è la dimensione ottimale per stampare 80 colonne); non si vogliono bordi attorno alla pagina virtuale; non si vuole alcuna intestazione; il risultato in PostScript deve essere emesso attraverso lo standard output.
Volendo intervenire nella configurazione di Magicfilter, si potrebbe sostituire la solita direttiva:
|
La nuova direttiva potrebbe essere come quella seguente:
|
Segue la descrizione di alcuni esempi. Questi esempi fanno riferimento alla configurazione tipica di A2ps.
$
a2ps pippo
[Invio]
Mette in stampa il file pippo
, dopo averlo convertito in PostScript. In condizioni normali, si ottiene la stampa di due pagine virtuali per foglio reale, con un orientamento orizzontale.
$
a2ps -2 pippo
[Invio]
Probabilmente, si tratta della stessa cosa dell'esempio precedente, con l'indicazione esplicita della richiesta di stampare due pagine virtuali per foglio.
$
a2ps -2 -P laser pippo
[Invio]
Come nell'esempio precedente, indicando espressamente la scelta della coda di stampa denominata laser.
$
a2ps -2 -o pippo.ps pippo
[Invio]
Come nell'esempio precedente, ma senza stampare: viene generato il file pippo.ps
.
$
a2ps -2 -R pippo
[Invio]
Invia alla stampa il solito file, dopo averlo convertito in PostScript, in modo tale da ottenere due pagine virtuali, ma con un orientamento verticale. In questo modo, il testo è più piccolo e ogni pagina virtuale contiene un numero molto elevato di righe.
$
man 1 a2ps | a2ps -2 -m
[Invio]
Stampa la pagina di manuale a2ps(1), impaginandola nel modo migliore per questo tipo di informazioni.
$
a2ps -2 -Esh /etc/profile
[Invio]
Stampa il file /etc/profile
, utilizzando un sistema di evidenziamento ottimale per gli script di shell Bourne o derivate.
|
Lo script permette di generare un file PostScript attraverso lo standard output a partire da un file di testo normale, fornito attraverso lo standard input. Per la precisione, si vuole ottenere una sola colonna verticale, con un margine simmetrico (nel caso di carta A4), senza scritte o bordi aggiuntivi, garantendo 80 colonne e 66 righe per pagina.
|
Come nell'esempio precedente, ma senza porre un limite alla quantità di righe per pagina, che così possono essere anche di più delle 66 standard.
|
L'esempio mostra l'ultima istruzione di uno script di Magicfilter, allo scopo di stampare automaticamente del testo normale aggiungendo un po' di margini, come già mostrato nell'esempio precedente.
|
Si tratta di un altro script, realizzato in modo da gestire file di testo fino a 136 colonne, in orizzontale. Non tutte le opzioni sono indispensabili.
Enscript (2) è un programma per generare file PostScript e altri formati, a partire da file di testo.
Enscript prevede una serie di file di configurazione, ~/.enscriptrc
, /etc/enscriptsite.cfg
e /etc/enscript.cfg
, dove il primo è quello personale di ogni utente, il secondo è un primo file di configurazione generale, mentre il terzo è un file di configurazione di sistema. L'ordine in cui sono indicati questi file, rappresenta anche l'ordine di precedenza che hanno le direttive al loro interno.
Senza approfondire la configurazione di Enscript, vale la pena di descrivere brevemente come si compongono questi file. Il simbolo # rappresenta l'inizio di un commento che termina alla fine della riga; le righe bianche e quelle vuote vengono ignorate; le altre righe sono direttive nella forma:
tipo_dichiarazione: dichiarazione |
Il file di configurazione generale che di solito viene fornito assieme al programma (/etc/enscript.cfg
) dovrebbe essere adatto alla maggior parte delle situazioni. In ogni caso, questo file è commentato molto bene e la documentazione disponibile è molto dettagliata (enscript(1)).
Enscript si utilizza in pratica attraverso l'eseguibile enscript, il cui scopo normale è quello di comporre in formato PostScript uno o più file indicati come argomento:
enscript [opzioni] [file...] |
I file possono essere indicati attraverso la riga di comando, ma in mancanza di questa indicazione viene usato lo standard input. Lo scopo di Enscript è quello di generare un file PostScript, o un altro tipo di formato finale, ma il modo in cui questo file viene restituito dipende dalla configurazione, oppure dalle opzioni della riga di comando. In generale, il risultato viene inviato alla stampa attraverso il comando lpr, in base alla direttiva seguente:
|
Di solito non c'è motivo di cambiare questo comportamento di Enscript, ma è importante sapere che non è sempre necessariamente così. In tal modo, Enscript può essere usato come se fosse un comando di stampa, dove uno qualunque dei due comandi seguenti, si traduce direttamente nella stampa del file pippo
:
$
enscript pippo
[Invio]
$
cat pippo | enscript
[Invio]
La configurazione di Enscript prevede anche l'indicazione esplicita del comando di stampa e della coda di stampa a cui inviare il file generato dalla composizione. Generalmente non è necessario preoccuparsi di questo fatto, dal momento che un sistema di stampa configurato correttamente è in grado di gestire tutto attraverso la coda predefinita. Tuttavia è bene tenere in considerazione le direttive necessarie a tale definizione:
|
Enscript offre molte possibilità nel modo di impaginare il testo, senza limitarsi a consentire la stampa ridotta di più pagine virtuali su una facciata singola. È molto importante anche la sua capacità di evidenziare il testo in funzione del suo contenuto, per facilitare la lettura dei sorgenti di un programma. La tabella 141.16 riepiloga brevemente alcune opzioni più importanti che possono essere usate nella riga di comando dell'eseguibile enscript, opzioni che possono essere anche incluse automaticamente attraverso la variabile di ambiente ENSCRIPT, nello stesso modo in cui apparirebbero nella riga di comando.
Tabella 141.16. Alcune opzioni di Enscript.
|
La tabella 141.17 riporta invece l'elenco di alcuni nomi di stili di evidenziamento della stampa, in funzione del contenuto del file di testo che si intende stampare. Questi nomi si usano con l'opzione -E e possono essere elencati completamente con l'opzione --help-pretty-print.
Tabella 141.17. Alcuni nomi che definiscono uno stile nel modo di evidenziare il testo. |
La tabella 141.18 riporta l'elenco delle sigle che si possono utilizzare con l'opzione -X per definire la codifica con cui è scritto il testo da convertire. Si osservi che potrebbe non essere disponibile la codifica UTF-8.
Tabella 141.18. Alcuni nomi che identificano la codifica del testo. |
Prima di passare all'elenco di esempi comuni, vale la pena di proporre il comando che potrebbe essere usato in un filtro di stampa per gestire i file di testo, senza lasciare che questi vengano inviati direttamente alla stampante:
|
In questo modo si specifica che: si vuole ottenere una pagina virtuale per foglio; il formato della carta è A4 (si osservi l'uso del minuscolo); il testo deve utilizzare un carattere largo 9,1 punti e alto 9,5 punti (è la dimensione ottimale per stampare 80 colonne e 66 righe nello spazio disponibile, all'interno dei margini indicati); non si vogliono bordi attorno alla pagina virtuale, ma si lascia un margine di 72 punti; non si vuole alcuna intestazione; il risultato in PostScript deve essere emesso attraverso lo standard output.
Volendo intervenire nella configurazione di Magicfilter, si potrebbe sostituire la solita direttiva:
|
La nuova direttiva potrebbe essere come quella seguente:
|
Gli esempi che vengono mostrati fanno riferimento alla configurazione tipica di Enscript.
$
enscript pippo
[Invio]
Mette in stampa il file pippo
, dopo averlo convertito in PostScript.
$
enscript -2 pippo
[Invio]
Come nell'esempio precedente, su due colonne, ma senza cambiare la dimensione del carattere.
$
enscript -2 -f Courier@5 pippo
[Invio]
Come nell'esempio precedente, su due colonne, con un carattere molto piccolo.
$
enscript -2 -r -P laser pippo
[Invio]
Mette in stampa il file pippo
, su due colonne orientando la carta in modo orizzontale. Richiede specificatamente l'uso della coda di stampa laser.
$
enscript -2 -r -o pippo.ps pippo
[Invio]
Come nell'esempio precedente, ma senza stampare: viene generato il file pippo.ps
.
$
man 1 enscript | enscript -2 -r -l
[Invio]
Stampa la pagina di manuale enscript(1), in orizzontale, su due colonne, impaginandola nel modo migliore per questo tipo di informazioni.
$
enscript -2 -r -Esh /etc/profile
[Invio]
Stampa il file /etc/profile
, in orizzontale, su due colonne, utilizzando un sistema di evidenziamento ottimale per gli script di shell Bourne o derivate.
|
Lo script permette di generare un file PostScript attraverso lo standard output a partire da un file di testo normale, fornito attraverso lo standard input. Per la precisione, si vuole ottenere una sola colonna verticale, con un margine simmetrico di 72 punti (circa un pollice), senza scritte o bordi aggiuntivi, con un carattere di 9,5 punti (ciò dovrebbe garantire la stampa di 80 colonne su un foglio A4 normale).
|
Come nell'esempio precedente, ma senza porre un limite alla quantità di righe per pagina, che così possono essere anche di più delle 66 standard.
|
L'esempio mostra l'ultima istruzione di uno script di Magicfilter, allo scopo di stampare automaticamente del testo normale aggiungendo un po' di margini, come già mostrato nell'esempio precedente.
|
Si tratta di un altro script, realizzato in modo da gestire file di testo fino a 136 colonne, in orizzontale, con margini da 72 punti. In questo senso, il carattere è stato scelto per riempire in modo ottimale lo spazio.
Mpage (3) è un programma per generare file PostScript a partire da file di testo o da altri file PostScript. In generale, Mpage è utile per la prima di queste funzionalità, dal momento che la raccolta PSUtils è molto più adatta per la rielaborazione di file PostScript.
Sotto questo punto di vista, Mpage svolge un compito simile a quello di A2ps, in generale anche meno preciso; tuttavia Mpage offre una semplicità che alle volte manca all'altro. Per cominciare, Mpage non prevede alcuna configurazione e tutte le indicazioni gli devono essere fornite attraverso la riga di comando; è previsto che il testo in ingresso utilizzi la codifica ISO 8859-1; inoltre, il risultato dell'elaborazione di Mpage è diretto verso lo standard output e non alla coda di stampa predefinita.
mpage [opzioni] [file...] |
L'eseguibile mpage è tutto ciò che compone questo programma e, come si vede, i file da elaborare possono essere indicati sulla riga di comando, altrimenti viene utilizzato lo standard input. La tabella 141.26 elenca alcune delle opzioni disponibili.
Tabella 141.26. Alcune opzioni di Mpage.
|
Nella tabella, la sintassi delle opzioni -m e -M è stata indicata in modo approssimativo. Si riferiscono a dei margini per il foglio, oppure per la pagina virtuale: le lettere «l», «r», «t», e «b», si riferiscono rispettivamente al margine sinistro, destro, superiore e inferiore. Se si indica un gruppo di lettere, si intende che il margine indicato si deve riferire alle posizioni corrispondenti; se non si indicano lettere, il margine vale per tutti i lati del foglio. Per esempio, -m20 indica un margine di 20 punti per tutti i lati, mentre -m20lr assieme a -m10tb richiede un margine di 20 punti per i margini sinistro e destro, mentre richiede solo 10 punti per i margini superiore e inferiore.
Prima di passare all'elenco di esempi comuni, vale la pena di proporre il comando che potrebbe essere usato in un filtro di stampa per gestire i file di testo, senza lasciare che questi vengano inviati direttamente alla stampante:
|
In questo modo si specifica che: si vuole ottenere una pagina virtuale per foglio; il formato della carta è A4; devono essere lasciati 72 punti per i margini del foglio (sono tutti uguali); il testo deve essere organizzato in modo tale che si possano stampare 80 colonne per 66 righe (il formato tradizionale per i file di testo e anche per la composizione delle pagine di manuale); non si vogliono bordi attorno alla pagina virtuale.
Volendo intervenire nella configurazione di Magicfilter, si potrebbe sostituire la solita direttiva:
|
La nuova direttiva potrebbe essere come quella seguente:
|
Segue la descrizione di alcuni esempi.
$
mpage -bA4 -2 pippo | lpr
[Invio]
Invia alla stampa il file pippo
dopo averlo trasformato in PostScript in modo tale che il testo si legga in due pagine virtuali contenute nel foglio fisico finale (il formato finale della carta è stato specificato esplicitamente in A4).
$
mpage -bA4 -2 pippo > pippo.ps
[Invio]
Come nell'esempio precedente, ma invece di inviare il file alla stampa, viene generato il file pippo.ps
.
$
mpage -bA4 -2 -o pippo > pippo.ps
[Invio]
Come nell'esempio precedente, togliendo i bordi attorno alle pagine virtuali.
$
man 1 mpage | mpage -bA4 -2 -o -W80 -L66 | lpr
[Invio]
Invia alla stampa il risultato della ricomposizione della pagina di manuale mpage(1), dopo averla organizzata in due pagine virtuali per foglio, avendo stabilito la dimensione del testo nelle pagine virtuali di 80 colonne per 66 righe.
|
Lo script permette di generare un file PostScript attraverso lo standard output, a partire da un file di testo normale, fornito attraverso lo standard input. Per la precisione, si vuole ottenere una sola colonna verticale, con un margine simmetrico (nel caso di carta A4), senza scritte o bordi aggiuntivi, garantendo 80 colonne e 66 righe per pagina.
|
L'esempio mostra l'ultima istruzione di uno script di Magicfilter, allo scopo di stampare automaticamente del testo normale aggiungendo un po' di margini, come già mostrato nell'esempio precedente.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
3) Mpage software non libero: non ammette la modifica
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome uniformita_del_sistema_di_stampa_da_testo_a_postscript.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]