CUPS fornisce un meccanismo che permette ai lavori di stampa di essere inviati alle stampanti in modo standard. I dati di stampa vanno a uno scheduler che invia i lavori a un sistema di filtri che converte il lavoro di stampa in un formato comprensibile per la stampante. Il sistema di filtraggio passa poi i dati a un backend, un filtro speciale che invia i dati di stampa a un dispositivo o a una connessione di rete. Il sistema fa ampio uso di PostScript e della rasterizzazione dei dati per convertire i dati in un formato adatto alla stampante di destinazione.

CUPS offre un sistema di stampa standard e modularizzato che può elaborare numerosi formati di dati sul server di stampa. Prima di CUPS, era difficile trovare un sistema standard di gestione delle stampanti che si adattasse alla grande varietà di stampanti sul mercato che utilizzano i loro propri linguaggi e formati di stampa. Per esempio, i sistemi di stampa System V e Berkeley erano largamente incompatibili tra loro, e richiedevano complicati script e workaround per convertire il formato dati del programma in un formato stampabile. Spesso non potevano rilevare il formato del file che veniva inviato alla stampante e quindi non potevano convertire automaticamente e correttamente il flusso di dati. Inoltre, la conversione dei dati veniva eseguita sulle singole stazioni di lavoro piuttosto che su un server centrale.

CUPS permette ai produttori di stampanti e agli sviluppatori di driver per stampanti di creare più facilmente dei driver che lavorano nativamente sul server di stampa. L’elaborazione avviene sul server, permettendo una stampa in rete più facile che con altri sistemi di stampa Unix. Con Samba installato, gli utenti possono indirizzare le stampanti su computer Windows remoti, e i driver PostScript generici possono essere usati per stampare attraverso la rete.

SchedulerEdit

Lo scheduler CUPS implementa Internet Printing Protocol (IPP) su HTTP/1.1. Un’applicazione di supporto (cups-lpd) converte le richieste del protocollo Line Printer Daemon (LPD) in IPP. Lo scheduler fornisce anche un’interfaccia basata sul web per gestire i lavori di stampa, la configurazione del server e la documentazione su CUPS stesso.

Un modulo di autorizzazione controlla quali messaggi IPP e HTTP possono passare attraverso il sistema. Una volta che i pacchetti IPP/HTTP sono autorizzati, vengono inviati al modulo client, che ascolta ed elabora le connessioni in entrata. Il modulo client è anche responsabile dell’esecuzione di programmi CGI esterni come necessario per supportare stampanti basate sul web, classi e monitoraggio e amministrazione dello stato dei lavori. Una volta che questo modulo ha elaborato le sue richieste, le invia al modulo IPP che esegue la convalida dell’Uniform Resource Identifier (URI) per evitare che un client eluda qualsiasi controllo di accesso o autenticazione sul server HTTP. L’URI è una stringa di testo che indica un nome o un indirizzo che può essere usato per riferirsi a una risorsa astratta o fisica su una rete.

Lo scheduler permette classi di stampanti. Le applicazioni possono inviare richieste a gruppi di stampanti in una classe, permettendo allo scheduler di indirizzare il lavoro alla prima stampante disponibile in quella classe. Un modulo lavori gestisce i lavori di stampa, inviandoli al filtro e ai processi di backend per la conversione finale e la stampa, e monitorando i messaggi di stato da quei processi.

Lo schedulatore CUPS utilizza un modulo di configurazione, che analizza i file di configurazione, inizializza le strutture dati CUPS e avvia e ferma il programma CUPS. Il modulo di configurazione arresta i servizi CUPS durante l’elaborazione dei file di configurazione e poi riavvia il servizio quando l’elaborazione è completa.

Un modulo di registrazione gestisce la registrazione degli eventi dello schedulatore per i file di log di accesso, errore e pagina. Il modulo principale gestisce i timeout e l’invio delle richieste di I/O per le connessioni client, controllando i segnali, gestendo gli errori e le uscite dei processi figli e ricaricando i file di configurazione del server come necessario.

Altri moduli usati dallo scheduler includono:

  • il modulo MIME, che gestisce un tipo di Multipurpose Internet Mail Extensions (MIME) e un database di conversione usato nel processo di filtraggio che converte i dati di stampa in un formato adatto a un dispositivo di stampa;
  • un modulo PPD che gestisce un elenco di file Postscript Printer Description (PPD);
  • un modulo dispositivi che gestisce un elenco di dispositivi disponibili nel sistema;
  • un modulo stampanti che gestisce stampanti e PPD in CUPS.

Filter systemEdit

CUPS permette agli utenti di inviare diversi dati al server CUPS e di farli convertire in un formato che la stampante capirà e potrà stampare

CUPS può elaborare una varietà di formati di dati sul server di stampa. Converte i dati del lavoro di stampa nel linguaggio/formato finale della stampante attraverso una serie di filtri. Utilizza i tipi MIME per identificare i formati dei file.

MIME databasesEdit

Dopo che il sistema CUPS ha assegnato il lavoro di stampa allo scheduler, esso viene passato al sistema di filtri CUPS. Questo converte i dati in un formato adatto alla stampante. Durante l’avvio, il demone CUPS carica due database MIME: mime.types che definisce i tipi di file conosciuti per i quali CUPS può accettare dati, e mime.convs che definisce i programmi che elaborano ogni particolare tipo MIME.

Il file mime.types ha la sintassi:

mimetype { | }

Per esempio, per rilevare un file HTML, sarebbe applicabile la seguente voce:

text/html html htm \

printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))

La seconda linea abbina il contenuto del file al tipo MIME specificato determinando che il primo kilobyte di testo nel file contiene caratteri stampabili e che quei caratteri includono markup HTML. Se lo schema di cui sopra corrisponde, allora il sistema di filtraggio contrassegnerà il file come tipo MIME text/html.

Il file mime.convs ha la sintassi:

source destination cost program

Il campo sorgente indica il tipo MIME che è determinato cercando nel file mime.types, mentre il campo destinazione elenca il tipo di output richiesto e determina quale programma dovrebbe essere usato. Anche questo viene recuperato da mime.types. Il campo costo assiste nella selezione di set di filtri durante la conversione di un file. L’ultimo campo, programma, determina quale programma di filtro usare per eseguire la conversione dei dati.

Alcuni esempi:

text/plain application/postscript 50 texttopsapplication/vnd.cups-postscript application/vnd.cups-raster 50 pstorasterimage/* application/vnd.cups-postscript 50 imagetopsimage/* application/vnd.cups-raster 50 imagetoraster

Processo di filtraggioModifica

Il processo di filtraggio funziona prendendo dati di input preformattati con sei argomenti:

  1. l’ID del lavoro di stampa
  2. il nome utente
  3. il nome del lavoro
  4. il numero di copie da stampare
  5. le opzioni di stampa
  6. il nome del file (anche se questo non è necessario se è stato reindirizzato dallo standard input).

Determina poi il tipo di dati in ingresso e il filtro da usare attraverso l’uso dei database MIME; per esempio, i dati immagine saranno rilevati ed elaborati attraverso un particolare filtro, e i dati HTML rilevati ed elaborati attraverso un altro filtro.

CUPS può convertire i dati forniti o in dati PostScript o direttamente in dati raster. Se vengono convertiti in dati PostScript viene applicato un ulteriore filtro chiamato prefiltro, che fa passare i dati PostScript attraverso un altro convertitore PostScript in modo da poter aggiungere opzioni specifiche della stampante come la selezione di intervalli di pagine da stampare, l’impostazione della modalità n-up e altre cose specifiche del dispositivo. Dopo che il prefiltraggio è stato fatto, i dati possono essere inviati direttamente a un backend CUPS se si usa una stampante PostScript, oppure possono essere passati a un altro filtro come Foomatic di linuxprinting.org. In alternativa, possono essere passati a Ghostscript, che converte il PostScript in un formato intermedio CUPS-raster. Il formato raster intermedio viene poi passato ad un filtro finale che converte i dati raster in un formato specifico della stampante. I filtri predefiniti inclusi in CUPS includono:

  • raster in PCL
  • raster in ESC/P o ESC/P2 (un linguaggio per stampanti Epson, ora ampiamente sostituito dal loro nuovo formato ESC/P-Raster)
  • raster in Dymo (un’altra compagnia di stampanti).
  • raster a Zebra Programming Language o ZPL (un linguaggio per stampanti della Zebra Technologies)

A partire dal 2009 altri linguaggi proprietari come GDI o SPL (Samsung Printer Language) sono supportati da Splix, un traduttore da raster a SPL.

In ogni caso, diverse altre alternative possono integrarsi con CUPS. HPLIP (precedentemente noto come HP-IJS) fornisce driver Linux+CUPS per stampanti HP, Gutenprint (precedentemente noto come Gimp-Print) è una gamma di driver di alta qualità per stampanti (principalmente) a getto d’inchiostro, e TurboPrint per Linux ha un’altra gamma di driver di qualità per una vasta gamma di stampanti.

BackendModifica

I backend sono i modi in cui CUPS invia dati alle stampanti. Ci sono diversi backend disponibili per CUPS: porte parallele, seriali e USB, cups-pdf PDF Virtual Printing, così come backend di rete che operano tramite i protocolli IPP, JetDirect (AppSocket), Line Printer Daemon (“LPD”) e SMB.

Un nuovo mdns backend in CUPS 1.4 fornisce il rilevamento della stampante basato su Bonjour (DNS-SD). In CUPS 1.6, è supportato anche il rilevamento e la condivisione di stampanti Bonjour usando Avahi.

Sono supportati i protocolli SMB.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.