v1.8, 2003-06-22
Questo è il Printing HOWTO, una raccolta di informazioni su come generare, visualizzare un'anteprima, stampare e spedire via fax qualunque documento sotto GNU/Linux. Quasi tutte le informazioni sono ugualmente applicabili per quegli utenti di software libero che usino altri sistemi operativi Unix-like.
Traduzione a cura di Elisabetta Galli, <lab (at) kkk dot it>
.
if
per una stampante remota con il vecchio
LPDIl Printing HOWTO contiene tutto ciò che serve sapere per configurare il servizio di stampa di una GNU/Linux box. Il destino ha voluto che il tutto fosse leggermente più complicato rispetto al sistema punta-e-clicca di Microsoft ed Apple, ma anche più flessibile e certamente più facile da amministrare per reti estese.
Questo documento è strutturato in maniera tale da permettere alla maggior parte degli utenti di leggere solo la prima metà. La maggior parte delle informazioni più oscure e variabili a seconda delle situazioni si trovano nella seconda metà, e sono facilmente rintracciabili nell'indice generale, considerando che alcune informazioni necessarie per molti utenti si trovano nelle sezioni 10 o 11.
Chi trovasse utile questo documento o il sito linuxprinting.org, consideri la possibilità di comprare qualcosa (cartucce, per esempio) tramite i link di riferimento sul sito; tali acquisti sosterranno questo sforzo.
Il sito web linuxprinting.org è il posto migliore dove trovare l'ultima versione di questo documento (NdT: in lingua inglese); ovviamente viene distribuito anche da tldp.org, e dal vostro amichevole mirror LDP.
Si cercherà di usare una terminologia universale in tutto il documento, così che gli utenti di tutti i sistemi liberi Unix-like, e perfino gli utilizzatori di software libero su sistemi non Unix-like, possano beneficiarne. Sfortunatamente esistono molti termini utili ma ambigui e molti termini difficili ma non ambigui, quindi, per chiarezza, qui si può trovare un rapido glossario:
Unix è un sistema operativo sviluppato presso i laboratori Bell da svariati ricercatori. Diversi sistemi operativi, in gran parte commerciali, sono basati su questo codice e sono compresi nel nome Unix.
Un*x è una parola difficile usata per fare riferimento ad ogni sistema operativo Unix-like. Un sistema operativo Unixlike fornisce, come API nativa, qualcosa di simile all'interfaccia di programmazione POSIX. Gnu/Linux, FreeBSD, Solaris, AIX, e perfino sistemi con scopi speciali come Lynx e QNX sono tutti Un*x.
Linux unisce un kernel Unixlike e un piccolo assortimento di software a corollario scritto da Linus Torvalds e da centinaia di altri programmatori. È il fondamento dei sistemi operativi Un*x più usati.
Il progetto GNU (GNU's Not Unix) si sforza da molto tempo di sviluppare un sistema operativo Unixlike interamente libero. Il progetto GNU, per molti versi, è il padre della maggior parte del software libero moderno.
Un sistema operativo GNU/Linux comprende il kernel Linux, i suoi programmi periferici e l'ambiente GNU di runtime completo di librerie, utilità, software per l'utente, etc. Red Hat, Debian, Caldera, SuSE, TurboLinux, e altre società simili sono tutti fornitori commerciali di sistemi GNU/Linux completi.
Ci sono state diverse generazioni di questo Printing HOWTO. La sua storia può essere riassunta così:
Grant Taylor scrisse il Printing HOWTO nel 1992 in risposta alle numerose domande inerenti la stampa poste su comp.os.linux. Ciò anticipò il progetto dell'HOWTO di alcuni mesi, e fu pertanto il primo documento ad essere definito un "howto". Questa edizione era in ASCII piano.
Dopo essere entrato a far parte del progetto HOWTO, il Printing-HOWTO è stato unito ad una FAQ su Lpd di Brian McCauley <B.A.McCauley@bham.ac.uk>; per circa due anni il PHT è stato sviluppato in collaborazione. Ad un certo punto è stato incorporato anche il lavoro di Karl Auer <Karl.Auer@anu.edu.au>. Questa generazione del PHT era in TexInfo e disponibile in PS, HTML, ASCII ed Info.
Dopo aver abbandonato il PHT per oltre un anno, ed aver cercato inutilmente di convincere qualcun altro ad occuparsene, è stata scritta questa versione in SGML, usando il LinuxDoc DTD ed il pacchetto SGML-Tools-1. A partire dalla versione 3.27, è stato incorporato il riassunto di un database di stampanti complementare; in precedenza non c'era mai stata una lista di stampanti compatibili in questo HOWTO.
A metà Gennaio del 2000, Grant scoprì lo "spooler" di stampa di PDQ. Il meccanismo di stampa messo a disposizione da PDQ era così migliorato rispetto a quello di lpd che Grant passò diverse ore giocandoci, riscrisse parti di questo HOWTO e fece balzare a 4 il numero di versione del documento.
A metà del 2000, Grant spostò il suo sito web su www.linuxprinting.org, e cominciò ad mettere a disposizione strumenti di configurazione più potenti. Inoltre convertì l'HOWTO in docBook, e iniziò la trattazione di CUPS, LPRng e GPR/libppd.
All'inizio del 2001, Grant iniziò ad usare la GNU Free Documentation License, che gli sembrò abbastanza adatta. Cominciò anche a cercare di chiarire cos'è e cosa non è specifico di Linux; ci sono diversi kernel liberi Unixlike in giro, e tutti usano lo stesso software per la stampa.
All'inizio del 2003, dopo aver sentito una presentazione di Till Kampeter al FOSDEM, io (Dirk) decisi di aggiornare questo HOWTO. Da quando Grant lo modificò l'ultima volta, CUPS è diventato più maturo e molto più popolare.
Copyright (c) 1992-2001 Grant Taylor.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in Appendice A.
Nota del traduttore: qui di seguito trovate la traduzione del paragrafo precedente, l'unica licenza che ha valore legale resta l'originale inglese.
Copyright 1992-2001 di Grant Taylor.
È concesso il permesso di copiare, distribuire e/o modificare questo documento nei termini di cui alla licenza GNU Free Documentation, versione 1.1 o qualsiasi versione successiva pubblicata dalla Free Software Foundation; senza i vincoli sulle sezioni invarianti, sulla prima di copertina e sull'ultima di copertina. Una copia della licenza è inclusa nella Appendice A.
Il modo più veloce per iniziare è semplicemente usare gli strumenti di configurazione forniti dal venditore. In questo modo dovrebbe essere facile ottenere una configurazione di base, assumendo che in quegli strumenti sia incluso il supporto per il vostro driver, e che il venditore abbia incluso il driver per la vostra stampante. Si possono trovare informazioni sugli strumenti di configurazione offerti dai venditori in la Sezione 9.
Se lo strumento del venditore non funziona, si dovrebbe verificare che la stampante sia elencata tra quelle presunte funzionanti, consultando sia la lista di stampanti compatibili in la Sezione 5.3.1 che la versione online qui descritta.
Se la stampante è indicata come funzionante con un certo driver si controlli di averlo, altrimenti lo si installi. Solitamente si sarà in grado di trovare un pacchetto scritto per Ghostscript che includa nuovo codice e driver assortiti di terze parti. In caso contrario, se ne può compilare uno; il processo non è banale, ma è ben documentato. Si veda la Sezione 10 per maggiori informazioni su Ghostscript.
Dopo aver installato il driver adatto, si tenti di nuovo di configurare la stampante usando lo strumento del venditore. Se non funziona, si selezioni uno strumento di terze parti adatto tra quelli descritti in la Sezione 8. Se anche questo non funziona, se ne dovrà costruire uno proprio; si veda sempre la Sezione 8.
Se si è ancora bloccati, sarà necessario dare la caccia al problema. Probabilmente la cosa migliore, prima di tutto, è continuare a leggere questo documento, per capire come dovrebbero funzionare le cose: ci si troverà poi in una posizione migliore per effettuare un debug.
I newsgroup di Usenet comp.os.linux.hardware, comp.os.linux.setup e comp.periphs.printers contengono la loro parte di domande generiche sulla stampa. Si tratta di newsgroup molto trafficati nei quali si potrà sicuramente trovare una risposta; controllare anche gli archivi dei gruppi di Google. Si può provare anche sui newsgroup linuxprinting.foo; sono disponibili sia come forum via web che NNTP; si veda il sito web.
Rovistate anche il web per trovare le risposte. LinuxPrinting.org è un eccellente punto di partenza; da qui sono raggiungibili altri siti web e progetti.
Si può trovare ulteriore aiuto provando sui newsgroup, sulle mailing list, tramite il supporto del fornitore e così via. L'autore è contattabile tramite il forum di discussione su LinuxPrinting.org; questo darà la possibilità ad altri utenti di rispondere, e permetterà di archiviare pubblicamente il vostro problema ed ogni soluzione per il prossimo utente in difficoltà.
Per la verità il comando usato per stampare dipende da quale software di spooling si usa.
Se lpd è già stato configurato per stampare da voi, o se l'amministratore di sistema o il venditore l'hanno fatto per voi, tutto quello che si deve fare è imparare ad usare il comando lpr. Il Printing Usage HOWTO tratta di questo e di qualche altro comando di manipolazione della coda di stampa. Oppure si legga la pagina di manuale di lpr(1).
In poche parole, il nome della coda di stampa si specifica con -P, seguito dal nome di un file per stamparlo, oppure niente per stampare dallo standard input. Tradizionalmente le opzioni del driver non sono controllabili da lpr, ma vari sistemi accettano certe opzioni tramite -o, -Z, o -J.
Sono due i set di comandi che si possono incontrare avendo a che fare con parecchie versioni di Unix. Il sistema di stampa LPD basato su BSD (*BSD, Linux) usa lpr (per stampare), lpq (per vedere la coda di stampa), lprm (per cancellare i lavori). I sistemi basati su System V dall'altra parte usano lp (per stampare), lpstat (per vedere la coda di stampa), cancel (per cancellare i lavori). Alcuni sistemi Unix di tipo System V sono Solaris, SCO ed altri.
Sui sistemi SYSV, si può ovviamente consultare la pagina di manuale del comando lp. Per specificare una coda si usa l'opzione -d con il nome di un file per stamparlo, o niente per stampare dallo standard input.
CUPS mette a disposizione sia l'interfaccia a linea di comando di System V che quella di Berkeley. Ciò significa che si può usare sia lpr che lp per stampare, il che torna molto utile se si hanno già diversi script che usano, per esempio, lp o per chi ha una precedente esperienza con un sistema System V o BSD.
La maggior parte dei sistemi di spool offre soltanto un'interfaccia a linea di comando abbastanza semplice. Piuttosto che usare direttamente lpr, si potrebbe desiderare di usare un'interfaccia utente che generalmente permette di giocherellare con diverse opzioni di stampa (stampante, tipo di carta, fascicolazione, pagine per foglio, ecc.) tramite una forma grafica di facile uso. Alcune possono avere anche altre funzioni.
KDEPrint permette agli utenti di accedere al sottosistema di stampa (CUPS, LPD, RLPR, LPRng ecc.) attraverso un'interfaccia utente grafica di KDE. Con KDEPrint si può facilmente stampare, si possono amministrare i lavori, le stampanti e il demone di stampa. KDEPrint rimpiazza i precedenti QtCUPS e CUPS, ed è facile da usare sia per gli sviluppatori che per gli utenti. KDEPrint fa parte di KDE già dalla versione 2.2.0 e ha diverse funzioni interessanti.
kprinter è la finestra di dialogo di KDEPrint, e permette di selezionare la stampante di destinazione e di cambiare le opzioni di stampa. Tra le stampanti di destinazione ci sono alcune stampanti virtuali che permettono di inviare la stampa ad email, fax o pdf.
Il comando kprinter di KDEPrint può essere usato in ogni applicazione che permetta di configurare il comando di stampa: alcuni esempi sono Mozilla e OpenOffice.
Tra le funzioni di KDEPrint c'è anche l'Anteprima di Stampa che può essere selezionata dalla finestra di dialogo Stampa. L'anteprima si ottiene facendo passare il file da stampare attraverso dei filtri che lo rendono visualizzabile sullo schermo usando KGhostView o un'applicazione esterna come gv.
KJobViewer, il Visualizzatore di Lavori di Stampa di KDEPrint permette di vedere, muovere e cancellare lavori di stampa.
Si possono trovare maggiori informazioni su KDEPrint presso http://printing.kde.org/.
Un'altra buona scelta per CUPS è il programma XPP (si veda Figura 4). XPP è stato costruito dalla libreria FLTK ed è quindi indipendente dal desktop usato.
Per stampare con XPP, basta far partire il programma xpp specificando un file (o niente, se si sta usando xpp al posto di lpr per stampare dallo standard input) e selezionando una stampante dalla lista di quelle configurate, insieme ad ogni opzione che si vuole applicare scelta dai vari pannelli. Si veda Figura 5 per un pannello di opzioni di esempio con evidenziate le opzioni standard di CUPS.
Se usato con il driver dell'interfaccia di sistema Foomatic, XPP permetterà anche di controllare parametri numerici normalmente non supportati da CUPS, tipicamente cose come la sintonizzazione avanzata dei colori, l'allineamento delle cartucce e così via. Si veda Figura 6 per un esempio.
La stampante selezionata e tutte le opzioni scelte possono essere salvate con il pulsante «Salva impostazioni».
GPR, di Thomas Hubbell, usa il codice di CUPS per filtrare lavori di stampa Postscript e offre agli utenti la possibilità di controllare con facilità le opzioni dei lavori di stampa. Alcune opzioni (come le pagine per foglio, la selezione delle pagine, ecc.) sono implementate direttamente da GPR, altre invece dalla stampante o dal filtro del sistema di spool.
GRP lavora con LPD o LPRng, o può essere compilato specificatamente per usare GNUlpr. Se compilato normalmente, usa direttamente la libreria libppd di VA per produrre un file Postscript specifico per la stampa, che verrà poi inviato al comando lpr. Se compilato per GNUlpr, invia un lavoro di stampa Postscript senza modifiche al comando lpr, insieme al set di opzioni specificate. Questa è indiscutibilmente la strada migliore, perché permette a Postscript di essere reindirizzato dallo spooler ad una diversa stampante quando opportuno; sfortunatamente richiede GNUlpr, che non è molto diffuso (anche se è ovviamente banale da installare).
Per usare GPR, prima di tutto si selezioni una stampante (usando il nome indicato nella coda LPD) e si controlli che GPR abbia caricato il file PPD corretto. Se non l'ha fatto, si dovrà specificare il nome del file PPD e le opzioni per la stampante nella finestra di dialogo Configurazione della Stampante (questa finestra si ottiene usando il pulsante Configurazione della Stampante; contiene diverse opzioni per la stampante definite dal PPD).
Dopo aver configurato la stampante, si può stampare specificando il nome del file e selezionando le opzioni appropriate dai pannelli a linguetta «Generale» e «Avanzate». Le opzioni «Generale» sono implementate direttamente da GPR per tutte le stampanti, mentre quelle «Avanzate» sono definite per ogni stampante dal file PPD. Si possono vedere questi pannelli di opzioni in Figura 8 e in Figura 9.
Ci sono due driver di dispositivo completamente diversi per la porta parallela; quello usato dipende dalla versione del kernel (che si può scoprire con il comando uname -a). Il driver è cambiato da Linux 2.1.33; essenzialmente tutti i sistemi recenti usano il kernel 2.2 o successivi, quindi probabilmente si vorrà passare alla sezione sul driver parport.
Alcuni dettagli sono uguali per i due tipi di driver. In particolare, molti utenti hanno notato che Linux non riconosce la porta parallela a meno che non venga disabilitata l'opzione "Plug and Play" dal BIOS. (Non è una sorpresa; la storia del PNP dei dispositivi non-PCI con Windows e dintorni è praticamente un disastro).
Il kernel di Linux (<=2.1.32), dando per scontato che sia stato compilato o caricato il dispositivo lp (il risultato di cat /proc/devices dovrebbe includere il dispositivo lp), fornisce uno o più dispositivi /dev/lp0, /dev/lp1 e /dev/lp2. Questi NON sono assegnati dinamicamente, ma corrispondono ad uno specifico indirizzo di I/O hardware. Ciò significa che la stampante potrebbe essere lp0 o lp1, a seconda della configurazione hardware del sistema: vanno provati entrambi.
Alcuni utenti riferiscono che la porta lp bidirezionale non viene riconosciuta se si usa un vecchio cavo per stampanti unidirezionale. Si controlli di usare un cavo decente.
Non è possibile eseguire contemporaneamente i driver plip e lp su una data porta (sotto 2.0, in ogni caso). È possibile comunque caricare l'uno o l'altro driver, sia manualmente che automaticamente dal kerneld dei kernel versione 2.x (e le ultime 1.3.x). Configurando adeguatamente gli interrupt e simili, dovrebbe essere possibile eseguire plip su una porta ed lp su un'altra. Qualcuno è riuscito a farlo modificando il codice dei driver; si spera che qualcun altro riesca a farlo direttamente dalla linea di comando.
C'è una piccola utilità chiamata tunelp con la quale è possibile, da root, mettere a punto l'uso degli interrupt del dispositivo lp di Linux 2.0, la frequenza dei sondaggi e altri parametri.
Quando il driver lp è compilato nel kernel, si può usare l'opzione lp= per impostare gli interrupt e gli indirizzi di IO:
Quando il driver lp è compilato nel kernel, si può usare la linea di comando di LILO/LOADLIN per passare al driver gli indirizzi delle porte e gli interrupt che userà. Sintassi: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]] Ad esempio: lp=0x378,0 oppure lp=0x278,5,0x378,7 ** Si noti che se si usa questa tecnica, si devono specificare *tutte* le porte che devono essere considerate, non esistono parametri predefiniti. Si può disabilitare un driver con lp=0. |
Quando il driver viene caricato come modulo, è possibile specificare gli indirizzi di I/O e gli interrupt nella linea di comando di insmod (oppure in /etc/conf.modules per influenzare kerneld) usando la solita sintassi. I parametri sono io=port0,port1,port2 e irq= irq0,irq1,irq2. Si consulti la pagina di manuale di insmod per ulteriori informazioni.
**Per chi non riesca a ricordare gli indirizzi standard quando servono, sono quelli del secondo esempio. L'altra porta (lp0) si trova a 0x3bc. Non ho idea di quali interrupt usi.
Il codice sorgente del driver della porta parallela in Linux 2.0 è in /usr/src/linux/drivers/char/lp.c.
A partire dal kernel 2.1.33 (e a disposizione come patch per il kernel 2.0.30), il dispositivo lp è soltanto un client del nuovo dispositivo parport. L'aggiunta del dispositivo parport corregge alcuni dei problemi che assillavano il driver del vecchio dispositivo lp - può condividere la porta con altri driver, assegna dinamicamente le porte parallele disponibili a numeri di dispositivo piuttosto che far rispettare un accordo fisso tra gli indirizzi I/O e i numeri delle porte, e così via.
L'avvento del dispositivo parport ha permesso la prolificazione di nuovi driver per le porte parallele per cose come dischi Zip, dischi e CD-Rom Backpack e così via. Alcuni di questi sono disponibili anche per i kernel 2.0; si cerchi sul web.
La differenza principale che si noterà, per quanto riguarda la stampa, è che i kernel basati su parport assegnano dinamicamente i dispositivi lp alle porte parallele. Così, quello che era lp1 sotto Linux 2.0 potrebbe essere lp0 sotto Linux 2.2: se si effettua un aggiornamento da un kernel con driver lp ad uno con driver parport bisognerà assicurarsi di verificarlo.
I problemi più comuni di questo dispositivo sembrano derivare da una configurazione errata:
Alcune distribuzioni GNU/Linux non sono equipaggiate con un file /etc/modules.conf (o /etc/conf.modules) ben configurato, così il driver non viene caricato correttamente quando ce n'è bisogno. Con un modutils recente, le righe corrette per modules.conf sembrano essere:
alias /dev/printers lp # solo per devfs? alias /dev/lp* lp # solo per devfs? alias parport_lowlevel parport_pc # mancante in Red Hat 6.0-6.1 |
Molti Bios trasformano la porta parallela in un dispositivo Plug-and-Play, il che aggiunge inutilmente complessità ad un dispositivo estremamente semplice che è quasi sempre presente; se la porta parallela non è riconosciuta dal driver Linux, si disattivi l'impostazione PnP per la porta parallela ("LPT1" in molti Bios). L'impostazione corretta spesso si chiama "legacy", "ISA", o "0x378", ma probabilmente non "disabilitata".
Si può anche leggere la documentazione parport dai sorgenti del kernel, o cercare il sito web di parport.
I dispositivi seriali vengono solitamente identificati come /dev/ttyS1 e simili sotto Linux. L'utilità stty permette di vedere e modificare in modo interattivo le impostazioni per una porta seriale; setserial permette di controllare alcuni parametri estesi e di configurare gli interrupt e gli indirizzi di I/O per porte non standard. Ulteriori informazioni sulle porte seriali sotto Linux possono essere trovate nel Serial-HOWTO .
Usando una stampante seriale lenta con il controllo di flusso, ci si accorgerà che alcuni dei lavori di stampa vengono tagliati. Questo potrebbe essere dovuto alla porta seriale, il cui comportamento predefinito è di eliminare ogni carattere non trasmesso dal buffer entro 30 secondi dalla chiusura della porta del dispositivo. Il buffer può trattenere fino a 4096 caratteri, e se la stampante usa il controllo di flusso ed è troppo lenta per poter accettare tutti i dati dal buffer entro 30 secondi dalla chiusura della porta seriale, la fine del contenuto del buffer verrà persa. Se il comando cat file > /dev/ttyS2 produce un tabulato completo per file brevi ma uno tagliato per quelli più lunghi, potreste essere in queste condizioni.
Il problema dell'intervallo di 30 secondi può essere sistemato attraverso l'opzione a linea di comando di setserial "closing_wait" (versioni 2.12 e successive). Le porte seriali di una macchina solitamente sono inizializzate da una chiamata a setserial tramite il file di avvio rc.serial. La chiamata per la porta seriale della stampante può essere modificata perché imposti il closing_wait nello stesso momento in cui imposta gli altri parametri della porta.
Linux supporta la tecnologia USB piuttosto bene. USB dovrebbe funzionare con gli ultimi kernel 2.2, e con ogni kernel 2.4 o successivo. Naturalmente sarà necessario il supporto nel kernel per USB, o compilato o attraverso un modulo (raccomandato).
Con un kernel modulare sarà necessario caricare i seguenti moduli:
usb-core.o
usb-uhci.o oppure uhci.o oppure usb-ohci.o
printer.o
Per ottenere trasferimenti ad alta velocità da un dispositivo USB 2.0 bisogna unirlo ad un controller USB 2.0 usando il driver EHCI (ehci-hcd.o). Si raccomanda di usare un kernel recente 2.4 o successivo.
Una cosa da ricordare è che i dispositivi USB sono allocati dinamicamente. Quando si accende o si connette una stampante USB, le viene assegnato un file di dispositivo (/dev/usb/lp*). Questo significa che i lavori di stampa potrebbero essere inviati alla stampante sbagliata perché le stampanti sono state accese in un certo ordine. CUPS usa indirizzi speciali che contengono fabbricante, modello e numero seriale della stampante per continuare ad inviare i lavori di stampa alla stampante corretta.
Anche se la maggior parte delle stampanti lavora bene con Linux, ci sono delle eccezioni. Per esempio il nuovo dispositivo MF della Epson (Stylus CX3200/CX5200) risponde malamente se si sonda la stringa ID IEEE-1284 via IOCTL, per esempio tramite il codice del backend "usb" di CUPS. Mentre si può sondare la stringa ID tramite un sistema proprietario della Epson.
Till Kamppeter ha scritto alcuni strumenti per recuperare la stringa ID di dispositivo dalle stampanti USB. getusbprinterid.pl e usb_id_test.c sono la stessa cosa, ma sono scritti rispettivamente in Perl e in C. Come detto prima, i nuovi dispositivi MF della Epson sono un'eccezione, ma il "sistema proprietario della Epson" è stato implementato nello strumento ttink del pacchetto MTink.
Maggiore documentazione su USB è disponibile presso il sito web Linux USB.
Il kernel di Linux permette di comunicare con ogni stampante che si possa collegare ad una porta seriale, parallela o usb, più ogni stampante sulla rete locale. Sfortunatamente, questo da solo non è sufficiente; bisogna essere anche in grado di generare dati che la stampante possa capire. Tra le stampanti incompatibili, le prime sono quelle definite come "Windows" o "GDI". Sono chiamate così perché tutto o parte del linguaggio di controllo della stampante e i dettagli del meccanismo di stampa non sono documentati. Tipicamente, il venditore metterà a disposizione un driver Windows e lo venderà allegramente solo ad utenti Windows; questo è il motivo per cui sono chiamate Winprinters. In alcuni casi il venditore metterà a disposizione anche driver per NT, OS/2, o altri sistemi operativi.
Molte di queste stampanti non funzionano con il software libero. Alcune funzionano, e altre funzionano solo in parte (solitamente perché qualcuno ha effettuato un reverse engineering trovando i dettagli necessari per scrivere un driver). Si veda più sotto la lista delle stampanti supportate per avere dettagli su stampanti specifiche.
Poche stampanti sono intermedie. Qualche modello della NEC, per esempio, implementa una forma semplificata del linguaggio standard PCL che permette ai software che usano PCL di stampare ad una definizione fino a 300dpi, ma solo NEC sa come ottenere 600dpi da queste stampanti.
Se si possiede una di queste stampanti Windows, ci sono modi indiretti per usarla, ma sono piuttosto scomodi. Si veda la Sezione 12 in questo documento per ulteriori informazioni sulle stampanti Windows.
Per quanto riguarda le stampanti che funzionano con il software libero, la scelta migliore è comprarne una che abbia il supporto nativo per PostScript nel firmware. Quasi tutto il software Un*x che produce output stampabile lo produce in PostScript, quindi ovviamente sarebbe carino avere una stampante che supporti direttamente PostScript. Sfortunatamente, il supporto PostScript è raro al di fuori dell'ambito delle stampanti laser, e alcune volte è un'aggiunta costosa.
Il software Un*x, e l'industria editoriale in generale, ha standardizzato l'uso di Postscript come linguaggio di controllo delle stampanti. Questo è successo per varie ragioni:
Postscript è nato come parte di Apple Laserwriter, un perfetto compagno per Macintosh, il sistema largamente responsabile della rivoluzione dei desktop degli anni 80.
I programmi Postscript possono essere usati per generare output per uno schermo a pixel, per uno schermo vettoriale, per un fax, o per quasi ogni tipo di meccanismo di stampa, senza che sia necessario cambiare il programma originale. L'output di Postscript sarà sempre lo stesso su ogni dispositivo Postscript, almeno entro i limiti delle capacità del dispositivo stesso. Prima della creazione dei PDF ci si scambiavano documenti complessi on-line come file Postscript. L'unica ragione per cui questo standard non ha "attaccato" è stato perché le macchine Windows solitamente non includono un visualizzatore Postscript, così Adobe specificò iperlink e compressione per Postscript, chiamò il risultato PDF, distribuì dei visualizzatori, e inventò un mercato per il suo strumento "distillatore" (le cui funzionalità sono offerte anche da ps2pdf e pdf2ps di Ghostscript).
Postscript è un linguaggio di programmazione completo; può essere usato per scrivere software adatto a fare quasi tutto. In genere è utile per definire delle subroutine all'inizio dei programmi che riproducano più volte cose complesse per tutta la lunghezza di un documento, come un logo o una grande scritta "MINUTA" sullo sfondo. Ma non c'è ragione per non fare conti con un programma Postscript.
Postscript è completamente descritto in una serie di libri pubblicamente disponibili (che si possono trovare in ogni buona libreria) e anche on-line presso http://partners.adobe.com/asn/developer/technotes/postscript.html. Anche se Adobe l'ha inventato e ne fornisce l'implementazione commerciale dominante, altri venditori come Aladdin ne producono altre implementazioni codificate indipendentemente.
In mancanza del (ingente) budget necessario per comprare una stampante Postscript, si può usare ogni stampante supportata da Ghostscript , l'interprete libero per Postscript usato al posto dell'attuale supporto Postscript. Si noti che la maggior parte delle distribuzioni GNU/Linux possono vendere solo una versione di Ghostscript piuttosto antiquata a causa della licenza. Per fortuna solitamente ci sono dei pacchetti aggiornati di Ghostscript messi a disposizione nelle aree contrib di ogni distribuzione.
Oggi Adobe usa un nuovo linguaggio per le stampanti chiamato "PrintGear". Sembra che sia un linguaggio in formato binario molto semplificato con un po' di eredità Postscript ma senza compatibilità Postscript, e non si sa se Ghostscript lo supporta. Ma alcune stampanti PrintGear sembrano supportare un altro linguaggio come PCL, e queste stampanti funzioneranno con GNU/Linux (se PCL è implementato nella stampante e non in un driver Windows).
Allo stesso modo, Adobe offre un'implementazione Postscript basata sugli host chiamata PressReady. Funziona come Ghostscript nell'offrire supporto Postscript per una stampante non PostScript, ma ha lo svantaggio di funzionare solo sotto Windows.
Ci sono diversi luoghi dove si può cercare per scoprire se una particolare stampante funzionerà. Il database di stampanti mantenuto cooperativamente dal Printing HOWTO vuole essere una lista esauriente dello stato del supporto per le stampanti. Ce n'è un riassunto più sotto; ci si assicuri di controllare on-line per maggiori dettagli e informazioni su quale driver usare.
La scommessa più sicura per chi deve acquistare una nuova stampante è consultare la lista delle stampanti suggerite, che si concentrano intorno alle stampanti a getto d'inchiostro a colori e ai dispositivi laser monocromatici. Acquistarne una dai fornitori affiliati aiuterà a supportare questo documento e il sito web.
La pagina delle stampanti compatibili di Ghostscript contiene una lista di alcune stampanti funzionanti, nonché collegamenti ad altre pagine.
I gruppi di Google contengono centinaia di testimonianze sul "funziona" e "non funziona". Si provi con tutti e tre, dopo di che si controlli che la propria stampante sia presente nel database, così che sia elencata correttamente per il futuro.
Questa sezione è un riassunto del database on-line. La versione on-line include specifiche sui dispositivi, note, informazioni sui driver, documentazione mantenuta dagli utenti, pagine web dei fabbricanti e script d'interfaccia per usare i driver con diversi sistemi di spool (inclusi LPR, LPRng, PDQ e CUPS). La versione on-line di questa lista è interattiva: stampanti possono essere aggiunte in ogni momento, quindi ci si assicuri di controllarla. Infine, se la stampante non è elencata, la si aggiunga!
Questo elenco non è il vangelo; alcune volte vengono aggiunte informazioni errate, che vengono alla fine eliminate. Le voci che non sono state controllate sono marcate con un asterisco (*). Si verifichi tramite i gruppi di Google che una stampante sia stata utilizzata da qualcuno prima di comprarla basandosi su questo elenco.
Le stampanti possono essere classificate in quattro tipi:
Stampanti perfette lavorano perfettamente: si possono utilizzare tutte le capacità della stampante, inclusi colore, piena risoluzione ecc. In pochi casi stampanti con modalità di "miglioramento della risoluzione" che non funziona vengono elencate come perfette; generalmente la differenza nella qualità di stampa è così piccola che non vale la pena di preoccuparsene.
Si può stampare bene, ma potrebbero esserci piccole limitazioni di diverso tipo sia nella stampa che in altre funzioni.
Si può stampare, ma potrebbe essere impossibile farlo a colori, o possibile solo ad una risoluzione scarsa. Si veda l'elenco on-line per informazioni sulle limitazioni.
Non si può stampare; tipicamente, questo è dovuto a mancanze nel driver e/o della documentazione su come scriverne uno. Stampanti inutili alcune volte vengono "promosse", sia quando qualcuno scopre che funzionano con un driver esistente, che quando qualcuno crea un nuovo driver, ma non si dovrebbe contare su questo.
E senza ulteriori indugi, ecco la lista delle compatibilità delle stampanti:
Tabella 1. Stampanti supportate da Linux
Fabbricante | Perfettamente funzionanti | Generalmente funzionanti | Parzialmente funzionanti | Paperweight |
---|---|---|---|---|
Alps | MD-1000 | |||
Anitech | M24 | |||
Apollo | P-1200 | |||
Apple | 12/640ps | Color StyleWriter 1500 | ||
Avery | Personal Label Printer+* | Personal Label Printer | ||
Brother | HL-4Ve | HJ-400 | DCP-1200 | 4550* |
CItoh | M8510 | |||
CalComp | Artisan 1023 penplotter* | |||
Canon | BJ-5 | BJC-50* | BJ F100* | BJC-5000* |
Citizen | ProJet II* | printiva700 | ||
Compaq | IJ750* | IJ900 | IJ300* | |
DEC | DECWriter 500i* | 1800* | ||
Daewoo | DP-3630H* | |||
Dymo-CoStar | ASCII 250* | |||
Epson | ActionLaser 1100* | EPL-5700 | 9-pin 136 Col* | AcuLaser C1000 |
Fujitsu | 1200* | |||
Generic | PostScript Printer | 9-pin 136 Col* | ||
GoldStar | GLP-1450* | |||
HP | 2000C | Color LaserJet 5 | C LaserJet 4500* | DeskJet 3320 |
Hansum | BJ-330H* | |||
Heidelberg | Digimaster 9110* | |||
Hitachi | DDP 70 (with MicroPress)* | |||
IBM | 3853 JetPrinter* | 4029 030 LaserPrinter 10* | ||
Imagen | ImPress* | |||
Infotec | 4651 MF* | |||
Jepcom | JP-B330* | |||
Kodak | DigiSource 9110* | |||
Kyocera | F-800T* | FS-3500* | F-800A/F-800* | |
LaserMaster | LM 1000 | |||
Lexmark | 4039 10plus | 1020 Business* | 1000 | Winwriter 100* |
Minolta | PagePro 6* | PagePro 8L* | PagePro 6L | |
Mitsubishi | CP50 Color Printer* | |||
NEC | MultiWriter* | SuperScript 100C* | SuperScript 610plus* | |
Oce | 3165* | |||
Okidata | ML 320 | DP 5000 | ML-184 Turbo* | Okijet 2010 |
Olivetti | JP350S* | JP450 | ||
Others | BJ-230* | |||
PCPI | 1030* | |||
Panasonic | KX-P1123* | KX-P2123* | KX-P1124i* | KX-P6100* |
Pentax | PocketJet 200 | |||
Printrex | 820 DL* | |||
QMS | 2425 Turbo EX* | ps-810* | magicolor 2 | |
Qnix | PICASSOI* | |||
Raven | LP-410 | |||
Ricoh | 4081* | Aficio 401* | Aficio Color 2206* | |
Sambo | PageJet P1* | |||
Samsung | ML-85* | ML-85G | MJ 630V* | ML-5050G* |
Seiko | SpeedJET 200* | SLP* | ||
Sharp | AR-161* | AJ-1800 | AJ-2100 | |
Sindo | ExecJet 4072* | |||
Sony | IJP-V100 | |||
Star | JJ-100* | LC 90* | LC 24-15 Multi-Font* | WinType 4000* |
Tally | MT908* | |||
Tektronix | 3693d color printer, 8-bit mode* | Phaser 350* | ||
Xerox | 2700 XES | Able 1406 | DocuPrint C8* | DocuPrint P8* |
È difficile selezionare una stampante al giorno d'oggi; ci sono molti modelli tra cui scegliere. Ecco alcuni suggerimenti per l'acquisto:
Si ottiene ciò per cui si paga. Quasi tutte le stampanti sotto i 200-300 dollari possono stampare ragionevolmente bene, ma il costo della stampa per pagina è molto alto. Per alcune stampanti, bastano una o due cartucce per eguagliare il costo di una stampante nuova! Questo è vero in particolare per le stampanti a getto d'inchiostro economiche. Allo stesso modo, stampanti economiche non dureranno molto a lungo. Le stampanti meno care, per esempio, hanno un MTBF di circa tre mesi; ovviamente non sono adatte per un uso intenso.
Le testine delle stampanti a getto d'inchiostro si intaseranno irrimediabilmente con l'andare del tempo, perciò la possibilità di rimpiazzare in qualche modo la testina è una buona funzionalità. Le testine delle stampanti a getto d'inchiostro sono costose, e le cartucce integrate testine/inchiostro costano dieci volte tanto (!) rispetto alle cartucce di solo inchiostro, perciò la possibilità di rimpiazzare la testina solo quando necessario è un'altra buona funzionalità. Le stampanti Epson Stylus tendono ad avere testine fisse, e le HP Deskjet tendono ad averle integrate nelle cartucce. Le Canon hanno cartucce in tre parti con contenitori indipendenti per l'inchiostro; a me piace questo modello. D'altra parte, le cartucce HP non sono più molto costose, e la HP produce una linea nel complesso migliore; Canon spesso è la terza scelta dal punto di vista della qualità di stampa. Le stampanti Epson Stylus e quelle a getto d'inchiostro della HP sono le più supportate al momento dal software libero.
Le stampanti laser consumano tamburo e toner, più una piccola barra che pulisce il toner. I modelli più economici uniscono toner e tamburo in una grande cartuccia; il loro utilizzo è più costoso. I migliori modelli per chi stampa molto sono quelli che usano semplice polvere di toner o che almeno separano cartucce di toner e tamburo.
Le migliori fotografie a colori si ottengono da stampanti a tono continuo che usano un aloide d'argento unito ad un approccio a laser per produrre —sorpresa!—fotografie reali. Dato che queste stampanti costano migliaia di dollari, Ofoto.com offre lavori stampa-a-stampa a buon mercato. I risultati sono sbalorditivi: nemmeno la miglior stampante a getto d'inchiostro è paragonabile.
Le stampe fotografiche più abbordabili sono quelle ottenute dai dispositivi di sublimazione del colore, come alcuni della serie Alps (trasferimento termico di inchiostro asciutto o sublimazione del colore), o delle poche stampanti fotografiche a livello utente della Sony. Sfortunatamente i dispositivi Alps sono poco supportati dal software libero (l'unico resoconto conosciuto di un utente Alps che utilizza il driver Ghostscript parla di immagini a strisce e granulose), e anche così non è chiaro se l'opzione di sublimazione del colore sia supportata. Non si sa se i dispositivi Sony funzionino.
Le più comuni stampanti a getto d'inchiostro specializzate nella stampa di fotografie solitamente presentano processi a 6 o perfino a 7 colori CMYK. Tutte le stampanti specializzate in fotografie sono costose da usare; o finirà il colore blu e si dovrà sostituire tutta la cartuccia, oppure il ricambio per un singolo colore costerà un occhio della testa. Anche la carta speciale è costosa; il costo delle fotografie ad alta qualità così ottenute potrebbe superare un dollaro americano per pagina. Si veda anche la sezione sulla stampa fotografica più avanti, e le sezioni sulla messa a punto del colore (se così si può chiamare) con GhostScript.
Ultimamente le stampanti laser a colori sono diventate più economiche, il che le rende dispositivi interessanti per i resoconti a colori. Il costo per pagina delle stampanti laser a colori è più economico di quello delle stampanti a getto d'inchiostro. Comunque possono essere poco adatte per stampare le fotografie. Un giorno le stampanti laser a colori diventeranno comuni e rimpiazzeranno quelle noiose stampanti laser monocromatiche.
La velocità è proporzionale alla potenza del processore, all'ampiezza di banda e generalmente al costo della stampante. Le stampanti più veloci saranno quelle di rete di tipo Postscript con processori interni potenti. Stampanti a livello utente dipenderanno in parte dalla velocità di resa di GhostScript, che può essere influenzata usando una macchina ben equipaggiata; pagine piene di colori, in particolare, possono consumare grandi quantità di memoria. Le cose andranno bene finché si avrà questa quantità di memoria.
Volendo stampare su moduli copiativi, ci vorrà una stampante d'impatto; alcune società producono ancora stampanti ad aghi, molte delle queli emulano i modelli Epson tradizionali e lavorano bene.
Sono supportate due linee di stampanti per etichette: i modelli Dymo-Costar e i Seiko SLP. Altri modelli potrebbero funzionare oppure no. La Avery fornisce etichette adesive in formato 8.5x11 di diverse misure che si possono far passare attraverso una stampante.
Disegni di grande formato sono supportati ai nostri giorni da stampanti a getto d'inchiostro gigantesche; la scelta più popolare è HP. Stampanti a getto d'inchiostro di media grandezza (11x17) vengono usate comunemente per stampe più piccole. Il plotting di questo tipo viene fatto tramite i linguaggi RTL, HP-GL e HP-GL/2, che sono semplici linguaggi vettoriali proprietari di HP, generati direttamente dal software dell'applicativo.
Fino a poco tempo fa, la scelta per gli utenti di software libero era semplice: tutti usavano lo stesso vecchio lpd tirato fuori parola per parola dal codice BDS Net-2. Ancora oggi alcuni venditori forniscono questo software: ma le cose stanno cambiando. Sistemi di tipo SVR4, incluso Solaris, includono un pacchetto di spool di stampa completamente diverso, incentrato su lpsched.
Oggi c'è un buon numero di sistemi tra cui scegliere. Sono tutti descritti sotto; si leggano le descrizioni per fare la propria scelta. CUPS è una buona scelta ed è raccomandato per la maggior parte degli utenti; ha un eccellente supporto per Postscript, offre supporto IPP, un'interfaccia web e diverse altre funzioni. Per ambienti di lavoro basati principalmente su stampanti di rete Postscript, un'altra scelta è rappresentata da un programma front-end come GPR con LPRng; può manipolare direttamente le opzioni PPD ed ha un'interfaccia carina.
CUPS oggi è diventato il sistema di stampa predefinito di molte distribuzioni. Cosa rende CUPS diverso dal resto? CUPS è un'implementazione di IPP (Internet Printing Protocol), un nuovo standard che tenta di risolvere alcune delle mancanze del vecchio protocollo LPD. Inoltre CUPS supporta LPD, SMB e AppSocket (JetDirect) con funzionalità ridotte. L'implementazione di CUPS è stata sviluppata da Michael Sweet di Easy Software Products; CUPS è distribuito sotto GPL. Dato che è un nuovo protocollo, IPP ha diversi vantaggi sul vecchio protocollo LPD:
lo scheduler è un server web HTTP 1.1 e mette anche a disposizione un'interfaccia web
opzioni di stampa, si può perfino chiedere al dispositivo IPP quali opzioni e formati di documenti supporta.
controllo sull'accesso che limita i lavori di stampa, i controlli sui lavori di stampa e i comandi di amministrazione del sistema che arrivano da e vanno verso specifici computer e stampanti. L'accesso a CUPS può essere controllato, come con Apache, usando le direttive Allow e Deny.
supporto proxy (dato che IPP usa HTTP)
supporto per la cifratura
CUPS include diverse funzioni molto buone, tra cui una gestione delle opzioni ragionevole; interfacce web, grafiche e a linea di comando; e un sistema di filtraggio basato su mime con un forte supporto per PostScript.
Parecchi set di PPD possono essere usati con CUPS:
L'installazione predefinita di CUPS contiene PPD generici validi per le stampanti Epson ad aghi a 9 e 24 pin, per le Epson Stylus Color, per le stampanti Stylus Photo, per le HP Laserjet, per le stampanti DeskJet e per le stampanti per etichette Dymo. Si potranno quindi usare molti modelli di stampanti, ma senza l'accesso alle caratteristiche più specifiche dei modelli.
Foomatic è in grado di generare un PPD utilizzabile con ogni driver di stampante che sia completamente dettagliato nel database di linuxprinting.org. Il PPD verrà usato con uno script di backend chiamato foomatic-rip, che usa driver liberi. Al momento si può trovare supporto per un numero piuttosto ampio di stampanti. Foomatic è la base per il supporto per stampanti non Postscript in molte distribuzioni GNU/Linux. CUPS e Foomatic stanno diventando abbastanza popolari e attualmente rappresentano il sistempa di stampa raccomandato nella maggior parte delle situazioni.
CUPS può usare direttamente i file PPD forniti dai venditori per le stampanti Postscript. Spesso questi file sono offerti insieme ai driver di Windows per la stampante, o si possono trovare sul sito web del venditore della stampante. Dovendo scegliere fra un driver per Windows 9x e uno per Windows NT/W2K, si scelga quello per Windows NT. Anche Adobe distribuisce file PPD per molte stampanti Postscript.
Easy Software Products, Inc. vende CUPS insieme ad una raccolta di driver proprietari. Benché non siano software libero, questi driver fanno funzionare molte stampanti comuni. L'insieme dei driver è piuttosto costoso se paragonato al costo di un'unica stampante supportata, ma sicuramente è utile. Il pacchetto include strumenti grafici front-end.
I drivers Gimp-Print sono driver di alta qualità per stampanti Canon, Epson, Lexmark, e PCL che possono essere usati con Ghostscript, CUPS, Foomatic e Gimp.
Omni è un pacchetto fatto da IBM, che ora contiene supporto per più di 450 stampanti. Il driver per stampanti OMNI è distribuito da IBM sotto licenza LGPL.
HPIJS supporta circa 250 stampanti HP fornendo un'eccellente qualità di stampa (al momento solo tramite Foomatic). Dalla versione 1.0.1, la clausola "Solo prodotti hp" è stata rimossa dalla licenza e i driver sono distribuiti sotto licenza BSD.
Il programma di terze parti XPP (si veda Figura 4) offre un'interfaccia grafica per le funzionalità utente di CUPS molto gradevole, inclusa una meravigliosa interfaccia per le opzioni da indicare al momento della stampa (mostrate in Figura 5). Per informazioni sull'uso di XPP, si veda la Sezione 3.4.2.
LPD, il demone di stampa BDS Unix originale, è stato per anni lo standard di Unix. È disponibile per ogni tipo di Unix, e offre un set di funzioni piuttosto minimale nato dalle necessità dell'era dei sistemi timesharing. Malgrado la sua storia alquanto particolare, è ancora utile oggi come spooler di stampa di base. Per renderlo veramente utile con le stampanti moderne sarà necessario molto lavoro extra, creando script per i filtri complementari e programmi front-end. Ma esiste, e fa tutto il lavoro.
LPD è anche il nome dato al protocollo di stampa di rete dalla RFC 1179. Questo protocollo di rete non è usato solo dal demone LPD, ma essenzialmente da ogni server di stampa in rete, da ogni stampante di rete, e da qualunque altro spooler di stampa presente; LPD è il minimo comun denominatore della stampa via rete.
LPRng(si veda la Sezione 6.3) è un'implementazione di gran lunga migliore rispetto a quella regolare del modello di base di LPD; se si deve usare LPD, si consideri l'uso di LPRng. Non sono necessari molti riti voodoo per fargli fare quello che si vuole, e sono riti ben documentati. LPRng è essenzialmente un'implementazione avanzata di LPD con un grado di sicurezza migliore e con più funzioni.
C'è un buon numero di sorgenti di LPD in giro. Si potrebbe
sostenere che il possessore ufficiale sia qualche tipo di BDS Unix, ma
volenti o nolenti chiunque può aver implementato cambiamenti che si sarebbero
quindi incrociati in modi sconosciuti, così che è difficile dire con esattezza
quale LPD si stia usando. Tra gli LPD disponibili con più facilità
ce n'è
uno offerto da GNUlpr
con modifiche minori che rende l'interfaccia utente molto più flessibile.
GNUlpr permette di specificare le opzioni da linea di comando
usando il flag -o
; le opzioni vengono poi passate attraverso
i filtri, in modo analogo alle funzioni offerte da un buon numero di venditori
Unix tradizionali, e simile a (anche se incompatibile con) il meccanismo
dell'opzione -z
di LPRng.
Se si decide di usare LPD, il modo migliore è tramite un front-end. Ce ne sono diversi tra cui scegliere; KDEPrint, GPR (si veda la Sezione 3.4) e XPP sono forse i migliori. Ne esistono altri; fatemi avere informazioni al riguardo.
Alcuni venditori GNU/Linux mettono a disposizione LPRng, un'implementazione molto meno vecchia dello spool di stampa LPD. LPRng è più facile da amministrare per ampie installazioni (come dire: più di una stampante, qualunque stampante seriale, o qualche particolare stampante di rete non-lpd) e il suo codice di base è fatto meno terribilmente a casaccio di quello fornito con lpd. Può perfino pretendere in tutta onestà di essere sicuro: non contiene binari SUID, e supporta l'autenticazione tramite PGP o Kerberos.
LPRng include anche alcune impostazioni di esempio adatte per stampanti di rete comuni (principalmente HP LaserJet) che includono alcune capacità di autenticazione. LPRng usa più o meno lo stesso modello di filtri di base di BDS lpd, quindi il supporto LPD offerto dal sito web linuxprinting.org si può applicare anche a LPRng. Questo può aiutare ad usare driver di software libero con molte stampanti.
LPRng è distribuito sia sotto licenza GPL che sotto licenza Artistic.
PPR è uno spooler incentrato su Postscript che include una rudimentale capacità di analisi dalla quale trae diverse belle funzioni. Include buone capacità di autenticazione, un buon supporto per Appletalk, SMB e per client LPD, e una migliore gestione degli errori rispetto a lpd. PPR, come ogni altro spooler, può usare Ghostscript per gestire stampanti non Postscript.
PPR venne scritto, ed è attualmente usato, al Trinity College. La licenza è di tipo BSD; libera per ogni uso ma è obbigatorio citare i realizzatori.
PDQ sta per "Print, Don't Queue" ("Stampa, non accodare" n.d.t.), e il modo in cui lavora riflette questo modello. Il sistema di stampa di PDQ non è incentrato su un demone, ma incorpora una pratica sintassi di configurazione del driver che include la capacità di dichiarare opzioni di stampa, e uno strumento ad interfaccia grafica o a linea di comando per gli utenti tramite il quale specificare le opzioni; gli utenti usano un finestra di dialogo per specificare risoluzione, duplexing, tipo di carta, ecc.
Usare tutti i filtri come utente porta un certo numero di vantaggi: i problemi di sicurezza derivanti da Postscript vengono superati, lavori di stampa di file multipli LaTeX possono essere stampati effettivamente come file dvi, e così via.
PDQ non è esente da difetti: in particolare, processa l'intero lavoro di stampa prima di mandarlo alla stampante. Questo significa che, per grandi lavori, PDQ potrebbe semplicemente essere inutilizzabile: si potrebbe arrivare ad avere centinaia di mega copiati avanti e indietro sul disco. Ancora peggio, per driver lenti come quelli di qualità migliore a getto d'inchiostro, il lavoro di stampa non verrà eseguito finché Ghostscript e il driver non avranno finito di processarlo. Questo potrebbe succedere anche minuti dopo l'invio.
PDQ ha però dei vantaggi; è un modello semplice, che non impedisce il controllo da parte dell'utente. E il normale percorso di controllo non incrocia i confini della sicurezza, così che non soffre dei bug di sicurezza che vengono sempre trovati in altri sistemi. E per finire, è leggero.
Comunque PDQ non è attivamente sviluppato. Un nuovo curatore sarà il benvenuto.
GNUlpr iniziò la sua vita come lavoro sponsorizzato da HP a VA Linux. Sfortunatamente, GNUlpr ora è praticamente morto.
Il Coherent Printing System è un set di script in Perl chiamati "lpr", "lpd", "lprm", e "lpq". Rimpiazzano i programmi con lo stesso nome normalmente forniti con i sistemi Linux.
Il Cisco Enterprise Print System fu sviluppato da Damian Ivereigh quando era sysadmin alla Cisco. Fece molto più di ciò per cui era stato assunto, sviluppando un nuovo sistema di stampa per migliorare un sacco di problemi amministrativi. Cisco autorizzò il rilascio del software liberamente sotto licenza GNU General Public License. L'installazione di CEPS comunque sarà vantaggiosa solo per grandi organizzazioni.
Per far funzionare correttamente il sistema di stampa, occorre prima capire come funziona il software di spool. Tutti i sistemi funzionano essenzialmente allo stesso modo, benché l'ordine esatto possa variare leggermente, e alcuni sistemi saltano uno o due passi:
L'utente invia un lavoro di stampa con le opzioni selezionate. I dati del lavoro di stampa sono solitamente, ma non sempre, Postscript.
Il sistema di spool copia il lavoro di stampa e le opzioni lungo la rete verso la stampante.
Il sistema di spool aspetta che la stampante sia disponibile.
Il sistema di spool applica le opzioni selezionate dall'utente al lavoro di stampa, e ne traduce i dati nel linguaggio nativo della stampante, che solitamente non è Postscript. Questo passaggio si chiama filtraggio; la maggior parte del lavoro per far funzionare il tutto sta nel far funzionare il filtraggio giusto.
Il lavoro è finito. A questo punto solitamente il sistema di spool si occupa di fare un po' di pulizia. Se si fosse verificato qualche errore, lo spooler lo notificherà in qualche modo all'utente (per esempio, via mail).
Per stampare con CUPS, si possono usare sia comandi BSD (si veda la Sezione 5.3.1) che System V, rendendone l'uso molto semplice per chi ha precedenti esperienze con altri sistemi.
Inizialmente a CUPS mancava un backend LPD, che ovviamente fu aggiunto velocemente. Attualmente sono disponibili backend almeno per IPP, LPD, SMB, JetDirect, USB, Netatalk, per stampanti su porta parallela e seriali. Se ne possono trovare altri sulla rete o si possono scrivere da sé.
C'è solo una manciata di driver incorporati che permettono di stampare con molte stampanti, ma probabilmente non alla massima risoluzione possibile. Si può aggiungere a CUPS un file PPD per un driver Postscript, ma se si vuole stampare alla miglior qualità con una nuova stampante HP Deskjet non si avrà fortuna: per questo viene in aiuto Foomatic, che può essere usato in combinazione con CUPS. Foomatic usa un filtro di CUPS chiamato foomatic-rip per fare il suo lavoro. Foomatic-rip usa file PPD per descrivere le capacità della stampante, perfino per stampanti non Postscript. CUPS + Foomatic è attualmente il metodo di stampa raccomandato: alcune distribuzioni Linux già lo usano, e questo numero è destinato a salire.
Lo scheduler di CUPS non solo accetta lavori di stampa, è anche un'interfaccia di amministrazione via web. Attualmente si possono aggiungere/cancellare stampanti, cancellare lavori di stampa, far partire/fermare stampanti. In una prossima release sarà possibile anche spostare i lavori di stampa.
Lpd sta per Line Printer Daemon, e si riferisce, a seconda del contesto, sia al demone che all'intera raccolta di programmi responsabili dello spooling di stampa. Questi sono:
Il demone di spooling. Una sua istanza controlla l'intero sistema, e un'altra è attiva per ciascuna stampante in fase di stampa.
Il comando utente per la stampa. Lpr contatta lpd ed inserisce un nuovo lavoro di stampa nello spool.
Elenca i lavori di stampa presenti in una coda.
Il comando di controllo di lpd. Con lpc si possono attivare, disattivare, riordinare, ecc. le code di stampa.
lprm permette di rimuovere un lavoro di stampa dalla coda.
Quindi, come si mette insieme il tutto? Questo è quello che succede:
Quando il sistema viene avviato viene eseguito lpd, che resta in attesa di connessioni e si occupa di gestire le code di stampa.
L'utente invia un lavoro di stampa con il comando lpr o, in alternativa, con un front-end come GPR, PDQ, ecc. Lpr contatta lpd attraverso la rete e gli fornisce sia il file dell'utente (che contiene i dati da stampare) che un file di controllo (che contiene le opzioni dell'utente).
Quando la stampante è disponibile, l'istanza principale di lpd produce un'istanza figlio lpd che si occupa del lavoro di stampa.
L'istanza figlio lpd esegue il filtro/i
adatto per quel lavoro di stampa (come specificato dall'attributo if
del
file /etc/printcap) ed invia i
dati risultanti alla stampante.
Il sistema lp era stato progettato quando le stampanti erano per lo più
stampanti di linea, cioè adatte a stampare principalmente
in ascii piano. È possibile andare incontro a tutte le necessità di stampa odierne
con lpd usando diverse opzioni nel filtro if
(più o meno; molti altri sistemi fanno un lavoro migliore).
Ci sono molti programmi utili per scrivere filtri LPD, tra i quali:
Ghostscript è un interprete Postscript basato sugli host (come dire un Raster Image Processor o RIP). Accetta Postscript in input, e può produrre in output dati in diversi linguaggi o formati grafici. Ghostscript verrà trattato in la Sezione 10.
ppdfilt è la versione indipendente di un componente CUPS. Si occupa di filtrare Postscript, eseguendo alcune trasformazioni di base (pagine per foglio, copie multiple, ecc.) e aggiungendovi le opzioni dichiarate dall'utente secondo un file PPD (Postscript Printer Definition) solitamente incluso con le stampanti Postscript.
ppdfilt funziona meglio se usato insieme ad un sistema LPD in grado di accettare opzioni (come GNUlpr, o LPRng) e con un filtro che trasformi le opzioni fornite dagli utenti nel comando ppdfilt equivalente. VA Linux e HP forniscono un pacchetto con un filtro rhs modificato che fa esattamente questo; produce buoni risultati se si possiede una stampante Postscript. Si veda la Sezione 8.2.2 per informazioni su questo sistema.
ps2ps è una utilità inclusa con Ghostscript. Filtra Postscript in un Postscript maggiormente razionalizzato, se possibile ad un livello di linguaggio più basso. È utile se si possiede una vecchia stampante Postscript; il software più moderno produce Postscript moderno.
mpage è un'utilità che accetta testo o Postscript e genera output composto da diverse immagini di pagine su ogni foglio. Attualmente ci sono diversi programmi che lo fanno, inclusi enscript, nenscript e a2ps .
a2ps, che sta per any-to-ps, è un programma che accetta diversi tipi di file e li converte in Postscript per la stampa.
Per configurazioni comuni si può probabilmente ignorare completamente questa sezione; meglio passare direttamente, invece, a la Sezione 9, o, meglio ancora, alla documentazione del venditore. La maggior parte delle distribuzioni GNU/Linux fornisce uno o più strumenti adatti anche agli inesperti che permettono di ottenere dalle stampanti più comuni tutto quello qui descritto.
Se lo strumento fornito dal venditore non funziona, o si vuole avere la capacità di controllare interattivamente le opzioni di stampa, si possono usare altri sistemi. APS Filter è un buon sistema; configura le code LPD ed effettua i filtraggi con molta facilità su ogni tipo di sistema Unix.
Si possono anche usare le interfacce di sistema per la stampa dal sito web linuxprinting.org per connettere driver liberi con diversi sistemi di spool. Completato il progetto, queste interfacce offriranno le migliori funzionalità: tutti i tipi di driver liberi saranno supportati, ci saranno opzioni impostabili dagli utenti, e saranno supportati i più comuni sistemi di spool. Attualmente le più moderne distribuzioni usano il sistema foomatic. Tuttavia, alcune distribuzioni possono includere una versione leggermente sorpassata di foomatic.
Se si sta usando un client con CUPS ed è già stato configurato un server CUPS, installare la stampante sul client non potrebbe essere più facile: non c'è niente da fare. Attraverso il broadcasting, il client dovrebbe trovare il server CUPS e configurare automaticamente le stampanti installate. Questa è una delle funzioni di CUPS più apprezzate in una grande rete.
Configurare manualmente le stampanti con CUPS è altrettanto facile. Per chi è alle prime armi con CUPS e/o con la stampa Unix il modo migliore di procedere probabilmente è usare l'interfaccia web. Per chi deve configurare molte stampanti, sarà probabilmente più veloce usare la linea di comando.
L'indirizzo predefinito da cui si accede all'interfaccia web di CUPS è http://hostname:631/admin. Se necessario, la porta può essere cambiata nel file cupsd.conf.
La sintassi generica per aggiungere una stampante da linea di comando è lpadmin -p printer -E -v device -m ppd. Lpadmin con l'opzione -p aggiunge o modifica una stampante. Le stampanti vengono salvate nel file L'opzione -x cancella la stampante indicata. Si legga la pagina di manuale di lpadmin per conoscere le opzioni disponibili.
Esempio 3. Esempi da linea di comando
/usr/sbin/lpadmin -p testpr1 -E -v socket://192.168.1.9 -m deskjet.ppd /usr/sbin/lpadmin -p testpr2 -E -v parallel:/dev/lp0 -m laserjet.ppd /usr/sbin/lpadmin -x testpr1 |
Si possono trovare maggiori informazioni sulla configurazione delle stampanti e sulle opzioni nella documentazione CUPS. Il Software Administrators Manual contiene tutto quello che serve sapere per configurare stampanti con CUPS.
Fino a poco tempo fa le distribuzioni GNU/Linux fornivano LPD. Questa sezione descrive una configurazione di base per LPD; le sezioni successive dettaglieranno la creazione di filtri complessi e la configurazione per la rete.
La configurazione di base di lpd permette di ottenere un sistema in grado di accodare i file in una coda di stampa ed inviarli alla stampante. Questa configurazione non pone alcuna attenzione al fatto che la stampante sia in grado di interpretare i file, e probabilmente non si otterranno stampe di qualità. Ma da qualche parte si deve partire.
Per aggiungere una coda di stampa a lpd, si deve aggiungere un elemento in /etc/printcap, e creare la nuova directory di spool in /var/spool/lpd.
Un elemento di /etc/printcap è qualcosa del genere:
# LOCAL djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :sh: |
Adesso si legga la pagina di manuale di printcap .
Quello sopra è un esempio molto semplice, ma c'è un tranello: se si manda in stampa un file che la Deskjet non può capire si ottengono strani risultati. Per esempio, inviando un normale file di testo Unix ad una deskjet si ottengono delle righe nuove interpretate letteralmente, cioè:
Questa è la prima riga. Questa è la seconda riga. Questa è la terza riga. |
Ovviamente è necessario qualcosa in più, e questo è l'obiettivo del
filtraggio. I lettori più attenti della pagina di manuale di printcap avranno
notato gli attributi if
e of
dello spool.
Bene, if
, cioè il filtro di input, è quello che serve in
questo caso.
Scrivendo un piccolo script chiamato filtro, che
aggiunga l'accapo prima delle nuove righe, l'effetto a gradinata sarà
eliminato. A questo scopo si deve aggiungere una riga if
nell'elemento del printcap illustrato prima:
lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :mx#0:\ :lp=/dev/lp0:\ :if=/var/spool/lpd/dj/filter:\ :sh: |
#!perl # The above line should really have the whole path to perl # La linea precedente dovrebbe contenere il percorso completo a perl # This script must be executable: chmod 755 filter # Questo script deve essere eseguibile: chmod 755 filter while(<STDIN>){chomp $_; print "$_\r\n";}; # You might also want to end with a form feed: print "\f"; # Si potrebbe voler finire con un form feed: print "\f"; |
L'unico problema è che stampare solo testo piano non è esattamente il massimo: certamente sarebbe meglio poter stampare anche PostScript o altri tipi di testo formattato o grafica. Naturalmente è possibile farlo, ed è facile. Il metodo da usare è semplicemente un'estensione del filtro presentato sopra per risolvere il problema della gradinata.
Questo tipo di filtro viene detto filtro magico. Non ci si deve preoccupare di scriverne uno da soli a meno che si stampino cose molto strane: ce ne sono di ottimi a disposizione, e molti hanno strumenti di configurazione interattivi facili da usare. Si dovrà semplicemente scegliere un filtro adatto:
foomatic-rip è un filtro che usa dati tratti dal database di stampanti fornito da LinuxPrinting.org. Supporta essenzialmente tutti i driver liberi, inclusi i normali driver di Ghostscript, i driver Uniprint, e altri programmi di filtri assortiti. foomatic-rip lavora con CUPS, LPRng, LPD, GNUlpr, PPR, PDQ e senza spool.
apsfilter è un filtro creato per essere usato con un gran numero di Unix. Supporta essenzialmente tutti i driver Ghostscript. Lavora anche con diversi tipi di LPD, inclusi BSD e LPRng.
RHS-Printfilters è un filtro creato da Red Hat. È stato incluso dalla versione 4 di Red Hat Linux, come backend per printtool, il loro semplice strumento di configurazione delle stampanti ad interfaccia grafica.
Il sistema di filtri rhs è costruito su un database ASCII incluso nel pacchetto. Questo elenco supporta molti driver Ghostscript e Uniprint, ma nessun driver che faccia da filtro. Inoltre i filtri risultanti non forniscono supporto simile a quello che si può ottenere tramite le opzioni controllabili dall'utente.
Lo strumento printtool crea un file di configurazione chiamato postscript.cfg nella directory di spool. All'interno di questo file, scritto in stile shell, ogni impostazione è una variabile. In casi straordinari, si possono fare cambiamenti direttamente in questo file, cosa che lo strumento printtool non permetterebbe di fare; solitamente si tratterà di specificare un driver Ghostscript particolare, o un file PPD per la versione VA di rhs-printfilters.
VA Linux ha aggiunto alcune migliorie al sistema rhs-printfilters per conto di HP. Con la versione giusta, è possibile selezionare opzioni per stampanti Postscript controllabili tramite file Adobe PPD. Questo sistema è descritto in la Sezione 8.2.2.
C'è un trabocchetto però: le versioni più vecchie di lpd non usano il filtro if per le stampanti di rete, le più recenti invece si (benché spesso senza argomenti). La versione di LPD contenuta nelle distribuzioni più recenti di GNU/Linux e FreeBSD lo usa; molti Unix commerciali invece forniscono ancora LPD in una versione che non lo usa. Si veda la sezione sulla stampa in rete più avanti in questo documento per maggiori informazioni. Avendo solo stampanti locali questo problema non esiste.
Mentre molte versioni di LPD non sono in grado di usare PostScript (senza dare altre possibilità agli utenti), VA Linux ha modificato LPD e il software di filtraggio di Red Hat per supportare le stampanti PostScript piuttosto bene. Il progetto è stato chiamato GNUlpr perché è loro intenzione donare il codice al progetto gnu.
Il sistema VA usa file Postscript Printer Definition, o PPD, che sono forniti dai produttori delle stampanti e dichiarano le opzioni disponibili per la stampante insieme al codice Postscript necessario per attivarle. Con il sistema VA, il normale schema di lavoro di LPD funziona in maniera leggermente diversa:
L'utente può specificare le opzioni usando il
flag -o
. Per esempio, volendo stampare su un lucido
si può specificare -o MediaType:Transparency
.
In alternativa, si possono specificare le opzioni tramite una finestra di dialogo usando il front-end
GPR; si possono vedere alcuni
screenshot di GPR in la Sezione 3.4.3.
LPR invia le opzioni a LPD come attributo esteso nel file di controllo di LPD.
Una versione modificata del pacchetto rhs-printfilters assegna le opzioni estese ad una variabile d'ambiente, e usa ppdfilt per aggiungerle ai dati da stampare.
I pacchetti RPM, o gli archivi compattati dei sorgenti, si possono ottenere dal sito web del progetto su SourceForge. Per i dettagli sull'installazione, si consulti il micro-HOWTO. In sostanza, dovrà essere disinstallata completamente la versione di Red Hat di printtool, di lpd e di rhs-printfilters, e installata invece la versione VA, più ppdfilt, gpr, e poche altre utilità.
Sarà necessario avere anche i file PPD per la propria stampante Postscript. I file PPD solitamente sono abbastanza facili da trovare. VA Linux e HP distribuiscono file PPD per molti modelli di Laserjet: altri venditori forniscono file PPD per le proprie stampanti, e Adobe distribuisce file PPD per molte stampanti.
Al momento molti di questi file sono leggermente difficili da installare. Ma verranno creati strumenti di installazione basati sulla libreria di configurazione delle stampanti libprinterconf, che abilita sia l'autoriconoscimento che la configurazione di rhs-printfilter, sia per stampanti di rete che per stampanti locali.
È possibile usare GPR da solo, senza l'LPD modificato o anche senza rhs-printfilters. GPR può essere compilato con tutto quello che è necessario per effettuare direttamente stampe di tipo Postscript, il che potrebbe essere una soluzione più semplice, adatta a chi non avrà mai bisogno di stampare usando lpr direttamente. |
Dopo aver impostato un sistema LPD in grado di utilizzare il supporto Postscript fornito da VA (GNUlpr), le opzioni della stampante possono essere controllate in due modi:
Per usare GPR, assicurarsi prima di tutto di aver specificato il file PPD corretto. Dopo di che le opzioni della stampante saranno disponibili nel pannello "Avanzate". Le opzioni ppdfilt di base saranno disponibili nel pannello "Comuni".
lpr supporta l'opzione -o
.
È possibile specificare qualunque coppia di opzioni/valori dal file
PPD della stampante con -o
. Per esempio, si consideri
questa proposizione contenuta in un file PPD:
*OpenUI *PrintQuality/Print Quality: PickOne *DefaultPrintQuality: None *OrderDependency: 150 AnySetup *PrintQuality *PrintQuality None/Printer Setting: "" *PrintQuality Quick/QuickPrint: "<< /DeviceRenderingInfo ... *PrintQuality Normal/Normal: "<< /DeviceRenderingInfo << /... *PrintQuality Pres/Presentation: "<< /DeviceRenderingInfo ... *PrintQuality Image/1200 Image Quality: "<< /DeviceRenderi... *CloseUI: *PrintQuality |
PrintQuality
sono
Quick
, Normal
,Pres
, o
Image
. Si potrebbe dare un comando del tipo:
% lpr |
Un certo numero di opzioni sono comuni a tutte le stampanti, e possono essere usate in aggiunta a quelle del proprio file PPD. Tra queste:
page-ranges
È possibile specificare una serie di pagine da stampare. Per esempio,
page-ranges:2-3
.
page-set
È possibile stampare solo pagine pari o dispari. Per esempio,
page-set:odd
.
number-up
È possibile stampare pagine multiple su un foglio. Per esempio,
number-up:2
.
A grande richiesta è inclusa una lista dei permessi su alcuni file interessanti. Ci sono modi migliori per ottenere lo stesso risultato, idealmente usando solo eseguibili SGID e non rendendo tutto SUID root, ma il mio sistema era configurato così dopo l'installazione e funziona. (Sinceramente, se il venditore non è in grado di fornire un lpd che funzioni saranno guai).
-r-sr-sr-x 1 root lp /usr/bin/lpr* -r-sr-sr-x 1 root lp /usr/bin/lprm* -rwxr--r-- 1 root root /usr/sbin/lpd* -r-xr-sr-x 1 root lp /usr/sbin/lpc* drwxrwxr-x 4 root lp /var/spool/lpd/ drwxr-xr-x 2 root lp /var/spool/lpd/lp/ |
Lpd deve essere eseguito da root, in modo che possa connettersi alle porte riservate di lp. Dovrebbe probabilmente diventare UID lp.lp o qualcosa del genere dopo la connessione, ma non credo che lo faccia: il che è un altro motivo per evitare l'uso di BSD LPD.
Con installazioni su larga scala si intendono reti che includono più di due stampanti o macchine, e che hanno necessità speciali. Ecco qui sotto alcuni suggerimenti.
CUPS supporta alcune funzioni interessanti che ne fanno una buona scelta per grandi reti. Per nominarne alcune, le classi di stampa, il controllo degli accessi e la configurazione automatica per i client.
Se si usa LPD per ambienti su scala davvero molto grande, già la sola distribuzione delle informazioni relative a printcap/filtri diventa un problema; il Cisco Enterprise Print System fa riferimento proprio a questo e può essere un buon punto di partenza o una soluzione completa a seconda delle necessità. Le funzioni native di LPRng possono supportare molto bene ambienti di medie o grandi dimensioni.
Ogni stampante dovrebbe avere un singolo punto di controllo, tramite il quale un amministratore possa mettere in pausa, riordinare o redirigere la coda di stampa. Per implementarlo, si dovrebbe far stampare tutti su un server locale, che metterà in coda i lavori di stampa e li indirizzerà alla stampante corretta. Per grandi campus o reti distribuite, ci vorrà un server o un altro sottosistema adatto per la rete per ogni edificio.
Usare CUPS o LPRng, almeno sui server; il sistema BDS LPD è troppo bacato perché si possa farne un uso "reale". Ma non ci si deve basare solo su queste parole; si dovrebbero testare diversi spooler per scoprire quale è più adatto alle proprie necessità.
I client non dovrebbero avere un'unica configurazione di stampa. CUPS permette di configurare automaticamente i client appartenenti alla stessa sottorete. Si potrebbe perfino configurare CUPS (BrowsePoll) per sondare dei server presenti su altre sottoreti e trovare stampanti disponibili. Queste funzioni limitano il numero di configurazioni che devono essere fatte su un client. Per implementare una configurazione di stampa uniforme usando LPRng, si usi la sintassi estesa di printcap per ottenere un printcap adatto per essere usato dappertutto. CEPS permette di farlo creando in cima un database leggero e distribuibile al posto dei file printcap tradizionali.
Non si dovrebbe dare alle code di stampa un nome corrispondente al modello o alla marca della stampante; sarebbe meglio usare un nome più indicativo come l'ubicazione (piano2_nw) o le capacità (colore_trasparenza). Fra tre anni, quando una stampante si romperà, potrà essere rimpiazzata con una di marca diversa o con un modello diverso senza creare confusione.
Pubblicare una pagina web che mostri informazioni dettagliate su ogni stampante, inclusa l'ubicazione, le capacità e così via, considerando di mostrare le code di stampa e includendo un bottone per la rimozione dei lavori di stampa dalla coda. Ambienti di rete complessi saranno ingestibili per gli utenti in mancanza di un'adeguata documentazione.
Su sistemi Windows e Apple, si usino dappertutto i driver specifici per la piattaforma (Samba supporta il meccanismo automatico di scaricamento dei driver di Windows) o, meglio ancora, si usino dappertutto driver Postscript generici. Mai mischiare le cose; gli elaboratori di testo più primitivi spesso producono un output diverso quando viene cambiato il driver di stampa installato; gli utenti non possono avere a che fare con un output diverso a seconda di quale coppia di client/stampante usano.
Per grandi volumi di stampa acquistare, se possibile, una stampante adatta. Se si deve rispettare un budget, si sfruttino le capacità di LPRng di usare una coda di stampa su più stampanti, o le classi di stampa di CUPS assegnando una babysitter; le stampanti sono dispositivi meccanici complessi che spesso si inceppano e finiscono la carta in configurazioni di questo tipo.
Non è più necessario attaccare le stampanti direttamente alle postazioni di lavoro; "server di stampa" di tipo Ethernet oggi costano meno di $100. La capacità di localizzare stampanti ovunque all'interno di una rete è un grande miglioramento rispetto alla necessità di localizzare una stampante vicino ad un host; le stampanti possono essere poste in punti centrali e pratici.
Usare trappole SNMP o altri sistemi di controllo/allarme a vostra disposizione. Qualcuno dovrebbe essere incaricato di controllare e sistemare stampanti senza inchiostro o carta. Per effettuare operazioni di controllo su stampanti SNMP può essere usato Npadmin (si veda la Sezione 11.10.1).
Una normale installazione di LPD non aiuta molto con l'autenticazione. È
possibile specificare il nome di un file di autenticazione tramite l'attributo
af
del file printcap, ma in questo modo l'attributo verrà semplicemente
passato come argomento al filtro if
. È compito nostro
far si che il filtro if
scriva entrate appropriate nel file
di autenticazione, e di processarlo successivamente (il formato tradizionale è
utile principalmente per stampanti in linea, e non è banale trasformarlo
in Perl, dunque non c'è motivo di conservarlo). Usando come
filtro il programma foomatic-rip si dovranno fare dei
cambiamenti, dato che il programma richiede che gli venga indicato un file
di configurazione come nome di file di "autenticazione".
CUPS mette a disposizione l'autenticazione per pagina, passando i lavori di stampa attraverso il filtro pstops. Questo file si aspetta input Postscript. Se si passano lavori di stampa "raw", questi saranno sempre contati come una pagina. Questo significa che l'autenticazione non funzionerà stampando da Windows con il suo driver di stampa nativo.
Ghostscript mette a disposizione l'operatore PageCount che può essere usato per fare il conto delle pagine che compongono un lavoro di stampa; sostanzialmente, verranno aggiunte alcune linee postscript alla fine del lavoro di stampa che serviranno ad aggiungere una voce nel file di autenticazione; il miglior esempio si trova nel file unix-lpr.sh presente nel sorgente di Ghostscript.
L'implementazione dell'autenticazione di unix-lpr scrive su un file dall'interprete Ghostscript, ed è quindi incompatibile con l'opzione raccomandata -dSAFER. Una soluzione migliore potrebbe essere un'interrogazione alla stampante tramite un comando PJL dopo ogni lavoro di stampa, o la scrittura di uno qualche riga di codice postscript che stampi il conto delle pagine sullo standard output, dove possa essere catturato senza dover essere scritto in un file.
Lo spooler di stampa di LPRng include un'implementazione di autenticazione specifica per HP, che interroga la stampante tramite PJL. Questa tecnica dovrebbe funzionare per quasi tutte le stampanti PJL, Postscript o SNMP con le quali si ha una comunicazione a doppio senso.
Avendo una stampante di rete che supporta SNMP, si può usare il programma npadmin per richiedere un PageCount dopo ogni lavoro di stampa. Dovrebbe funzionare correttamente per tutti i lavori di stampa. Si veda la sezione la Sezione 11.10.1 per maggiori informazioni su npadmin.
Questa sezione è, per definizione, incompleta. Ci si senta liberi di inviare dettagli della distribuzione preferita.
Ci sono diversi pacchetti di terze parti creati per facilitare la configurazione delle stampanti sotto Unix. Se ne parla nella la Sezione 8; per riferimenti si può consultare la sottosezione relativa a software di spool particolari.
La RedHat fornisce uno strumento di amministrazione dotato di interfaccia grafica chiamato printtool che può aggiungere stampanti remote e stampanti locali. Permette di scegliere tra le stampanti supportate dal Ghostscript e i dispositivi su cui stampare, e quindi installa una coda di stampa in /etc/printcap ed usa un programma di filtro tratto dal pacchetto rhs-printfilters per supportare postscript ed altri tipi comuni di input. Questa soluzione funziona piuttosto bene, ed è semplicissima da configurare.
Red Hat 6.x forniva una versione LPD BSD; Red Hat 7.x e 8.0 usano LPRng in maniera predefinita.
Red Hat 6.x e 7.x non funzioneranno se la stampante non è supportata dal loro Ghostscript predefinito (che è quello GNU, non quello Aladdin Ghostscript, e che supporta poche stampanti). Se non si riesce a stampare correttamente con il software fornito da Red Hat si controlli la lista di stampanti compatibili riportata sopra (oppure online). Nel caso in cui la stampante non sia supportata dagli strumenti Red Hat, bisognerà installare una versione fatta in collaborazione con Aladdin Ghostscript, e probabilmente sarà meglio usare anche i pacchetti lpdomatic o apsfilter, che riconoscono le stampanti supportate dai più recenti Ghostscript, ed altri ancora.
L'installazione predefinita di Red Hat 8.0 è LPRng anche se si può scegliere CUPS. Ma anche scegliendo esplicitamente solo CUPS, verrà installato anche LPRng. CUPS diventerà finalmente lo spooler predefinito a partire da Red Hat 8.1.
Red Hat 9.0 usa CUPS come spooler predefinito.
Debian permette di scegliere tra LPD piano, LPRng o CUPS; le scelte migliori probabilmente sono LPRng o CUPS. Nel ramo unstable (attualmente chiamato sid) è possibile trovare PDQ. Debian offre anche una scelta di strumenti per configurare le stampanti; quella più sicura è usare apsfilter versione 5 o superiore, che aggiunge il supporto per lo schema del driver uniprint per LPRng e Ghostscript. È supportato anche lo strumento printtool di Red Hat, per chi ama l'uso di strumenti di amministrazione con una interfaccia grafica.
Il sistema di stampa di SuSE Linux è basato su apsfilter, con alcuni miglioramenti; l'apsfilter di SuSE riconosce tutti i file nei formati più comuni (incluso l'HTML, se è installato html2ps). Ci sono due modi per installare stampanti sui sistemi SuSE:
Yast permette di configurare "PostScript", "DeskJet" e "Altre stampanti", supportati dai driver Ghostscript; è anche possibile installare stampanti HP di tipo GDI (DeskJet 710/720, 820, 1000, tramite il pacchetto "ppa"). YaST crea voci adatte per /etc/printcap per ogni stampante ("raw", "ascii", "auto" e "color", se la stampante da configurare è a colori); crea anche directory di spool e mette in ordine i file apsfilterrc, tramite i quali è possibile mettere a punto diverse impostazioni (precaricamenti Ghostscript, formato della carta, orientamento, risoluzione, sequenze di escape della stampante, e così via). Con YaST è anche possibile impostare stampanti di rete (TCP/IP, Samba, o stampanti Novell Netware).
Oltre a questo SuSE include il normale programma SETUP tratto dal pacchetto originale apsfilter (con alcuni miglioramenti); questo script di configurazione può essere invocato tramite il comando lprsetup. Una volta presa l'abitudine alla sua interfaccia grafica, si sarà in grado di configurare stampanti locali e di rete.
Il manuale di installazione di SuSE spiega entrambe le procedure di configurazione.
Wolf Rogner ha riportato alcune difficoltà con SuSE. A quanto pare potrebbe presentarsi il seguente bug:
lo script SETUP di Apsfilter sembra essere leggermente rovinato, come gli strumenti di configurazione di KDE. Si usi YaST. [Ed: tutto ciò è ancora valido? è passato diverso tempo dall'avviso di Wolf.]
Per stampanti di rete che necessitano di essere alimentate tramite Ghostscript, sarà necessario togliere il commento alla riga REMOTE_PRINTER="remote" in /etc/apsfilterrc. Fatto ciò bisognerà usare YaST per configurare la stampante e, alla voce Configurazione di rete, impostare la coda della stampante remota.
YaST non permette di configurare stampanti laser a colori, perciò bisognerà configurare la stampante come monocromatica e cambiarla successivamente come stampante a colori dappertutto nella relativa voce di printcap. Bisognerà anche rinominare la directory di spool.
Caldera fornisce LPRng. Non si conoscono gli strumenti di configurazione messi a disposizione.
Recentemente è stato aggiunto un impiegato di Caldera come curatore del dabatase LinuxPrinting.org; evidentemente intendono fornire CUPS ed un sistema di stampa basato su Foomatic nelle prossime release.
Corel è basata su Debian, quindi dovrebbe essere valido tutto quello spiegato prima. In più, hanno scritto un loro strumento di configurazione basato sulle librerie sysAPS, che a sua volta usa il mio database. Sicuramente è stato fatto come parte di WordPerfect.
Corel gestisce un newsgroup di supporto chiamato corelsupport.linux.printing. Il tipo di traffico sembra essere relativo a WordPerfect e Corel Linux.
Dalla versione 7.2b1, Mandrake fornisce in modo predefinito CUPS, insieme ad una semplice interfaccia grafica di amministrazione ottenuta tramite il programma QtCUPS. Till ebbe alcuni problemi nel cercare di includere quanti più driver possibile, e i loro file PPD per CUPS sono stati realizzati con il codice del mio foomatic. Mandrake è stata la prima distribuzione a fornire CUPS.
Penso che versioni precedenti fornissero lo strumento printtool di Red Hat.
Slackware fornisce i filtri APS. Lo script SETUP di apsfilter viene installato sotto il nome «apsfilterconfig»: usandolo, è possibile ottenere una configurazione ragionevole.
Dalla versione 9.0, CUPS è stato incluso nella directory extras, ma il sistema predefinito è rimasto LPRng + APSFilter.
Ghostscript è un programma incredibilmente importante per la stampa ottenuta tramite driver liberi. La maggior parte del software di stampa per Unix genera PostScript, che è una scelta da oltre mezzo milione su una stampante. Ghostscript, comunque, è gratuito, e genera il linguaggio adatto per la stampante dal PostScript.
Ghostscript è disponibile in diverse forme. La versione commerciale di Ghostscript, detta Aladdin Ghostscript, può essere usata liberamente per scopi personali, ma non può essere distribuita da entità commerciali. È almeno un anno avanti rispetto alla versione libera di Ghostscript; al momento, per esempio, supporta molte più stampanti a getto d'inchiostro a colori rispetto al vecchio Ghostscript, e fornisce un supporto migliore per il formato PDF.
La principale versione libera di Ghostscript è il Ghostscript GNU, ed è semplicemente una versione vecchia del ghostscript Alladin. Questo accordo alquanto delicato ha permesso alla Aladdin di diventare un progetto di software libero totalmente autonomo; le versioni principali sono fatte da L Peter e da alcuni impiegati, e vengono fornite con una licenza ai produttori di software e hardware per poter essere usate in prodotti commerciali. Sfortunatamente, anche se questo schema ha permesso a L Peter di portare avanti il suo lavoro per anni, nello stesso tempo ha inibito la partecipazione dell'intera comunità di software libero. Gli autori dei driver, in modo particolare, trovano questo accordo poco utile. I piani di pensionamento di L Peter danno mandato ad una maggior partecipazione della comunità nel progetto, e per questo egli sta prendendo in considerazione cambiamenti nella licenza, ed ha creato un progetto SourceForge.
La terza versione di Ghostscript è ESP Ghostscript, mantenuta da Easy Software Products (gli autori di CUPS) che ha stipulato un contratto con la Epson. ESP Ghostscript combina i driver del progetto gimp-print con quelli GNU Ghostscript, più un assortimento di patch. Questa versione non è ancora in pieno corso, ma sarà presto disponibile, e si spera che possa semplificare la vita per chi possiede stampanti che usano driver Gimp.
Qualsiasi cosa si faccia con
gs,
ci si assicuri di eseguirlo con l'opzione che disabilita l'accesso ai file
(-dSAFER
). PostScript è un linguaggio pienamente funzionale,
ed un programma PostScript difettoso può procurare più di un mal di testa.
Parlando di PDF, il Portable Document Format di Adobe (almeno dalla 1.3) è al momento poco meno di un PostScript organizzato in un file compresso. Ghostscript può trattare input di tipo PDF come fa con i Postscript. Potreste essere i primi dell'isolato ad usare una stampante in grado di gestire file PDF.
Tipicamente, Ghostscript funzionerà tramite qualunque filtro venga impostato (si raccomanda Foomatic se il venditore non ha fornito strumenti adatti), ma per effettuare un debug è spesso più utile usarlo direttamente.
gs -help darà un breve elenco di opzioni e di driver disponibili (questa lista indicherà i driver compilati, non la lista principale di tutti i driver disponibili).
Si può far partire gs per scopi di test con: «gs <options> -q -dSAFER -sOutputFile=/dev/lp1 test.ps».
Ci sono un sacco di cose che si possono fare se l'output di gs non è soddisfacente (in realtà si può fare qualsiasi cosa, avendo i sorgenti).
Alcune di queste opzioni, e anche altre, sono descritte nella guida utente di Ghostscript (il file Use.htm nella distribuzione Ghostscript; probabilmente sarà installato sotto /usr/doc o /usr/share/doc ) sono tutti ottimi candidati come opzioni per i driver nel sistema di filtri.
La posizione, la dimensione ed il rapporto altezza-larghezza dell'immagine sulla pagina dipendono dal driver specifico della stampante di ghostscript. Se ci si accorge che le pagine sono troppo corte, o troppo lunghe, o troppo grandi di un fattore due, si dovrebbe controllare il sorgente del driver della stampante e modificare i parametri che sembrano pertinenti. Sfortunatamente ciascun driver è diverso dall'altro, e quindi non si può dire esattamente cosa modificare, ma la maggior parte è ragionevolmente ben commentata.
Molte stampanti non laser hanno il problema che i singoli punti sono troppo grandi. Ciò dà luogo a stampe troppo scure. Avendo questo problema con un driver non regolabile in altri modi, si dovrà usare una funzione di trasferimento. Semplicemente si crei il seguente file nella directory lib di ghostscript e si aggiunga il suo nome alle chiamate di gs, appena prima del file vero e proprio. Si potrebbe aver bisogno di modificare i valori per adeguarli alla stampante: valori più bassi daranno stampe più chiare. Specialmente se il driver usa l'algoritmo di Floyd-Steinberg per rasterizzare i colori, i valori più bassi (0.2-0.15) sono una buona scelta.
%! %transfer functions for cyan magenta yellow black {0.3 exp} {0.3 exp} {0.3 exp} {0.3 exp} setcolortransfer |
È anche possibile rimettere a posto stampanti che hanno qualche problema con il colore modificando questi valori. Nel fare questo tipo di cose si raccomanda l'uso del file colorcir.ps, che viene fornito con ghostscript (nella sottodirectory example/), come pagina di prova.
Per molti dei nuovi driver per stampanti a getto d'inchiostro a colori sono presenti opzioni da linea di comando, o diversi driver upp, che implementano gamma e altri cambiamenti per adattare la stampante a diversi tipi di carta. Si dovrebbe guardare anche questo prima di fare tentativi con Postscript per sistemare i problemi.
Il dithering predefinito dei colori in Ghostscript è ottimizzato per dispositivi a bassa risoluzione. Il dithering sarà effettuato in maniera piuttosto grossolana nel tentativo di ottenere un output a 60ppi (non dpi, ppi: l'"apparente" colore dei pixel che si otterrà dopo il dithering). Questo produrrà, sulle moderne stampanti a colore, un output piuttosto povero; in particolare, stampanti a getto d'inchiostro con carta fotografica sono in grado di ottenere impostazioni ppi molto più fini.
Per le regolazioni necessarie, si usi l'opzione di Ghostscript
-dDITHERPPI=x
, nella quale x
è il valore da
usare. Questo potrebbe, o non potrebbe, avere effetto con tutti i driver; molti nuovi driver (per
esempio il driver stp delle Epson Stylus) implementano un
loro dither e non danno importanza a questa impostazione. Alcuni driver possono
usare sia il normale driver Ghostscript che un driver specifico per il
dithering (per esempio, il driver bjc600 delle Canon
Bubblejet).
In effetti il dithering di Ghostscript è piuttosto rudimentale. Molte delle cose necessarie per ottenere un buon output con le stampanti moderne semplicemente in Ghostscript non sono disponibili. La licenza di Ghostscript, e il risultante tipo di sviluppo "a cattedrale", impedisce a vari progetti di sistemare questa situazione (e il mondo del software libero avrebbe pronto e in attesa tutto il software necessario per farlo). Comunque, a partire dall' Open Source Printing Summit 2000, tutte le persone coinvolte si stanno parlando, così ci si può aspettare un miglioramento della situazione in tempi brevi.
Una delle capacità di molti spooler è il supporto della stampa tramite la rete su stampanti fisicamente connesse ad altre macchine, o direttamente alla rete. Con una attenta combinazione di filtri e utilità assortite, si può far stampare lpd su stampanti connesse a qualsiasi tipo di rete, in modo del tutto trasparente.
Per abilitare macchine remote a stampare su una stampante usando il protocollo LPD, si devono elencare tali macchine in /etc/hosts.equiv o /etc/hosts.lpd. (Si noti che aggiungere una macchina a hosts.equiv ha molti altri effetti; ci si assicuri di sapere cosa si sta facendo prima di elencarvi una macchina). Si possono anche abilitare solo certi utenti dell'altra macchina a stampare su una stampante utilizzando l'attributo rs; per informazioni si legga la pagina di manuale di lpd.
Per stampare su un'altra macchina, bisogna aggiungere a /etc/printcap una voce di questo tipo:
# REMOTE djet500 lp|dj|deskjet:\ :sd=/var/spool/lpd/dj:\ :rm=machine.out.there.com:\ :rp=printername:\ :sh: |
Si può anche usare rplr per inviare un lavoro di stampa direttamente in una coda su una macchina remota, senza doversi preoccupare di configurare lpd per supportare la stampa remota. La sua maggiore utilità si dimostra quando si stampa solo occasionalmente su un gran numero di stampanti. Dall'annuncio di rlpr:
Rlpr usa il TCP/IP per inviare lavori di stampa a server lpd ovunque su una rete.
A differenza di lpr, non necessita che la stampante remota sia esplicitamente conosciuta alla macchina da cui si vuole stampare (ad esempio tramite /etc/printcap) e pertanto è molto più flessibile e richiede meno amministrazione.
Rlpr può essere usato ovunque si possa usare un normale lpr, ed è compatibile all'indietro con l'lpr BSD.
Il maggior vantaggio che si ottiene con rlpr è la capacità di stampare remotamente da qualsiasi macchina a qualsiasi macchina, senza preoccuparsi di come sia configurato il sistema su cui si desidera stampare. Inoltre può lavorare come un filtro allo stesso modo dell'lpr tradizionale, in modo che applicazioni client in esecuzione su una macchina remota, come Netscape, xemacs e così via possano stampare sulla macchina locale senza sforzo.
Rlpr è disponibile presso Metalab.
Si possono trovare molte più informazioni al riguardo nel Printing to Windows mini-HOWTO.
È possibile dirigere una coda di stampa, attraverso il programma smbclient (che fa parte della suite Samba), ad un servizio di stampa SMB basato su TCP/IP. Samba include uno script chiamato smbprint per farlo: in breve, si deve inserire un file di configurazione per la stampante in questione nella directory di spool, e si deve installare lo script smbprint come if.
In /etc/printcap ci sarà qualcosa del genere:
lp|remote-smbprinter:\ :sh:\ :lp=/dev/null:\ :sd=/var/spool/lpd/lp:\ :if=/usr/local/sbin/smbprint: |
Leggere la documentazione all'interno dello script smbprint per ulteriori informazioni sulla configurazione.
È anche possibile usare smbclient per passare un file direttamente al servizio di stampa SMB senza coinvolgere lpd. Controllare la pagina di manuale.
La suite ncpfs comprende una utilità chiamata nprint che fornisce le stesse funzionalità di smbprint , ma per NetWare. È possibile ottenere ncpfs da Metalab . Dalla LSM per la versione 0.16:
"Con ncpfs si possono montare volumi del server NetWare sotto Linux. Inoltre è possibile stampare verso code di stampa NetWare e fare lo spool di code di stampa NetWare verso lo spool di stampa Un*x. Si avrà bisogno del kernel 1.2.x, o 1.3.54 e superiori. ncpfs non funziona con kernel della serie 1.3.x inferiori alla 1.3.54."
Per far funzionare nprint tramite lpd, serve un piccolo script della shell che stampi lo stdin sulla stampante NetWare, e che va installato come if per una coda di stampa di lpd. Si otterrà qualcosa del tipo:
sub2|remote-NWprinter:\ :sh:\ :lp=/dev/null:\ :sd=/var/spool/lpd/sub2:\ :if=/var/spool/lpd/nprint-script: |
#! /bin/sh # You should try the guest account with no password first! # Si dovrebbe provare prima di tutto con un account guest senza password. /usr/local/bin/nprint -S net -U name -P passwd -q printq-name - |
Il pacchetto netatalk comprende qualcosa di simile a nprint e a smbclient. Altri hanno documentato la procedura per stampare da e verso una rete Apple molto meglio di quanto si potrebbe mai fare qui; si veda il Linux Netatalk-HOWTO .
Molte stampanti sono dotate di un'interfaccia ethernet verso la quale si può stampare direttamente usando il protocollo LPD. Per farlo, si possono seguire le istruzioni allegate alla stampante o al suo adattatore di rete, ma in generale tali stampanti "eseguono" lpd, e forniscono una o più code su cui stampare. Una HP, per esempio, dovrebbe funzionare con un printcap del tipo:
lj-5|remote-hplj:\ :sh:\ :sd=/var/spool/lpd/lj-5:\ :rm=printer.name.com:\ :rp=raw: |
Stampanti HP Laserjet con interfacce JetDirect generalmente supportano due code lpd incorporate: quella "raw" che accetta PCL (e se possibile Postscript) e quella "text" che accetta direttamente codici ascii (e risolve automaticamente l'effetto a gradinata). Con una stampante JetDirect Plus3 a tre porte, le code si chiameranno "raw1", "text2" e così via.
Si noti che la società ISS ha identificato un assortimento di attacchi di tipo "denial of service" che bloccano le interfacce HP Jetdirect. La maggior parte è stata scoperta nell'autunno 98. Questi problemi sono comuni nel codice incorporato; poche apparecchiature da ufficio dovrebbero essere esposte al traffico Internet.
In installazioni su larga scala, specialmente in un ambito in cui alcune stampanti non supportano il PostScript, può essere utile configurare un server di stampa dedicato, verso il quale stampano tutte le macchine, e che esegue le varie istanze di ghostscript. Questo permetterà di mettere in pausa o riordinare la coda, usando i comandi topq e lprm.
Inoltre permette alla GNU/Linux box di agire come server di spool per la stampante, in modo che gli utenti della rete possano completare i loro lavori di stampa velocemente e andare avanti con le loro cose senza dover aspettare che finisca il lavoro di stampa inviato da qualcun altro. È una soluzione suggerita anche quando siano presenti vecchie HP Jetdirects impossibili da sistemare; riduce infatti la probabilità che le stampanti si inceppino.
Per farlo, si dovrà impostare una coda sulla linux box che punti alla stampante HP LJ equipaggiata con l'interfaccia ethernet (come detto prima). Poi si impostino anche tutti i client della LAN perché puntino alla coda LPD (lj-5 nell'esempio riportato sopra).
Alcune stampanti di rete HP in apparenza non tengono conto delle impostazioni delle intestazioni delle pagine inviate dai client; la generazione interna delle intestazioni può essere disattivata connettendosi via telnet alla stampante, premendo due volte il tasto invio e scrivendo "banner: 0" seguito da "quit". Ci sono anche altre impostazioni che si possono cambiare in questo modo; scrivere "?" per vederne una lista.
Tutte le impostazioni possono essere controllate tramite il software webJetAdmin di HP. Questo pacchetto viene eseguito come demone, e accetta richieste http su una porta designata allo scopo. Tramite l'uso di moduli e di applet Java permette di controllare stampanti HP sulla rete. Teoricamente, può anche controllare code di stampa Unix, ma lo fa tramite il servizio rexec, che è assolutamente insicuro. Sarebbe meglio non usare questa funzione.
Alcune stampanti (e stampanti messe in rete come "scatole nere") supportano solo una specie di non-protocollo basato su connessioni TCP piane, che qualche volta viene chiamato protocollo "AppSocket". Degne di nota in questa categoria sono le vecchie schede JetDirect (comprese alcune JetDirectEx). Fondamentalmente, per stampare su stampanti di questo tipo si deve aprire una connessione TCP verso la stampante su una porta specifica (di solito 9100, o 9100, 9101 e 9102 per box a tre porte) e trasmetterle il documento da stampare. Il supporto per trasmettere lavori di stampa a porte TCP casuali è incorporato in LPRng, ma con l'lpd BDS non è così semplice. La cosa migliore da fare probabilmente è ottenere e usare una piccola utilità chiamata netcat.
In caso di fallimento lo si può implementare, tra l'altro, usando il programma scritto in Perl riportato sotto. Per ottenere le migliori prestazioni, si usi il programma netcat ("nc"), che più o meno fa le stesse cose in maniera generica. Molte distribuzioni dovrebbero includere netcat.
if
per una stampante remota con il vecchio
LPDUn difetto delle vecchie versioni di lpd è che l'if
non
viene eseguito per le stampanti remote. (Versioni successive alla 0.43
comprendono la modifica che ha avuto origine su FreeBSD che permette a
if
di essere sempre eseguito). Se si ha bisogno di eseguire
un if
su una stampante remota, e ci si accorge che lpr non
funziona, si può ottenere la stampa configurando una coda di stampa doppia
e riaccodando il lavoro di stampa. Come esempio si consideri questo
printcap:
lj-5:\ :lp=/dev/null:sh:\ :sd=/var/spool/lpd/lj-5:\ :if=/usr/lib/lpd/filter-lj-5: lj-5-remote:sh:rm=printer.name.com:\ :rp=raw:sd=/var/spool/lpd/lj-5-raw: |
#!/bin/sh gs <options> -q -dSAFER -sOutputFile=- - | \ lpr -Plj-5-remote -U$5 |
L'opzione -U
di lpr funziona solamente se lpr è
eseguito come demone, e imposta il nome utente corretto nella
seconda coda di stampa. Probabilmente è meglio usare un metodo più robusto per
determinare il nome dell'utente, perché in alcuni casi non è il quinto
argomento. Si veda la pagina di manuale di
printcap
.
La stampa da un client Window (o presumo OS/2) ad un server Un*x è supportata direttamente su SMB tramite l'uso del pacchetto SAMBA, che supporta anche lo scambio di file tra il file system Un*x e i client Windows.
Samba include una documentazione molto completa, e si possono trovare anche buone FAQ al proposito. La configurazione può essere fatta o tramite un filtro magico sulla macchina Un*x per stampare PostScript, o girandoci intorno installando un driver specifico della stampante su tutte le macchine Windows e creando una coda senza alcun filtro. In alcuni casi fidarsi del driver Windows può produrre un output migliore, ma dal punto di vista amministrativo possono crearsi un sacco di problemi se ci sono molti client Windows. Meglio provare Postscript per primo. Per superare questo problema, le versioni più moderne di Samba dovrebbero supportare il meccanismo automatico di scaricamento dei driver offerto dai server Windows NT.
Il supporto per la stampa da client Apple viene supportato da Netatalk tramite EtherTalk. Si veda la pagina Netatalk HOWTO per maggiori informazioni.
In verità, comunque, qualunque Mac moderno può stampare tramite TCP/IP usando piuttosto bene il protocollo LPD. UVa mette a disposizione una pagina di supporto molto carina che spiega dettagliatamente come impostarlo.
Il pacchetto ncpfs include un demone chiamato pserver che può essere usato per fornire servizi ad una coda di stampa NetWare. Per quanto ne so, questo sistema richiede NetWare basato su Bindery, ad esempio 2.x, 3.x o 4.x con l'accesso bindery abilitato.
Si veda il sito FTP di ncpfs per maggiori informazioni su ncpfs e sul suo programma pserver.
Quasi tutte le stampanti di rete supportano alcuni metodi amministrativi remoti: spesso si possono configurare tramite pagine web facili da usare. Molto più utile è il supporto per l'amministrazione via SNMP: tipicamente, sarà possibile trovare interessanti informazioni sullo stato della stampante, come i livelli dell'inchiostro e della carta, i volumi di stampa, e così via; inoltre solitamente si possono cambiare alcune impostazioni. Il controllo delle stampanti via SNMP, e alcune altre cose relative alla stampa, sono state standardizzate dal Printer Working Group di IEEE.
Npadmin è un programma a linea di comando che offre un'interfaccia per le funzionalità SNMP delle stampanti di rete. Implementa il Printer MIB standard, insieme a pochi schemi proprietari dei venditori usati principalmente per vecchi dispositivi. Supporta sia azioni tese a trovare le stampanti che diverse richieste sullo stato della stampante.
npadmin ha una pagina di manuale eccellente, e molte distribuzioni basate su RMP e dpkg lo distribuiscono in pacchetti precompilati.
Oltre a npadmin, ci sono altri strumenti SNMP che potrebbero rivelarsi utili. snmptraplogd può effettuare il log di eventi trappola SNMP, il che è utile per controllare stampanti bloccate, senza carta, e così via; può ritrasmettere in modo semplice alcuni eventi ad un paginatore, o inviare una email.
Anche se npadmin mette a disposizione un supporto semplificato per molte interfacce SNMP delle stampanti di rete, alcune tra queste potrebbero includere ulteriori e poco comuni estensioni aggiunte dai produttori. In questo caso, si possono usare gli strumenti SNMP della CMU, che permettono operazioni SNMP GET e SET arbitrarie, come pure ricerche e simili. Con essi e con un po' di lavoro, sara' possibile usare qualunque funzione SNMP offerta dal MIB della stampante. Potrebbe essere necessario ottenere un MIB dal produttore per capire quali sono le variabili; alcune volte, i produttori pensano che gli utenti useranno solo gli strumenti proprietari che forniscono.
libprinterconf di VA Linux include del codice per trovare le stampanti di rete. Le stampanti sono identificate tramite una libreria interna contenente firme di stampanti; al momento questa libreria non è molto grande, ma include molti modelli comuni di stampanti di rete.
Come si diceva, alcune stampanti non sono supportate perché non parlano il normale linguaggio delle stampanti, usando invece la CPU del computer per interpretare una mappa di bit che viene poi trasmessa alla stampante ad una velocità predefinita. Alcune volte queste stampanti parlano anche qualcosa che somiglia al PCL, ma più spesso no. In pochi casi (si tratta di stampanti di livello molto basso) non usano nemmeno una normale porta parallela, ma fanno affidamento sul driver del venditore per emulare il comportamento dell'hardware (principalmente il controllo di flusso).
Comunque, c'è modo di girarci intorno se ci si trova bloccati con un catorcio di questo tipo.
Ora è disponibile un driver per stampanti Ghostscript (chiamato
mswinpr2) che stampa usando chiamate GDI Windows. C'è anche
uno strumento che serve a redirigere le porte chiamato redmon
che passerà un lavoro di stampa attraverso Ghostscript prima di stamparlo.
(Più o meno come un filtro if
nell'LPD Unix). Messi insieme,
questi due strumenti permettono ad una macchina Windows di stampare PostScript
verso una stampante solo Windows attraverso il driver del venditore.
Una stampante locale che non può essere usata direttamente può essere esportata come stampante "Postscript" usando redmon, Ghostscript e mswinpr2 da un PC Windows per stampare attraverso il driver del venditore.
Alcune stampanti HP usano "Printing Performance Architecture" (un modo commerciale per dire "siamo troppo economiche per poter implementare PCL"). Il supporto viene fatto in maniera indiretta tramite il traduttore pbm2ppa scritto da Tim Norman. Sostanzialmente, tramite ghostscript si interpreta PostScript in una immagine bitmap in formato pbm e usando pbm2ppa lo si traduce in un formato ppa specifico per la stampante pronto per essere scaricato alla stampante. Questo programma ormai si può trovare anche nel formato dei driver di ghostscript.
Il software ppa può essere preso dalla sua home page; pbm2ppa supporta alcuni modelli di HP 720, 820 e 1000; si veda la documentazione compresa nel pacchetto per maggiori dettagli.
Quasi tutte le stampanti a getto d'inchiostro economiche della Lexmark usano un linguaggio proprietario e sono quindi stampanti per Windows. Comunque Henryk Paluch ha scritto un programma che può stampare sulla Lexmark 7000: si spera che sia in grado di capire i colori ed estendere il supporto ad altre stampanti Lexmark a getto d'inchiostro. Si veda qui per maggiori informazioni.
Allo stesso modo, ora si possono trovare driver per le stampanti 5700, 1000, 1100, 2070, 3200 e altre. Si veda l'elenco delle stampanti supportate, e il mio sito web, per maggiori informazioni su come ottenere questi driver.
È possibile stampare su un fax con o senza un modem.
Ci sono una quantità di programmi per fax che permettono di spedire e ricevere fax. Uno dei più potenti è HylaFax di Sam Leffler. Supporta di tutto, dall'uso di più modem al broadcasting.
SuSE fornisce un client Java HylaFax che lavora dichiaratamente su qualunque piattaforma Java (inclusi Windows e GNU/Linux). Ci sono anche client per fax non Java che lavorano su molte piattaforme; GNU/Linux si potrà certamente occupare di inviare fax da una rete.
È anche disponibile, e probabilmente è una scelta migliore per piccole installazioni, efax , un semplice programma che spedisce e riceve fax. Il programma di getty mgetty può ricevere fax tramite efax (e può anche gestire la posta vocale o login interattivi).
Esiste un servizio sperimentale che permette di spedire un messaggio email contenente qualcosa che si vorrebbe stampare in modo che questo compaia su un fax da qualche altra parte. Essendo supportati anche formati come il postscript, questo è un servizio che può essere utile, anche se la copertura mondiale è a macchie. Per maggior informazioni sulla stampa tramite servizi di stampa remota si veda il sito WWW sulla stampa remota .
Il servizio di invio fax basato sul web viene fornito da una quantità di società. EFax, in particolare, offre la ricezione gratuita di fax (unicamente al proprio numero di fax) tramite email, mentre la trasmissione è a pagamento. Altre società offrono servizi simili.
Qui abbiamo veramente tantissimi programmi. Sostanzialmente Linux può eseguire molti tipi di binari con vari livelli di successo: Linux/x86, Linux/Alpha, Linux/Sparc, Linux/foo, iBCS, Win16/win32s (con dosemu, e, un giorno, con Wine), Mac/68k (con Executor) e Java. Tratteremo solo di applicazioni native per Linux e di programmi comuni per Unix.
La maggior parte dei linguaggi di markup è adatta a progetti molto grandi o ripetitivi, nei quali si desidera che sia il computer a controllare l'aspetto del testo, per rendere tutto uniforme.
Questo è stato uno dei primi linguaggi di markup nelle versioni originali di Unix. Le pagine di manuale sono l'esempio più comune di testo formattato con le macro *roff; molte persone lo gradiscono, ma nroff ha una sintassi più arcana del necessario (si veda Figura 12), che lo rende inadeguato per nuovi lavori. Vale la pena sapere, comunque, che si può comporre una pagina di manuale direttamente in postscript con groff. La maggior parte dei comandi man lo fanno per vostro conto con man -t foo | lpr .
Figura 12. Esempio di input roff
.B man is the system's manual pager. Each .I page argument given to .B man is normally the name of a program, utility or function. The .I manual page associated with each of these arguments is then found and displayed. A .IR section , if provided, will direct .B man to look only in that .I section of the manual. |
TeX, ed il package di macro LaTeX, è uno dei più usati linguaggi di markup in ambiente Un*x anche se non è nato con Unix, ed è disponibile per un'ampia varietà di sistemi. Molti lavori tecnici sono scritti in LaTeX perchè semplifica notevolmente i problemi di aspetto della pagina ed è ancora uno dei pochi sistemi di text processing che supporta bene e completamente la simbologia matematica. TeX produce file dvi , che possono essere convertiti in PostScript oppure nel PCL di Hewlett Packard con dvips o dvilj. Per installare TeX o LaTeX usare l'intero gruppo di pacchetti teTex, che contiene tutto il necessario. Le installazioni più recenti includono pdfTeX e pdfLaTeX, che producono direttamente file Adobe PDF. Sono disponibili comandi per creare, nel file PDF, hyperlink e funzioni di navigazione.
Figura 13. Esempio di input LaTeX
\subsubsection{NAT} Each real server is assigned a different IP address, and the NA implements address translation for all inbound and outbound packets. \begin{description} \item[Advantage] Implementation simplicity, especially if we already implement other NAT capabilities. \item[Disadvantage] Return traffic from the server goes through address translation, which may incur a speed penalty. This probably isn't too bad if we design for it from the beginning. \item[Disadvantage] NAT breaks the end-to-end semantics of normal internet traffic. Protocols like ftp, H.323, etc would require special support involving snooping and in-stream rewriting, or complete protocol proxying; neither is likely to be practical. \end{description} |
C'è almeno un parser sgml libero per i sistemi Un*x; esso forma la base del sistema di documentazione Linuxdoc-SGML, ma supporta anche altri DTD, in particolare DocBook. Questo documento è scritto in DocBook-DTD SGML; si veda, per un esempio, Figura 14.
Figura 14. Esempio di DocBook SGML
<varlistentry> <term>SGML</term> <listitem> <para> There is at least one free SGML parser available for Un*x systems; it forms the basis of Linuxdoc-SGML's homegrown document system. It can support other DTD's, as well, most notably DocBook. This document is written in DocBook-DTD SGML. </para> </listitem> </varlistentry> |
Non c'è carenza di elaboratori di testo WYSIWYG: sono disponibili parecchie suite complete di programmi per l'ufficio, compresa una che è libera per uso personale (StarOffice).
Questa completa suite per l'ufficio include tutte le funzioni che ci si potrebbe aspettare, inclusa l'importazione ed esportazione di file in formato Microsoft Office (compresi documenti Word). C'è un mini-HOWTO che spiega come ottenerlo ed installarlo. Dovrebbe funzionare con tutte le stampanti compatibili con GNU/Linux, visto che genera PostScript.
Corel distribuisce una versione di base di WordPerfect 8 libera per GNU/Linux, e vende vari pacchetti di Word Perfect Office 2000 (che include WordPerfect, Corel Draw e Quattro Pro versione 9). La pagina Linux WordPerfect tipi di caratteri e stampanti contiene informazioni su come configurare WordPerfect per l'uso sia con Ghostscript che con il suo driver incorporato (che in apparenza è identico al driver di WordPerfect per DOS, se il driver della stampante non è incluso nella distribuzione).
Applix è una suite per l'ufficio cross-platform (cioè che funziona su diversi Unices, su Windows e su altri) venduta dalla Applix. Anche Red Hat e SuSE la vendevano quando era l'unica suite disponibile; ora le vendite sono tornate alla Applix. Questa è l'unica suite di applicazioni nativa in stile Unix; si integra probabilmente meglio con il modo Unix di fare le cose.
AbiWord è uno dei vari progetti di elaboratori di testo WYSIWYG GPL, che ha creato un elaboratore di testi molto carino basato su formato XML e che può importare file Word. AbiWord è ancora in costruzione, anche se per ora è utilizzabile per piccole cose.
Lyx è un front-end per LaTeX che sembra molto promettente. Per maggiori informazioni si veda la pagina web di LyX . Se ne può trovare anche una versione in stile KDE, che si chiama Klyx; l'autore di LyX e il promotore di KDE sono la stessa persona.
Maxwell è un elaboratore di testo molto semplice basato su un formato MS RTF, che nacque come prodotto commerciale ma ora viene distribuito sotto GPL.
Sarebbero gradite da altri venditori notizie sui prodotti che offrono.
Ci sono molti particolari da considerare per poter ottenere un output fotografico decente dalle stampanti comuni. Per acquistare una stampante fotografica, si vedano i relativi suggerimenti in la Sezione 5.4.
Ghostscript incontra alcune difficoltà nell'interpretare i colori fotografici attraverso quasi tutti i driver. I problemi sono di vario tipo:
In molti driver il supporto per la sintonizzazione dei colori è scarso. Spesso i colori non corrispondono all'output di un driver Windows o a quello visibile sullo schermo. D'altra parte il supporto per i colori in tutti i driver, e in Ghostscript nel suo insieme, sono regolabili con facilità; un'impostazione da controllare sicuramente è la "Gamma" (si veda la sezione la Sezione 10.2.2), e se ne possono trovare altre nel file di documentazione Use.htm di Ghostscript.
Al momento c'è un solo driver Ghostscript con il supporto 6 e 7 per la stampa a colori, che è ancora in versione beta e supporta quasi tutti i modelli Epson Stylus Photo: pare che produca colori anche migliori di quelli ottenibili con un driver Windows (!). Il driver Ghostscript in sé non supporta colori non CMYK o RGB; c'è bisogno di un po' di lavoro per risolvere questo problema.
Ghostscript spesso effettua il dithering grossolanamente, o generando stampe con metodi artificiosi, come generare delle strisce. Il dithering solitamente può essere corretto; si veda la Sezione 10.2.3, e si legga la documentazione per il proprio driver.
Detto questo, la soluzione più ovvia è di usare software non Ghostscript per stampare le foto, e in effetti questo software esiste. Il contendente principale è il plugin di stampa di Gimp, che supporta la stampa pixel-a-pixel su stampanti Epson Styluses e Postscript (con un supporto elementare di PPD). Una porzione di questo driver per le Epson Stylus è disponibile per Ghostscript, così come il driver stp. Un'altra possibilità è usare gli assortiti programmi esterni pnm-to-foo, che sono in grado di stampare sulle Lexmark più economiche; queste stampe tentano di stampare mappe pixel-per-pixel.
Naturalmente la soluzione migliore è comprare una stampante Postscript, che può essere completamente controllata dal software libero disponibile, e che stamperà sfruttando tutte le capacità della stampante.
Il risultato ottenuto usando stampanti a getto d'inchiostro a colori dipende moltissimo dal tipo di carta usato. La carta lucida rivestita, molto costosa, permette di ottenere un risultato molto simile ad una fotografia, mentre la carta normale non rivestita spesso produce colori smorti e dettagli sfocati. Carte non lucide rivestite permetteranno di ottenere una via di mezzo, e sono le migliori anche per stampare testo. Carta fotografica rigida, lucida e rivestita produrrà un risultato simile a quello ottenibile con carta lucida più leggera che sembrerà una foto normale.
Per ottenere un risultato fotografico su quasi tutte le stampanti a getto d'inchiostro a colori si dovrebbe usare il metodo di stampa più strettamente interlacciato (e più lento); altrimenti zone di colore pieno potrebbero avere delle bande o colori smorti. Generalmente con Ghostscript succede quando si usa la risoluzione più alta. Con stampanti Postscript potrebbe essere necessario aggiungere qualche riga di codice al prologo basandosi su quanto indicato dal file PPD. Il supporto PPD di Gimp non include impostazioni per la qualità di stampa (specifici per una stampante), ma ne ho aggiunto uno io per mio uso; potete contattarmi se vi interessa. Usando PDQ o CUPS si possono controllare facilmente tutte le impostazioni della stampante. Si possono aggiungere queste opzioni anche alle stampanti Postscript tramite il libppd di VA Linux e il front-end GPR.
Le stampe ottenute da stampanti a getto d'inchiostro a colori svaniscono dopo pochi anni, specialmente se esposte a molta luce ed aria; è un problema di inchiostro. Stampanti a cartucce di solo inchiostro come le Epson e le Canon possono usare un tipo di inchiostro per archivi che è meno soggetto a questo problema. Le stampanti più recenti spesso usano inchiostro basato su pigmenti, che non svanisce in fretta come quelli più vecchi basati su tinture. In realtà, nessuna stampa di questo tipo è adatta per essere archiviata a lungo termine: meglio usare un CD-R e archiviare quello.
C'è un programma chiamato xwtools che supporta stampe fotografiche con tutti gli annessi e connessi su un buon assortimento di stampanti Epson, HP e Canon. Sfortunatamente, essendo scritto sotto NDA non mette a disposizione il sorgente. A meno che sia usato per la stampante Epson Stylus Color 300 su un sistema GNU/Linux con architettura x86, costa E15 per uso personale; non si conosce il prezzo commerciale.
Il pacchetto ESP Print Pro di Easy Software supporta alcune stampanti che altrimenti non sarebbero supportate. Questi driver funzionano, anche se sembra che non siano messi bene a punto per le fotografie.
Quasi tutto ciò che può essere stampato può anche essere visualizzato sullo schermo.
Ghostscript ha un driver per X11, che viene sfruttato al meglio sotto il controllo del visualizzatore PostScript gv. Le ultime versioni di questi programmi supportano anche i file PDF. gv ha rimpiazzato il vecchio visualizzatore "Ghostview"; la nuova interfaccia utente è molto più bella e ricca di funzioni rispetto alla vecchia interfaccia grafica Athena.
I Device Indipendent file di TeX possono essere visti sotto X11 con xdvi. Le versioni moderne di xdvi chiamano ghostscript per rendere alcune particolarità del PostScript.
Esiste un driver per VT100 che si chiama dgvt . Tmview lavora con GNU/Linux e la svgalib, in mancanza di meglio.
L'Acrobat Reader di Adobe è disponibile per GNU/Linux; basta scaricarlo dal sito web di Adobe.
Si può usare anche xpdf, che è software libero, e gv supporta la visualizzazione di file PDF se usato con gs sotto X11.
Le stampanti seriali sono piuttosto difficili da usare sotto lpd.
Lpd fornisce cinque attributi da configurare in /etc/printcap per controllare le impostazioni della porta seriale a cui è collegata la stampante. Si legga la pagina di manuale di printcap e si prenda nota del significato degli attributi br#, fc#, xc#, fs# e xs#. Gli ultimi quattro sono mappe di bit che indicano le impostazioni della porta. L'attributo br# è semplicemente il baud rate, ad esempio " br#9600".
È molto semplice tradurre le impostazioni stty in attributi per printcap. Se ce n'è bisogno, si guardi ora la pagina di manuale di stty.
stty può essere usato per configurare la porta della stampante, in modo da poter fare il cat di un file sulla porta ed ottenere una stampa corretta. Nel mio caso «stty -a» fornisce le seguenti informazioni:
dina:/usr/users/andy/work/lpd/lpd# stty -a < /dev/ttyS2 speed 9600 baud; rows 0; columns 0; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; min = 1; time = 0; -parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff -iuclc -ixany -imaxbel -opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 -isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl -echoke |
In realtà l'uso di stty è un po' strano. Dato che stty opera sul terminale collegato al suo standard input, lo si usa per manipolare una data porta seriale utilizzando il carattere "<" come sopra.
Dopo aver configurato correttamente le impostazioni di stty, in modo che «cat file > /dev/ttyS2» (nel mio caso) invii il file alla stampante, si guardi il file /usr/src/linux/include/asm-i386/termbits.h. Questo file contiene molti #defines ed alcune strutture (si potrebbe farne il cat sulla stampante (che ormai funziona) e usarlo come punto di partenza). Si veda la sezione che comincia con
/* c_cflag bit meaning */ #define CBAUD 0000017 |
Annotare quali di questi settaggi sono preceduti da un - nell'output di stty e sommare tutti questi numeri (sono in ottale). Questo rappresenta i bit che vanno azzerati, così il risultato è la capacità di fc# . Naturalmente ci si ricordi che poi i vari bit verranno impostati direttamente dopo essere stati azzerati, pertanto si potrà semplicemente usare "fc#0177777" (io lo faccio).
Ora fare lo stesso per quei settaggi (elencati in questa sezione) che non hanno un - davanti nell'output di stty. Nell'esempio i più importanti sono CS8 (0000060), HUPCL (0002000), e CREAD (0000200). Controllare anche il flag relativo al baud rate (il mio è 0000015). Sommare tutti questi numeri, ottenendo nell'esempio 0002275. Questo numero viene messo nelle capacità di fs# ("fs#02275" funziona correttamente nell'esempio).
Ripetere il procedimento di azzeramento e impostazione dei bit nella successiva sezione del file di include, "c_lflag bits". Nell'esempio non c'è niente da impostare, quindi vengono usati " xc#0157777" e "xs#0".
Jon Luckey ha evidenziato come alcune stampanti seriali con interfacce da due lire e buffer molto piccoli intendono veramente fermarsi quando lo indicano attraverso il controllo di flusso. Jon ha scoperto che disabilitando il buffer FIFO della porta seriale 16550 tramite setserial si risolve il problema della perdita dei caratteri (in pratica specificando il tipo UART della porta seriale come 8250).
Ancora non esiste tutto il necessario per un sistema completo di stampa. Sono in corso molti progetti per questo, anche se la maggior parte non ha ancora prodotto codice utile, e gli sforzi per standardizzare i protocolli e le API necessarie sono appena agli inizi.
Il problema è riuscire a far parlare tra di loro le varie parti, specialmente in modo indipendente dallo spool. È un problema che si nota maggiormente in quelle patetiche applicazioni che cercano di supportare il controllo di tutte le "normali" funzioni di stampa. Non c'è modo per chi scrive le applicazioni di ottenere informazioni sulle stampanti, sui lavori di stampa e così via; non c'è un metodo standard per inviare i lavori di stampa; non c'è modo di conoscere lo stato dei lavori di stampa; a dire la verità non c'è nemmeno un metodo standard per generare i dati da stampare (anche se la maggior parte dei nuovi sistemi desktop ci provano mettendo a disposizione servizi specifici per il desktop).
La gestione dei tipi di carattere sui sistemi liberi è piuttosto difficile. Il monitor, la stampante, le applicazioni e i file di dati dovrebbero avere tutti accesso agli stessi caratteri. Sfortunatamente non è così. Questa situazione dovrebbe risolversi con l'avvento di xft2 e fontconfig, di cui faranno uso le prossime distribuzioni. Per quanto si sa, RedHat 8.0 è stata la prima distribuzione ad usare xft2.
C'è ancora un po' da lavorare sui driver. Sono già migliorati molto negli ultimi anni, ma ancora oggi non tutte le stampanti sono supportate.
I venditori di stampanti dovrebbero avere un ruolo di primo piano in questo caso: con la continua crescita di Linux diventa sempre più difficile per loro ignorare questa fascia di utenti.
Un ringraziamento speciale va a Grant Taylor che ha creato questo HOWTO e a Till Kampeter per foomatic e per i suoi esperti consigli.
Le informazioni su smbprint provengono da un articolo di Marcel Roelofs <marcel@paragon.nl> .
Le informazioni su nprint per usare stampanti NetWare sono state fornite da Michael Smith <mikes@bioch.ox.ac.uk>.
La sezione sulle stampanti seriali proviene da Andrew Tefft <teffta@engr.dnet.ge.com>.
Il materiale su gamma e cose del genere per gs è stato mandato da Andreas <quasi@hub-fue.franken.de>.
I due paragrafi sul closing_wait di 30 secondi del driver seriale sono stati mandati da Chris Johnson <cdj@netcom.com>.
Robert Hart ha inviato un paio di paragrafi eccellenti sull'impostazione di un server di stampa su stampanti di rete HP che Grant ha usato così come erano.
E uno speciale ringraziamento va alle dozzine di persone che hanno segnalato errori tipografici, indirizzi errati, e errori nel documento nel corso degli anni.
Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
State on the Title page the name of the publisher of the Modified Version, as the publisher.
Preserve all the copyright notices of the Document.
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
Include an unaltered copy of this License.
Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.