CUPS biedt een mechanisme waarmee printopdrachten op een standaardmanier naar printers kunnen worden gestuurd. De afdrukgegevens gaan naar een scheduler die de opdrachten naar een filtersysteem stuurt dat de afdrukopdracht omzet in een formaat dat de printer begrijpt. Het filtersysteem geeft de gegevens vervolgens door aan een backend – een speciaal filter dat de afdrukgegevens naar een apparaat of netwerkverbinding stuurt. Het systeem maakt uitgebreid gebruik van PostScript en rastering van gegevens om de gegevens om te zetten in een formaat dat geschikt is voor de bestemmingsprinter.

CUPS biedt een standaard en gemodulariseerd afdruksysteem dat tal van gegevensformaten op de afdrukserver kan verwerken. Vóór CUPS was het moeilijk een standaard printerbeheersysteem te vinden dat geschikt was voor de zeer grote verscheidenheid aan printers op de markt die hun eigen printertalen en -formaten gebruiken. Zo waren de afdruksystemen System V en Berkeley grotendeels incompatibel met elkaar, en ze vereisten ingewikkelde scripts en workarounds om het dataformaat van het programma om te zetten in een afdrukbaar formaat. Zij konden vaak niet detecteren welk bestandsformaat naar de printer werd gestuurd en konden dus niet automatisch en correct de gegevensstroom converteren. Bovendien werd de dataconversie uitgevoerd op afzonderlijke werkstations in plaats van op een centrale server.

CUPS stelt printerfabrikanten en printerstuurprogramma-ontwikkelaars in staat om gemakkelijker stuurprogramma’s te maken die rechtstreeks op de printserver werken. De verwerking vindt plaats op de server, waardoor afdrukken via het netwerk eenvoudiger is dan met andere Unix-afdruksystemen. Als Samba is geïnstalleerd, kunnen gebruikers printers op externe Windows-computers aanspreken, en kunnen generieke PostScript-drivers worden gebruikt voor afdrukken over het netwerk.

SchedulerEdit

De CUPS scheduler implementeert Internet Printing Protocol (IPP) over HTTP/1.1. Een helper applicatie (cups-lpd) converteert Line Printer Daemon protocol (LPD) verzoeken naar IPP. De scheduler biedt ook een web-gebaseerde interface voor het beheren van afdruktaken, de configuratie van de server, en voor documentatie over CUPS zelf.

Een autorisatie module regelt welke IPP en HTTP berichten door het systeem kunnen gaan. Zodra de IPP/HTTP pakketten zijn geautoriseerd, worden ze naar de client module gestuurd, die luistert naar binnenkomende verbindingen en deze verwerkt. De clientmodule is ook verantwoordelijk voor het uitvoeren van externe CGI-programma’s die nodig zijn voor de ondersteuning van webgebaseerde printers, klassen, en bewaking en administratie van de taakstatus. Zodra deze module haar verzoeken heeft verwerkt, stuurt zij deze naar de IPP-module die de Uniform Resource Identifier (URI)-validatie uitvoert om te voorkomen dat een cliënt de toegangscontrole of authenticatie op de HTTP-server omzeilt. De URI is een tekststring die een naam of adres aangeeft dat kan worden gebruikt om te verwijzen naar een abstracte of fysieke bron op een netwerk.

De planner maakt klassen van printers mogelijk. Applicaties kunnen verzoeken sturen naar groepen printers in een klasse, waardoor de planner de opdracht naar de eerste beschikbare printer in die klasse kan sturen. Een takenmodule beheert afdrukopdrachten, stuurt ze naar de filter- en backendprocessen voor definitieve conversie en afdrukken, en bewaakt de statusberichten van die processen.

De CUPS scheduler maakt gebruik van een configuratiemodule, die configuratiebestanden parseert, CUPS-datastructuren initialiseert, en het CUPS-programma start en stopt. De configuratiemodule stopt CUPS-diensten tijdens de verwerking van het configuratiebestand en start de dienst opnieuw op als de verwerking is voltooid.

Een loggingmodule zorgt voor het loggen van gebeurtenissen in de planner voor toegangs-, fout- en paginalogbestanden. De hoofdmodule handelt time-outs en verzending van I/O-verzoeken voor clientverbindingen af, let op signalen, handelt fouten van child-processen af en verlaat deze, en laadt de serverconfiguratiebestanden opnieuw als dat nodig is.

Andere modules die door de scheduler worden gebruikt zijn onder andere:

  • de MIME-module, die een Multipurpose Internet Mail Extensions (MIME) type- en conversiedatabase afhandelt die wordt gebruikt in het filterproces dat afdrukgegevens omzet in een formaat dat geschikt is voor een afdrukapparaat;
  • een PPD-module die een lijst van Postscript Printer Description (PPD)-bestanden afhandelt;
  • een apparatenmodule die een lijst van apparaten beheert die beschikbaar zijn in het systeem;
  • een printersmodule die printers en PPD’s binnen CUPS afhandelt.

Filter systemEdit

CUPS stelt gebruikers in staat verschillende gegevens naar de CUPS-server te sturen en die gegevens te laten omzetten in een formaat dat de printer begrijpt en kan afdrukken

CUPS kan een verscheidenheid aan gegevensformaten op de afdrukserver verwerken. Het converteert de gegevens van de afdruktaak via een reeks filters naar de uiteindelijke taal/het uiteindelijke formaat van de printer. Het maakt gebruik van MIME-typen voor het identificeren van bestandsformaten.

MIME-databasesEdit

Nadat het CUPS-systeem de afdruktaak aan de planner heeft toegewezen, wordt deze doorgegeven aan het CUPS-filtersysteem. Dit converteert de gegevens naar een formaat dat geschikt is voor de printer. Tijdens het opstarten laadt de CUPS daemon twee MIME databases: mime.types die de bekende bestandstypen definieert waarvoor CUPS data kan accepteren, en mime.convs die de programma’s definieert die elk specifiek MIME type verwerken.

Het mime.types bestand heeft de volgende syntaxis:

mimetype { | }

Om bijvoorbeeld een HTML bestand te detecteren, zou de volgende entry van toepassing zijn:

text/html html htm \

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

De tweede regel matcht de inhoud van het bestand met het gespecificeerde MIME type door te bepalen dat de eerste kilobyte tekst in het bestand printbare karakters bevat en dat deze karakters HTML markup bevatten. Als het bovenstaande patroon overeenkomt, markeert het filtersysteem het bestand als het MIME-type text/html.

Het mime.convs-bestand heeft de volgende syntaxis:

source destination cost program

Het bronveld geeft het MIME-type aan dat wordt bepaald door het mime.types-bestand op te zoeken, terwijl het doelveld het type uitvoer aangeeft dat wordt gevraagd en bepaalt welk programma moet worden gebruikt. Ook dit wordt opgehaald uit mime.types. Het veld kosten helpt bij de selectie van sets filters bij het converteren van een bestand. Het laatste veld, programma, bepaalt welk filterprogramma moet worden gebruikt om de gegevensomzetting uit te voeren.

Enkele voorbeelden:

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

FilterprocesEdit

Het filterproces werkt door invoergegevens te nemen die vooraf zijn geformatteerd met zes argumenten:

  1. de job-ID van de afdrukopdracht
  2. de gebruikersnaam
  3. de job-naam
  4. het aantal af te drukken exemplaren
  5. eender welke afdrukopties
  6. de bestandsnaam (hoewel dit niet nodig is als het van de standaardinvoer is omgeleid).

Het bepaalt vervolgens het type gegevens dat wordt ingevoerd en het filter dat moet worden gebruikt door het gebruik van de MIME-databases; bijvoorbeeld, beeldgegevens zullen worden gedetecteerd en verwerkt door een bepaald filter, en HTML-gegevens zullen worden gedetecteerd en verwerkt door een ander filter.

CUPS kan aangeleverde gegevens omzetten in PostScript-gegevens of direct in rastergegevens. Als de gegevens in PostScript worden omgezet, wordt een extra filter toegepast, een zogenaamde prefilter, die de PostScript-gegevens door een andere PostScript-converter haalt, zodat printerspecifieke opties kunnen worden toegevoegd, zoals het selecteren van af te drukken paginabereiken, het instellen van de n-up modus en andere apparaatspecifieke zaken. Nadat de pre-filtering is voltooid, kunnen de gegevens direct naar een CUPS backend worden gestuurd als een PostScript-printer wordt gebruikt, of ze kunnen naar een ander filter worden gestuurd, zoals Foomatic van linuxprinting.org. Als alternatief kan het naar Ghostscript worden gestuurd, dat PostScript converteert naar een CUPS-rasterformaat. Het tussenliggende rasterformaat wordt dan doorgegeven aan een eindfilter dat de rastergegevens converteert naar een printerspecifiek formaat. De standaardfilters van CUPS zijn:

  • raster naar PCL
  • raster naar ESC/P of ESC/P2 (een Epson printertaal, nu grotendeels vervangen door hun nieuwe ESC/P-Raster formaat)
  • raster naar Dymo (een ander printerbedrijf).
  • raster naar Zebra Programming Language of ZPL (een printertaal van Zebra Technologies)

Met ingang van 2009 worden andere bedrijfseigen talen zoals GDI of SPL (Samsung Printer Language) ondersteund door Splix, een raster-naar-SPLL translator.

Echter, verschillende andere alternatieven kunnen integreren met CUPS. HPLIP (voorheen bekend als HP-IJS) biedt Linux+CUPS drivers voor HP printers, Gutenprint (voorheen bekend als Gimp-Print) is een serie hoogwaardige printer drivers voor (meestal) inkjet printers, en TurboPrint voor Linux heeft een andere serie hoogwaardige printer drivers voor een breed scala aan printers.

BackendsEdit

De backends zijn de manieren waarop CUPS data naar printers stuurt. Er zijn verschillende backends beschikbaar voor CUPS: parallelle, seriële en USB poorten, cups-pdf PDF virtueel printen, en netwerk backends die werken via de IPP, JetDirect (AppSocket), Line Printer Daemon (“LPD”), en SMB protocollen.

Een nieuw mdns backend in CUPS 1.4 biedt Bonjour (DNS-SD) gebaseerde printer ontdekking. In CUPS 1.6, Bonjour printer discovery en delen met Avahi wordt ook ondersteund.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.