CUPS tarjoaa mekanismin, jonka avulla tulostustyöt voidaan lähettää tulostimille vakiomuodossa. Tulostustiedot menevät aikatauluttajalle, joka lähettää työt suodatinjärjestelmään, joka muuntaa tulostustyön tulostimen ymmärtämään muotoon. Tämän jälkeen suodatinjärjestelmä välittää tiedot backendille – erityiselle suodattimelle, joka lähettää tulostustiedot laitteeseen tai verkkoyhteyteen. Järjestelmä käyttää laajasti PostScriptiä ja datan rasterointia muuttaakseen datan kohdetulostimelle sopivaan muotoon.
CUPS tarjoaa vakiomuotoisen ja modulaarisen tulostusjärjestelmän, joka pystyy käsittelemään tulostuspalvelimella lukuisia datamuotoja. Ennen CUPSia oli vaikea löytää vakiomuotoista tulostimenhallintajärjestelmää, joka sopisi hyvin monenlaisiin markkinoilla oleviin tulostimiin, jotka käyttävät omia tulostinkieliä ja -formaatteja. Esimerkiksi System V- ja Berkeley-tulostusjärjestelmät olivat suurelta osin yhteensopimattomia keskenään, ja ne vaativat monimutkaisia skriptejä ja kiertoteitä ohjelman dataformaatin muuntamiseksi tulostettavaan muotoon. Ne eivät useinkaan kyenneet tunnistamaan tulostimelle lähetettävää tiedostomuotoa eivätkä siten pystyneet muuntamaan tietovirtaa automaattisesti ja oikein. Lisäksi datan muuntaminen suoritettiin yksittäisissä työasemissa eikä keskitetyssä palvelimessa.
CUPSin avulla tulostinvalmistajat ja tulostinajurien kehittäjät voivat helpommin luoda ajureita, jotka toimivat natiivisti tulostuspalvelimella. Käsittely tapahtuu palvelimella, mikä mahdollistaa helpomman verkkopohjaisen tulostuksen kuin muissa Unix-tulostusjärjestelmissä. Kun Samba on asennettu, käyttäjät voivat osoittaa tulostimia etä-Windows-tietokoneissa, ja verkon yli tapahtuvaan tulostukseen voidaan käyttää yleisiä PostScript-ajureita.
SchedulerEdit
CUPS-ajuri toteuttaa Internet Printing Protocol (IPP) -protokollan HTTP/1.1:n kautta. Apusovellus (cups-lpd) muuntaa Line Printer Daemon -protokollan (LPD) pyynnöt IPP:ksi. Ajastin tarjoaa myös web-pohjaisen käyttöliittymän tulostustöiden hallintaan, palvelimen konfigurointiin ja itse CUPSin dokumentointiin.
Auktorisointimoduuli valvoo, mitkä IPP- ja HTTP-viestit voivat kulkea järjestelmän läpi. Kun IPP/HTTP-paketit on valtuutettu, ne lähetetään asiakasmoduuliin, joka kuuntelee ja käsittelee saapuvia yhteyksiä. Asiakasmoduuli vastaa myös ulkoisten CGI-ohjelmien suorittamisesta tarpeen mukaan verkkopohjaisten tulostimien, luokkien sekä työn tilan seurannan ja hallinnan tukemiseksi. Kun tämä moduuli on käsitellyt pyynnöt, se lähettää ne IPP-moduulille, joka suorittaa URI-tunnisteen (Uniform Resource Identifier) validoinnin estääkseen asiakasta kiertämästä HTTP-palvelimen pääsynvalvontaa tai todennusta. URI on merkkijono, joka ilmaisee nimen tai osoitteen, jolla voidaan viitata abstraktiin tai fyysiseen resurssiin verkossa.
Ajoitusohjelma sallii tulostinluokat. Sovellukset voivat lähettää pyyntöjä luokan tulostinryhmille, jolloin aikatauluttaja voi ohjata työn luokan ensimmäiseen käytettävissä olevaan tulostimeen. Jobs-moduuli hallinnoi tulostustöitä, lähettää ne suodatin- ja taustaprosesseihin lopullista muuntamista ja tulostusta varten ja valvoo näiden prosessien tilaviestejä.
CUPS-aikataulunohjain käyttää konfigurointimoduulia, joka jäsentää konfigurointitiedostoja, alustaa CUPS-tietorakenteita ja käynnistää ja pysäyttää CUPS-ohjelman. Konfiguraatiomoduuli pysäyttää CUPS-palvelut konfiguraatiotiedoston käsittelyn ajaksi ja käynnistää palvelun uudelleen, kun käsittely on päättynyt.
Lokimoduuli huolehtii ajastimen tapahtumien kirjaamisesta käyttö-, virhe- ja sivulokitiedostoihin. Päämoduuli huolehtii aikakatkaisuista ja asiakasyhteyksien I/O-pyyntöjen lähettämisestä, signaalien tarkkailusta, lapsiprosessien virheiden ja poistumisten käsittelystä sekä palvelimen konfiguraatiotiedostojen lataamisesta uudelleen tarpeen mukaan.
Muita aikatauluttajan käyttämiä moduuleja ovat muun muassa:
- MIME-moduuli, joka käsittelee MIME-tyyppiä (Multipurpose Internet Mail Extensions) ja muunnostietokantaa, jota käytetään suodatusprosessissa, joka muuntaa tulostustiedot tulostuslaitteelle sopivaan muotoon;
- PPD-moduuli, joka käsittelee PPD-tiedostojen (Postscript Printer Description) luetteloa;
- Laitemoduuli, joka hallitsee luetteloa järjestelmässä käytettävissä olevista laitteista;
- Tulostin-moduuli, joka käsittelee tulostimia ja PPD:tä CUCPS:ssa.
Filter systemEdit
CUPS kykenee käsittelemään tulostuspalvelimella erilaisia tiedostomuotoja. Se muuntaa tulostustyön tiedot tulostimen lopulliseksi kieleksi/formaatiksi useiden suodattimien avulla. Se käyttää MIME-tyyppejä tiedostomuotojen tunnistamiseen.
MIME-tietokannatMuokkaa
Kun CUPS-järjestelmä on osoittanut tulostustyön aikatauluttajalle, se ohjataan CUPS-suodatinjärjestelmään. Tämä muuntaa tiedot tulostimelle sopivaan muotoon. Käynnistyksen aikana CUPS-daemon lataa kaksi MIME-tietokantaa: mime.types
, joka määrittelee tunnetut tiedostotyypit, joiden tietoja CUPS voi hyväksyä, ja mime.convs
, joka määrittelee ohjelmat, jotka käsittelevät kutakin tiettyä MIME-tyyppiä.
Tiedoston mime.types
syntaksi on seuraava:
mimetype { | }
Esimerkiksi HTML-tiedoston havaitsemiseen soveltuisi seuraava merkintä:
text/html html htm \
printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))
Toinen rivi sovittaa tiedoston sisällön määritettyyn MIME-tyyppiin määrittelemällä, että tiedoston ensimmäiseen kilotavuun tekstiä mahtuu painokelpoisia merkkejä ja että nämä merkit sisältävät HTML-merkkejä. Jos yllä oleva kuvio täsmää, suodatinjärjestelmä merkitsisi tiedoston MIME-tyypiksi text/html.
Tiedoston mime.convs
syntaksi on seuraava:
source destination cost program
Lähde-kentässä nimetään MIME-tyyppi, joka määritetään etsimällä tiedostosta mime.types
, kun taas kohde-kentässä luetellaan pyydetty tulostustyyppi ja määritetään, mitä ohjelmaa on käytettävä. Tämäkin haetaan mime.types
:sta. Cost-kenttä auttaa suodatinsarjojen valinnassa tiedostoa muunnettaessa. Viimeinen kenttä, ohjelma, määrittää, mitä suodatinohjelmaa käytetään tietojen muuntamiseen.
Joitakin esimerkkejä:
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
SuodatusprosessiMuokkaa
Suodatusprosessi toimii siten, että se ottaa syöttötiedot valmiiksi muotoiltuna kuudella argumentilla:
- tulostustyön tunnus
- käyttäjän nimi
- työn nimi
- tulostettavien kopioiden määrä
- mahdolliset tulostusasetukset
- tiedoston nimi (tämä ei tosin ole tarpeen, jos se on ohjattu vakiotulosta).
Sitten se määrittää syötettävän datan tyypin ja käytettävän suodattimen MIME-tietokantojen avulla; esimerkiksi kuvatiedot havaitaan ja käsitellään tietyn suodattimen kautta ja HTML-tiedot havaitaan ja käsitellään toisen suodattimen kautta.
CUPS voi muuntaa toimitetut tiedot joko PostScript-tiedoiksi tai suoraan rasteritiedoiksi. Jos tiedot muunnetaan PostScript-tiedoiksi, käytetään lisäsuodatinta, jota kutsutaan esisuodattimeksi ja joka ajaa PostScript-tiedot toisen PostScript-muuntimen läpi, jotta se voi lisätä tulostinkohtaisia asetuksia, kuten tulostettavien sivualueiden valitseminen, n-up-tilan asettaminen ja muita laitekohtaisia asioita. Kun esisuodatus on tehty, tiedot voidaan joko lähettää suoraan CUPS-taustapalveluun, jos käytetään PostScript-tulostinta, tai ne voidaan välittää toiselle suodattimelle, kuten linuxprinting.orgin Foomaticille. Vaihtoehtoisesti se voidaan välittää Ghostscriptille, joka muuntaa PostScriptin CUPS-rasterimuotoiseksi. Väliaikainen rasterimuoto välitetään sitten lopulliselle suodattimelle, joka muuntaa rasteritiedot tulostinkohtaiseen muotoon. CUPSin oletussuodattimet ovat seuraavat:
- rasteri PCL:ksi
- rasteri ESC/P:ksi tai ESC/P2:ksi (Epsonin tulostinkieli, joka on nyt suurelta osin korvattu uudella ESC/P-rasteriformaatilla)
- rasteri Dymoksi (toinen tulostinyhtiö).
- rasteri Zebra Programming Languageen tai ZPL:ään (Zebra Technologiesin tulostinkieli)
Vuodesta 2009 lähtien muita omia kieliä, kuten GDI:tä tai SPL:ää (Samsungin tulostinkieli), tukee Splix, rasteri SPL:ään -kääntäjä.
Mutta useat muutkin vaihtoehdot voivat integroitua CUPS:ään. HPLIP (aiemmin tunnettu nimellä HP-IJS) tarjoaa Linux+CUPS-ajurit HP:n tulostimille, Gutenprint (aiemmin tunnettu nimellä Gimp-Print) on valikoima laadukkaita tulostinajureita (enimmäkseen) mustesuihkutulostimille, ja TurboPrint for Linuxissa on toinen valikoima laadukkaita tulostinajureita monille erilaisille tulostimille.
BackenditTiedostot muokkaus
Backendit ovat tapoja, joiden avulla CUPS lähettää tietoja tulostimille. CUPSissa on useita backendejä: rinnakkais-, sarja- ja USB-portit, cups-pdf PDF Virtual Printing sekä verkko-backendit, jotka toimivat IPP-, JetDirect- (AppSocket), Line Printer Daemon (”LPD”) ja SMB-protokollien kautta.
CUPS 1.4:ssä on uusi mdns
-backend, joka tarjoaa Bonjour- (DNS-SD-) -pohjaisen tulostimen etsinnän. CUPS 1.6:ssa tuetaan myös Bonjour-tulostimen löytämistä ja jakamista Avahin avulla.