CUPS tilbyder en mekanisme, der gør det muligt at sende udskriftsjobs til printere på en standardiseret måde. Udskrivningsdataene går til en scheduler, som sender opgaverne til et filtersystem, der konverterer udskriftsjobbet til et format, som printeren forstår. Filtersystemet sender derefter dataene videre til en backend – et særligt filter, der sender udskriftsdata til en enhed eller en netværksforbindelse. Systemet gør udstrakt brug af PostScript og rasterisering af data for at konvertere dataene til et format, der er egnet til destinationsprinteren.

CUPS tilbyder et standardiseret og modulopbygget udskrivningssystem, der kan behandle mange dataformater på printserveren. Før CUPS var det vanskeligt at finde et standardiseret printerstyringssystem, der kunne rumme de meget mange forskellige printere på markedet, der anvender deres egne printersprog og formater. F.eks. var System V- og Berkeley-udskrivningssystemerne stort set inkompatible med hinanden, og de krævede komplicerede scripts og løsninger for at konvertere programmets dataformat til et format, der kunne udskrives. De kunne ofte ikke registrere det filformat, der blev sendt til printeren, og kunne derfor ikke automatisk og korrekt konvertere datastrømmen. Desuden blev datakonverteringen udført på de enkelte arbejdsstationer i stedet for på en central server.

CUPS giver printerproducenter og udviklere af printerdrivere mulighed for nemmere at skabe drivere, der fungerer nativt på printserveren. Behandlingen foregår på serveren, hvilket giver mulighed for nemmere netværksbaseret udskrivning end med andre Unix-udskrivningssystemer. Med Samba installeret kan brugerne adressere printere på eksterne Windows-computere, og generiske PostScript-drivere kan bruges til udskrivning på tværs af netværket.

SchedulerEdit

Den CUPS-skemalægger implementerer Internet Printing Protocol (IPP) over HTTP/1.1. Et hjælpeprogram (cups-lpd) konverterer anmodninger om Line Printer Daemon-protokollen (LPD) til IPP. Planlæggeren tilbyder også en webbaseret grænseflade til administration af udskriftsjobs, konfiguration af serveren og til dokumentation om selve CUPS.

Et autorisationsmodul styrer, hvilke IPP- og HTTP-meddelelser der kan passere gennem systemet. Når IPP/HTTP-pakkerne er godkendt, sendes de til klientmodulet, som lytter efter og behandler indgående forbindelser. Klientmodulet er også ansvarligt for at udføre eksterne CGI-programmer efter behov for at understøtte webbaserede printere, klasser og overvågning og administration af jobstatus. Når dette modul har behandlet sine anmodninger, sender det dem til IPP-modulet, som udfører URI-validering (Uniform Resource Identifier) for at forhindre en klient i at omgå adgangskontrol eller autentificering på HTTP-serveren. URI’en er en tekststreng, der angiver et navn eller en adresse, som kan bruges til at henvise til en abstrakt eller fysisk ressource på et netværk.

Skemalæggeren giver mulighed for klasser af printere. Programmer kan sende anmodninger til grupper af printere i en klasse, så planlæggeren kan dirigere jobbet til den første ledige printer i den pågældende klasse. Et jobmodul administrerer udskriftsjobs, sender dem til filter- og backend-processerne med henblik på endelig konvertering og udskrivning og overvåger statusmeddelelserne fra disse processer.

CUPS-skemalæggeren anvender et konfigurationsmodul, som analyserer konfigurationsfiler, initialiserer CUPS-datastrukturer og starter og stopper CUPS-programmet. Konfigurationsmodulet stopper CUPS-tjenesterne under behandlingen af konfigurationsfilen og genstarter derefter tjenesten, når behandlingen er afsluttet.

Et logningsmodul håndterer logning af scheduler-hændelser til adgangs-, fejl- og sidelogfiler. Hovedmodulet håndterer timeouts og afsendelse af I/O-forespørgsler for klientforbindelser, holder øje med signaler, håndterer fejl og afslutninger i underprocesser og genindlæser serverkonfigurationsfilerne efter behov.

Andre moduler, der anvendes af scheduleren, omfatter:

  • MIME-modulet, som håndterer en MIME-type (Multipurpose Internet Mail Extensions) og en konverteringsdatabase, der anvendes i filtreringsprocessen, som konverterer udskriftsdata til et format, der er egnet til en udskrivningsenhed;
  • et PPD-modul, som håndterer en liste over PPD-filer (Postscript Printer Description);
  • et enhedsmodul, som håndterer en liste over enheder, der er tilgængelige i systemet;
  • et printermodul, som håndterer printere og PPD’er i CUPS.

Filter systemEdit

CUPS giver brugerne mulighed for at sende forskellige data til CUPS-serveren og få disse data konverteret til et format, som printeren forstår og kan udskrive

CUPS kan behandle en række forskellige dataformater på printserveren. Den konverterer dataene fra udskriftsjobbet til printerens endelige sprog/format via en række filtre. Det bruger MIME-typer til at identificere filformater.

MIME-databaserRediger

Når CUPS-systemet har tildelt udskriftsjobbet til planlæggeren, sendes det videre til CUPS-filtersystemet. Dette konverterer dataene til et format, der passer til printeren. Under opstart indlæser CUPS-dæmonen to MIME-databaser: mime.types, som definerer de kendte filtyper, som CUPS kan acceptere data for, og mime.convs, som definerer de programmer, der behandler hver enkelt MIME-type.

Den mime.types-fil har syntaksen:

mimetype { | }

For eksempel vil følgende post være anvendelig for at registrere en HTML-fil:

text/html html htm \

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

Den anden linje matcher filens indhold til den angivne MIME-type ved at fastslå, at den første kilobyte tekst i filen indeholder printbare tegn, og at disse tegn indeholder HTML-markup. Hvis ovenstående mønster passer, vil filtersystemet markere filen som MIME-typen text/html.

Filen mime.convs har syntaksen:

source destination cost program

Kildefeltet angiver den MIME-type, der bestemmes ved at slå op i filen mime.types, mens destinationsfeltet angiver den type output, der anmodes om, og bestemmer, hvilket program der skal anvendes. Dette hentes også fra mime.types. Omkostningsfeltet hjælper med at vælge sæt af filtre ved konvertering af en fil. Det sidste felt, program, bestemmer, hvilket filterprogram der skal bruges til at udføre datakonverteringen.

Nogle eksempler:

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

FiltreringsprocesRediger

Filtreringsprocessen fungerer ved at tage inddata, der er præformateret med seks argumenter:

  1. job-ID for udskriftsjobbet
  2. brugernavn
  3. jobnavn
  4. antal kopier, der skal udskrives
  5. alle udskriftsindstillinger
  6. filnavnet (dette er dog unødvendigt, hvis det er blevet omdirigeret fra standardinput).

Det bestemmer derefter den type data, der indlæses, og det filter, der skal anvendes ved hjælp af MIME-databaserne; f.eks. vil billeddata blive opdaget og behandlet gennem et bestemt filter, og HTML-data vil blive opdaget og behandlet gennem et andet filter.

CUPS kan konvertere de leverede data enten til PostScript-data eller direkte til rasterdata. Hvis de konverteres til PostScript-data, anvendes et ekstra filter kaldet et forfilter, som kører PostScript-dataene gennem en anden PostScript-konverter, så den kan tilføje printerspecifikke indstillinger som f.eks. valg af sideområder til udskrivning, indstilling af n-up-tilstand og andre enhedsspecifikke ting. Når forfiltreringen er udført, kan dataene enten sendes direkte til en CUPS-backend, hvis der anvendes en PostScript-printer, eller de kan sendes videre til et andet filter som Foomatic fra linuxprinting.org. Alternativt kan de sendes til Ghostscript, som konverterer PostScript til et mellemliggende CUPS-rasterformat. Det mellemliggende rasterformat sendes derefter videre til et sidste filter, som konverterer rasterdataene til et printerspecifikt format. De standardfiltre, der følger med CUPS, omfatter:

  • raster til PCL
  • raster til ESC/P eller ESC/P2 (et printersprog fra Epson, som nu stort set er erstattet af deres nye ESC/P-Raster-format)
  • raster til Dymo (et andet printerfirma).
  • raster til Zebra Programming Language eller ZPL (et printersprog fra Zebra Technologies)

Som i 2009 understøttes andre proprietære sprog som GDI eller SPL (Samsung Printer Language) af Splix, en oversætter fra raster til SPL.

Der er dog flere andre alternativer, der kan integreres med CUPS. HPLIP (tidligere kendt som HP-IJS) leverer Linux+CUPS-drivere til HP-printere, Gutenprint (tidligere kendt som Gimp-Print) er en række printerdrivere af høj kvalitet til (for det meste) inkjetprintere, og TurboPrint for Linux har en anden række printerdrivere af høj kvalitet til en lang række printere.

BackendsRediger

Backends er de måder, hvorpå CUPS sender data til printerne. Der er flere backends til rådighed for CUPS: parallelle, serielle og USB-porte, cups-pdf PDF Virtual Printing samt netværksbackends, der fungerer via IPP-, JetDirect- (AppSocket), Line Printer Daemon (“LPD”) og SMB-protokollerne.

En ny mdnsbackend i CUPS 1.4 giver Bonjour (DNS-SD)-baseret printeropdagelse. I CUPS 1.6 understøttes Bonjour-printeropdagelse og -deling ved hjælp af Avahi også.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.