CUPS bietet einen Mechanismus, der es ermöglicht, Druckaufträge auf standardisierte Weise an Drucker zu senden. Die Druckdaten gehen an einen Planer, der die Aufträge an ein Filtersystem weiterleitet, das den Druckauftrag in ein für den Drucker verständliches Format umwandelt. Das Filtersystem leitet die Daten dann an ein Backend weiter – einen speziellen Filter, der die Druckdaten an ein Gerät oder eine Netzwerkverbindung sendet. Das System macht ausgiebig Gebrauch von PostScript und der Rasterung von Daten, um die Daten in ein für den Zieldrucker geeignetes Format umzuwandeln.

CUPS bietet ein standardisiertes und modularisiertes Drucksystem, das zahlreiche Datenformate auf dem Druckserver verarbeiten kann. Vor CUPS war es schwierig, ein standardisiertes Druckermanagementsystem zu finden, das der großen Vielfalt der auf dem Markt befindlichen Drucker mit ihren eigenen Druckersprachen und -formaten gerecht werden konnte. So waren beispielsweise die Drucksysteme von System V und Berkeley weitgehend inkompatibel miteinander und erforderten komplizierte Skripte und Umgehungslösungen, um das Datenformat des Programms in ein druckbares Format umzuwandeln. Oft konnten sie das Dateiformat, das an den Drucker gesendet wurde, nicht erkennen und den Datenstrom daher nicht automatisch und korrekt konvertieren. Außerdem wurde die Datenkonvertierung auf einzelnen Workstations und nicht auf einem zentralen Server durchgeführt.

CUPS ermöglicht es Druckerherstellern und Entwicklern von Druckertreibern, leichter Treiber zu erstellen, die nativ auf dem Druckserver funktionieren. Die Verarbeitung erfolgt auf dem Server, was das netzwerkbasierte Drucken einfacher macht als bei anderen Unix-Drucksystemen. Wenn Samba installiert ist, können Benutzer Drucker auf entfernten Windows-Computern ansprechen, und generische PostScript-Treiber können für den Druck über das Netzwerk verwendet werden.

SchedulerEdit

Der CUPS-Scheduler implementiert das Internet Printing Protocol (IPP) über HTTP/1.1. Eine Hilfsanwendung (cups-lpd) wandelt LPD-Anfragen (Line Printer Daemon Protocol) in IPP um. Der Scheduler bietet auch eine webbasierte Schnittstelle für die Verwaltung von Druckaufträgen, die Konfiguration des Servers und für die Dokumentation über CUPS selbst.

Ein Autorisierungsmodul kontrolliert, welche IPP- und HTTP-Nachrichten das System passieren können. Sobald die IPP/HTTP-Pakete autorisiert sind, werden sie an das Client-Modul gesendet, das auf eingehende Verbindungen wartet und diese verarbeitet. Das Client-Modul ist auch für die Ausführung externer CGI-Programme zuständig, die zur Unterstützung von webbasierten Druckern, Klassen und zur Überwachung und Verwaltung des Auftragsstatus benötigt werden. Sobald dieses Modul seine Anfragen verarbeitet hat, sendet es sie an das IPP-Modul, das eine URI-Validierung (Uniform Resource Identifier) durchführt, um zu verhindern, dass ein Client Zugriffskontrollen oder die Authentifizierung auf dem HTTP-Server umgeht. Der URI ist ein Textstring, der einen Namen oder eine Adresse angibt, der/die verwendet werden kann, um auf eine abstrakte oder physische Ressource in einem Netzwerk zu verweisen.

Der Scheduler ermöglicht die Bildung von Druckerklassen. Anwendungen können Anfragen an Gruppen von Druckern in einer Klasse senden, so dass der Scheduler den Auftrag an den ersten verfügbaren Drucker in dieser Klasse weiterleiten kann. Ein Auftragsmodul verwaltet Druckaufträge, indem es sie zur endgültigen Konvertierung und zum Druck an die Filter- und Backend-Prozesse sendet und die Statusmeldungen dieser Prozesse überwacht.

Der CUPS-Scheduler verwendet ein Konfigurationsmodul, das Konfigurationsdateien analysiert, CUPS-Datenstrukturen initialisiert und das CUPS-Programm startet und stoppt. Das Konfigurationsmodul hält die CUPS-Dienste während der Verarbeitung der Konfigurationsdateien an und startet den Dienst neu, wenn die Verarbeitung abgeschlossen ist.

Ein Protokollierungsmodul verwaltet die Protokollierung von Scheduler-Ereignissen für Zugriffs-, Fehler- und Seitenprotokolldateien. Das Hauptmodul kümmert sich um Timeouts und den Versand von E/A-Anforderungen für Client-Verbindungen, überwacht Signale, behandelt Fehler und Beendigungen von Kindprozessen und lädt die Serverkonfigurationsdateien nach Bedarf neu.

Andere Module, die vom Scheduler verwendet werden, sind:

  • das MIME-Modul, das eine Multipurpose Internet Mail Extensions (MIME)-Typ- und Konvertierungsdatenbank verwaltet, die im Filterprozess verwendet wird, der Druckdaten in ein für ein Druckgerät geeignetes Format umwandelt;
  • ein PPD-Modul, das eine Liste von Postscript Printer Description (PPD)-Dateien verwaltet;
  • ein Gerätemodul, das eine Liste von im System verfügbaren Geräten verwaltet;
  • ein Druckermodul, das Drucker und PPDs innerhalb von CUPS behandelt.

Filter systemEdit

CUPS ermöglicht es Benutzern, verschiedene Daten an den CUPS-Server zu senden und diese Daten in ein Format umzuwandeln, das der Drucker versteht und drucken kann

CUPS kann eine Vielzahl von Datenformaten auf dem Druckserver verarbeiten. Es wandelt die Daten des Druckauftrags über eine Reihe von Filtern in die endgültige Sprache/das Format des Druckers um. Es verwendet MIME-Typen zur Identifizierung von Dateiformaten.

MIME-DatenbankenBearbeiten

Nachdem das CUPS-System den Druckauftrag dem Planer zugewiesen hat, wird er an das CUPS-Filtersystem weitergeleitet. Dieses wandelt die Daten in ein für den Drucker geeignetes Format um. Während des Starts lädt der CUPS-Daemon zwei MIME-Datenbanken: mime.types, die die bekannten Dateitypen definiert, für die CUPS Daten annehmen kann, und mime.convs, die die Programme definiert, die jeden bestimmten MIME-Typ verarbeiten.

Die mime.types-Datei hat die folgende Syntax:

mimetype { | }

Um beispielsweise eine HTML-Datei zu erkennen, wäre der folgende Eintrag zutreffend:

text/html html htm \

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

Die zweite Zeile ordnet den Dateiinhalt dem angegebenen MIME-Typ zu, indem sie feststellt, dass das erste Kilobyte Text in der Datei druckbare Zeichen enthält und dass diese Zeichen HTML-Markup enthalten. Wenn das obige Muster übereinstimmt, würde das Filtersystem die Datei als den MIME-Typ text/html markieren.

Die mime.convs-Datei hat die folgende Syntax:

source destination cost program

Das Quellfeld bezeichnet den MIME-Typ, der durch Nachschlagen in der mime.types-Datei ermittelt wird, während das Zielfeld den Typ der angeforderten Ausgabe auflistet und bestimmt, welches Programm verwendet werden soll. Dies wird ebenfalls aus mime.types entnommen. Das Kostenfeld hilft bei der Auswahl von Filtersätzen bei der Konvertierung einer Datei. Das letzte Feld, Programm, bestimmt, welches Filterprogramm für die Datenkonvertierung zu verwenden ist.

Einige Beispiele:

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

FilterungsprozessBearbeiten

Der Filterungsprozess funktioniert, indem er mit sechs Argumenten vorformatierte Eingabedaten entgegennimmt:

  1. die Auftragskennung des Druckauftrags
  2. der Benutzername
  3. der Auftragsname
  4. die Anzahl der zu druckenden Kopien
  5. beliebige Druckoptionen
  6. der Dateiname (dies ist jedoch unnötig, wenn er von der Standardeingabe umgeleitet wurde).

Es bestimmt dann die Art der eingegebenen Daten und den zu verwendenden Filter durch die Verwendung der MIME-Datenbanken; zum Beispiel werden Bilddaten durch einen bestimmten Filter erkannt und verarbeitet und HTML-Daten durch einen anderen Filter erkannt und verarbeitet.

CUPS kann gelieferte Daten entweder in PostScript-Daten oder direkt in Rasterdaten konvertieren. Bei der Konvertierung in PostScript-Daten wird ein zusätzlicher Filter, ein sogenannter Vorfilter, angewandt, der die PostScript-Daten durch einen weiteren PostScript-Konverter laufen lässt, damit dieser druckerspezifische Optionen wie die Auswahl der zu druckenden Seitenbereiche, die Einstellung des N-up-Modus und andere gerätespezifische Dinge hinzufügen kann. Nach der Vorfilterung können die Daten entweder direkt an ein CUPS-Backend gesendet werden, wenn ein PostScript-Drucker verwendet wird, oder sie können an einen anderen Filter wie Foomatic von linuxprinting.org übergeben werden. Alternativ können sie an Ghostscript weitergeleitet werden, das das PostScript in ein CUPS-Rasterformat umwandelt, das als Zwischenformat dient. Das zwischengeschaltete Rasterformat wird dann an einen letzten Filter weitergeleitet, der die Rasterdaten in ein druckerspezifisches Format umwandelt. Zu den in CUPS enthaltenen Standardfiltern gehören:

  • Raster nach PCL
  • Raster nach ESC/P oder ESC/P2 (eine Druckersprache von Epson, die jetzt weitgehend durch das neue ESC/P-Raster-Format ersetzt wurde)
  • Raster nach Dymo (ein anderes Druckerunternehmen).
  • Raster zu Zebra Programming Language oder ZPL (eine Druckersprache von Zebra Technologies)

Seit 2009 werden auch andere proprietäre Sprachen wie GDI oder SPL (Samsung Printer Language) von Splix unterstützt, einem Raster-zu-SPL-Übersetzer.

Es gibt jedoch mehrere andere Alternativen, die sich in CUPS integrieren lassen. HPLIP (früher bekannt als HP-IJS) bietet Linux+CUPS-Treiber für HP-Drucker, Gutenprint (früher bekannt als Gimp-Print) ist eine Reihe von hochwertigen Druckertreibern für (meist) Tintenstrahldrucker, und TurboPrint für Linux bietet eine weitere Reihe von hochwertigen Druckertreibern für eine breite Palette von Druckern.

BackendsEdit

Die Backends sind die Wege, auf denen CUPS Daten an Drucker sendet. Für CUPS stehen mehrere Backends zur Verfügung: parallele, serielle und USB-Anschlüsse, cups-pdf PDF Virtual Printing sowie Netzwerk-Backends, die über die Protokolle IPP, JetDirect (AppSocket), Line Printer Daemon („LPD“) und SMB arbeiten.

Ein neues mdns Backend in CUPS 1.4 bietet eine Bonjour (DNS-SD) basierte Druckererkennung. In CUPS 1.6 wird auch die Bonjour-Druckererkennung und -freigabe mit Avahi unterstützt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.