CUPS poskytuje mechanismus, který umožňuje odesílat tiskové úlohy na tiskárny standardním způsobem. Tisková data jdou do plánovače, který odesílá úlohy do systému filtrů, který převádí tiskovou úlohu do formátu, jemuž tiskárna rozumí. Filtrační systém pak předá data backendu – speciálnímu filtru, který odešle tisková data do zařízení nebo síťového připojení. Systém hojně využívá PostScript a rasterizaci dat k převodu dat do formátu vhodného pro cílovou tiskárnu.
CUPS nabízí standardní a modulární tiskový systém, který dokáže na tiskovém serveru zpracovat mnoho datových formátů. Před systémem CUPS bylo obtížné najít standardní systém správy tiskáren, který by vyhovoval velmi širokému spektru tiskáren na trhu používajících vlastní tiskové jazyky a formáty. Například tiskové systémy System V a Berkeley byly do značné míry vzájemně nekompatibilní a vyžadovaly složité skripty a obcházení, aby převedly datový formát programu na tisknutelný formát. Často nedokázaly rozpoznat formát souboru, který byl odeslán do tiskárny, a nemohly tak automaticky a správně převést datový tok. Navíc se převod dat prováděl na jednotlivých pracovních stanicích, nikoli na centrálním serveru.
CUPS umožňuje výrobcům tiskáren a vývojářům ovladačů tiskáren snadněji vytvářet ovladače, které pracují nativně na tiskovém serveru. Zpracování probíhá na serveru, což umožňuje snadnější síťový tisk než u jiných unixových tiskových systémů. S nainstalovanou Sambou mohou uživatelé adresovat tiskárny na vzdálených počítačích se systémem Windows a pro tisk v síti lze použít obecné ovladače PostScript.
PlánovačEdit
Plánovač CUPS implementuje protokol IPP (Internet Printing Protocol) přes HTTP/1.1. Pomocná aplikace (cups-lpd) převádí požadavky protokolu LPD (Line Printer Daemon) na protokol IPP. Plánovač také poskytuje webové rozhraní pro správu tiskových úloh, konfiguraci serveru a dokumentaci o samotném CUPS.
Outorizační modul řídí, které zprávy IPP a HTTP mohou procházet systémem. Jakmile jsou pakety IPP/HTTP autorizovány, jsou odeslány do klientského modulu, který naslouchá příchozím spojením a zpracovává je. Klientský modul je také zodpovědný za spouštění externích programů CGI podle potřeby pro podporu webových tiskáren, tříd a monitorování a správu stavu úloh. Jakmile tento modul zpracuje své požadavky, odešle je modulu IPP, který provede ověření URI (Uniform Resource Identifier), aby zabránil klientovi obejít jakékoli řízení přístupu nebo ověřování na serveru HTTP. URI je textový řetězec, který označuje název nebo adresu, kterou lze použít k odkazu na abstraktní nebo fyzický prostředek v síti.
Rozvrhovač umožňuje třídy tiskáren. Aplikace mohou posílat požadavky skupinám tiskáren ve třídě, což plánovači umožní nasměrovat úlohu na první dostupnou tiskárnu v této třídě. Modul úloh spravuje tiskové úlohy, odesílá je do procesů filtru a backendu ke konečné konverzi a tisku a sleduje stavové zprávy z těchto procesů.
Rozvrhovač CUPS využívá konfigurační modul, který analyzuje konfigurační soubory, inicializuje datové struktury CUPS a spouští a zastavuje program CUPS. Konfigurační modul zastaví služby CUPS během zpracování konfiguračního souboru a po dokončení zpracování službu znovu spustí.
Modul protokolování zpracovává protokolování událostí plánovače pro soubory protokolu přístupů, chyb a stránek. Hlavní modul zpracovává časové limity a odesílání I/O požadavků pro klientská připojení, hlídá signály, zpracovává chyby a ukončení podřízených procesů a podle potřeby načítá konfigurační soubory serveru.
Další moduly používané plánovačem zahrnují:
- modul MIME, který zpracovává typ MIME (Multipurpose Internet Mail Extensions) a konverzní databázi používanou v procesu filtrování, který převádí tisková data do formátu vhodného pro tiskové zařízení;
- modul PPD, který zpracovává seznam souborů PPD (Postscript Printer Description);
- modul zařízení, který spravuje seznam zařízení dostupných v systému;
- modul tiskáren, který zpracovává tiskárny a PPD v rámci CUPS.
Filtr systemEdit
CUPS může na tiskovém serveru zpracovávat různé formáty dat. Pomocí řady filtrů převádí data tiskové úlohy do konečného jazyka/formátu tiskárny. K identifikaci formátů souborů používá typy MIME.
Databáze MIMEUpravit
Poté, co systém CUPS přiřadí tiskovou úlohu plánovači, předá ji systému filtrů CUPS. Ten převede data do formátu vhodného pro tiskárnu. Během spouštění načte démon CUPS dvě databáze MIME: mime.types
, která definuje známé typy souborů, pro které může CUPS přijímat data, a mime.convs
, která definuje programy zpracovávající jednotlivé typy MIME.
Soubor mime.types
má syntaxi:
mimetype { | }
Například pro detekci souboru HTML by platil následující záznam:
text/html html htm \
printable(0,1024) + (string(0,"<HTML>") string(0,"<!DOCTYPE"))
Druhý řádek porovnává obsah souboru se zadaným typem MIME tak, že určí, že první kilobajt textu v souboru obsahuje tisknutelné znaky a že tyto znaky obsahují značky HTML. Pokud výše uvedený vzor odpovídá, pak filtrační systém označí soubor jako typ MIME text/html.
Soubor mime.convs
má syntaxi:
source destination cost program
Pole source označuje typ MIME, který je určen vyhledáním souboru mime.types
, zatímco pole destination uvádí typ požadovaného výstupu a určuje, jaký program má být použit. Ten je rovněž získáván z mime.types
. Pole nákladů pomáhá při výběru sad filtrů při převodu souboru. Poslední pole, program, určuje, který filtrační program má být použit k provedení převodu dat.
Několik příkladů:
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
Filtrační procesEdit
Filtrační proces pracuje tak, že přijímá vstupní data předformátovaná šesti argumenty:
- ID tiskové úlohy
- jméno uživatele
- název úlohy
- počet kopií k tisku
- případné možnosti tisku
- jméno souboru (to však není nutné, pokud bylo přesměrováno ze standardního vstupu).
Poté určí typ vstupních dat a filtr, který má být použit pomocí databází MIME; například obrazová data budou detekována a zpracována prostřednictvím určitého filtru a data HTML detekována a zpracována prostřednictvím jiného filtru.
CUPS může dodaná data převést buď na data PostScript, nebo přímo na rastrová data. Pokud se převádí na data PostScript, použije se další filtr zvaný předfiltr, který data PostScript prohání dalším převodníkem PostScript, aby mohl přidat možnosti specifické pro tiskárnu, jako je výběr rozsahu stránek k tisku, nastavení režimu n-up a další věci specifické pro zařízení. Po provedení předfiltrování mohou být data odeslána buď přímo do backendu CUPS, pokud se používá PostScriptová tiskárna, nebo mohou být předána jinému filtru, například Foomatic od linuxprinting.org. Případně je lze předat programu Ghostscript, který převede PostScript na prostřední formát CUPS-rastr. Zprostředkující rastrový formát je pak předán konečnému filtru, který převede rastrová data do formátu specifického pro tiskárnu. Mezi výchozí filtry obsažené v CUPS patří:
- rastr do PCL
- rastr do ESC/P nebo ESC/P2 (jazyk tiskáren Epson, nyní z velké části nahrazený jejich novým formátem ESC/P-Raster)
- rastr do Dymo (jiná tiskárna).
- rastr do programovacího jazyka Zebra nebo ZPL (jazyk tiskáren Zebra Technologies)
Od roku 2009 jsou další proprietární jazyky jako GDI nebo SPL (Samsung Printer Language) podporovány Splixem, překladačem rastru do SPL.
S CUPS se však může integrovat několik dalších alternativ. HPLIP (dříve známý jako HP-IJS) poskytuje ovladače pro Linux+CUPS pro tiskárny HP, Gutenprint (dříve známý jako Gimp-Print) je řada kvalitních ovladačů pro (většinou) inkoustové tiskárny a TurboPrint pro Linux má další řadu kvalitních ovladačů pro širokou škálu tiskáren.
BackendyEdit
Backendy jsou způsoby, kterými CUPS posílá data tiskárnám. Pro CUPS je k dispozici několik backendů: paralelní, sériové a USB porty, cups-pdf PDF Virtual Printing a také síťové backendy, které fungují prostřednictvím protokolů IPP, JetDirect (AppSocket), Line Printer Daemon („LPD“) a SMB.
Nový mdns
backend v CUPS 1.4 poskytuje zjišťování tiskáren na základě Bonjour (DNS-SD). V CUPS 1.6 je podporováno také zjišťování a sdílení tiskáren Bonjour pomocí Avahi.