<chapter id="theory">
<title
>Ein bisschen theoretischer Hintergrund: &CUPS;, <acronym
>IPP</acronym
>, &PostScript; und <application
>GhostScript</application
></title>

<para
>Dieses Kapitel soll Ihnen einen theoretischen Hintergrund des Druckens im Allgemeinen und des Druckens mit &CUPS; im Speziellen vermitteln. Wenn Sie diese Informationen nicht brauchen, können Sie hier zum <link linkend="getting-started"
>nächsten Kapitel</link
> weiterspringen. Manchmal benötigt man jedoch etwas zusätzliche Theorie um praktische Probleme lösen zu können. Dann sollten Sie auf dieses Kapitel zurückkommen.</para>

<sect1 id="basics-of-printing">
<title
>Grundlagen des Druckens</title>

<para
>Drucken ist eines der komplizierteren Kapitel in der <acronym
>IT</acronym
>-Technik.</para>


<para
>Früher war es so, dass jeder Entwickler eines Programms, das Druckdaten ausgeben sollte, einen eigenen Druckertreiber schreiben musste. Dies war ziemlich kompliziert, da verschiedene Programme verschiedene Dateiformate benutzten. Sogar Programme mit demselben Zweck, wie z.B. Textverarbeitungen, konnten oft die Formate anderer Textverarbeitungen nicht lesen. Es gab keine einheitliche Schnittstelle, was dazu führte, dass Programmierer oft nur einige wenige ausgewählte Druckmodelle unterstützten.</para>

<para
>Für ein neu auf dem Markt erscheinendes Gerät mussten die Programmautoren einen neuen Treiber schreiben, wenn sie wollten, dass ihr Programm das Gerät unterstützt. Für die Hersteller war es unmöglich sicher zu gehen, dass ihr Gerät von jedem in der Welt bekannten Programm unterstützt wurde (obwohl es viel weniger Programme gab als heute).</para>

<para
>Mit zehn zu unterstützenden Anwendungen und einem Duzend Druckern bedeutete das für den Systemverwalter, dass er mit 120 Treibern umgehen musste. Dadurch wurde die Entwicklung einer einheitlichen Schnittstelle zwischen Programmen und Druckern dringend notwendig.</para>

<para
>Das Auftauchen von <quote
>Page Description Languages</quote
> (Seiten beschreibenden Sprachen), welche die graphische Anordnung von Tinte und Toner auf Papier (oder auf anderen Ausgabemedien wie Monitoren, Photogeräten &etc;) in einer einheitlichen Weise beschreiben war ein Schritt, der eine große Lücke schloss. </para>

<para
>Eine dieser Entwicklungen war &PostScript; von Adobe. Dies bedeutete, dass ein Anwendungsprogrammierer sich darauf konzentrieren konnte, eine Beschreibung seiner zu druckenden Seite in der &PostScript; Sprache zu erstellen. Währenddessen konnten sich die Entwickler von Druckgeräten darauf konzentrieren Ihre Geräte &PostScript;-fähig zu machen.</para>

<para
>Natürlich wurden mit der Zeit noch andere Beschreibungsarten entwickelt. Die wichtigsten Konkurrenten von &PostScript; waren <acronym
>PCL</acronym
> (<quote
>Print Control Language</quote
>, von &Hewlett-Packard;), <quote
>ESC/P</quote
> (von Epson) und <acronym
>GDI</acronym
> (<quote
>Graphical Device Interface</quote
> von &Microsoft;).</para>

<para
>Das Einführung dieser Sprachen zur Beschreibung von Druckseiten machte das Leben einfacher und beschleunigte die weitere Entwicklung für alle. Trotzdem gibt es immer noch unterschiedliche, inkompatible und konkurrierende Beschreibungssprachen, die das Leben für Benutzer, Administratoren, Entwickler und Hersteller schwer genug machen.</para>

<sect2>
<title
>&PostScript; im Arbeitsspeicher - Bitmaps auf dem Papier</title>

<para
>&PostScript; wird meistens in professionellen Druckumgebungen wie PrePress und in der Druckindustrie eingesetzt. Im &UNIX;- und &Linux;-Bereich hat &PostScript; eine Vormachstellung unter den Beschreibungssprachen (<acronym
>PDL</acronym
>s). Dort erzeugt fast jedes Programm ein &PostScript;-Abbild seiner Seiten wenn Sie den Knopf <quote
>Drucken</quote
> drücken. Hier sehen Sie nun ein einfaches Beispiel eines handgemachten &PostScript;-Codes, das zwei einfache Zeichnungen beschreibt:</para>

<example id="coded-postscript"
> <title
>&PostScript; Quelltext</title
> <screen
>%!PS
100 100 moveto
0 50 rlineto
50 0 rlineto
0 -50 rlineto
closepath
.7 setgray fill
% first box over; next
160 100 moveto
0 60 rlineto
45 10 rlineto
0 -40 rlineto
closepath
.2 setgray fill</screen
> </example>

<para
>Dies weist den gedachten &PostScript;-<quote
>Stift</quote
> an, eine Figur in einer bestimmten Weise zu ziehen und diese dann mit verschiedenen Grauschattierungen zu füllen. Der erste Teil könnte ausführlicher übersetzt folgendermaßen lauten: <quote
>Gehe zu den Koordinaten (100, 100), ziehe eine Linie mit einer Länge von 50 nach oben, dann eine von dort nach rechts, dann wieder runter und schließe dann die Figur. Nehme jetzt eine Farbe mit 50% Grauanteil und benutze diese um die Figur zu füllen.</quote
></para>

<example id="rendered-postscript"
> <title
>Berechnetes &PostScript;</title
> <mediaobject
> <imageobject
> <imagedata fileref="ps-boxes.png" format="PNG"/> </imageobject
> <textobject
> <phrase
><xref linkend="coded-postscript"/> Das Beispiel als Bild dargestellt.</phrase
> </textobject
> </mediaobject
> </example>

<para
>Natürlich kann &PostScript; viel kompliziertere Dinge als dieses einfache Beispiel. Es ist eine voll ausgestattete Programmiersprache mit vielen verschiedenen Operatoren und Funktionen. Sie können &PostScript; sogar dazu benutzen, den Wert von Pi zu berechnen, Ihre Festplatte zu formatieren oder in eine Datei schreiben. Die wirkliche Stärke von &PostScript; ist es allerdings, die Anordnung von graphischen Objekten auf einer Seite zu beschreiben. Zusätzlich kann &PostScript; alles was Sie sich auf einer Seite Papier vorstellen können, wie Buchstaben in verschiedenen Schriftarten, Figuren, Formen, Schatten, Farben, Linien, Punkte und Raster, skalieren, verschieben, umwandeln, drehen und rastern.</para>

<para
>Eine &PostScript;-Datei ist ein Abbild einer oder mehrerer zu druckender Seiten in einer ziemlich abstrakten Weise. Idealerweise sollte die Datei die Seiten geräteunabhängig beschreiben. &PostScript; ist normalerweise nicht <quote
>sichtbar</quote
> und befindet sich nur auf der Festplatte oder im Arbeitsspeicher.</para>

</sect2>

<sect2>
<title
>Rasterbilder auf Papierblättern</title>

<para
>Das, was Sie normalerweise auf einem Papier sehen ist fast immer ein <quote
>Rasterbild</quote
>. Auch wenn Ihnen Ihr Gehirn sagt, dies sei eine Linie werden Sie mit einer gut vergrößernden Lupe die kleinen Punkte auf dem Papier erkennen. Eine Ausnahme sind die so genannten <quote
>Plotter</quote
>, die mit einem Stift arbeiten. Einfache Punkte in verschiedenen Farben sind das Einzige, was Drucker heutzutage auf Papier ausgeben können. Diese Punkte können sich in der Größe unterscheiden, was dann zu verschiedenen Auflösungen führt. Die komplette Seite besteht jedoch nur aus Punkten.</para>

<para
>Für die verschiedenen Drucker müssen die Rasterbilder unterschiedlich verarbeitet werden. Ein Tintenstrahldrucker hat abhängig von Auflösung, der Anzahl der Tintenpatronen (sehr gute Drucker brauchen sieben verschiedene Tinten, während billigere Modelle manchmal nur 3 haben), der Anzahl der Tintenstrahle (einige Drucker haben mehr als 100!), des benutzten Mischungsalgorithmus und vielen anderen Dingen ein Endraster-Format und eine Transferreihenfolge, die stark vom genauen Modell abhängt.</para>

<para
>Früher, zu Zeiten des <quote
>LPD</quote
>, waren Drucker Maschinen, die mit Hilfe von Endlospapier unzählige Reihen von <acronym
>ASCII</acronym
>-Text auf die Seiten ausgaben. Ein riesiger Unterschied im Vergleich zu heute!</para>

</sect2>


<sect2>
<title
><acronym
>RIP</acronym
>: von &PostScript; zum Raster</title>

<para
>Bevor die fertigen Rasterbilder auf dem Papier ausgegeben werden müssen sie zuerst aus den abstrakten &PostScript;-Vorlagen berechnet werden. Dieser berechnungsintensive Schritt wird <quote
>Raster Imaging Process</quote
>(<quote
><acronym
>RIP</acronym
></quote
>) genannt.</para>

<para
>Bei &PostScript; wird der <acronym
>RIP</acronym
>-Schritt von den Geräten selbst durchgeführt. Die &PostScript;-Datei wird einfach an den Drucker gesendet. Der <quote
>Raster Imaging Processor</quote
> (auch <acronym
>RIP</acronym
> genannt) im Drucker ist für die weitere Verarbeitung der &PostScript;-Seite und der Ausgabe des Rasterbildes auf Papier verantwortlich. Da er ein spezialisierter Prozessor ist erfüllt er diese Aufgabe sehr gut.</para>

<para
>Kleinere &PostScript;-Geräte haben einen auf einem Chip eingebauten Hardware-<acronym
>RIP</acronym
>. Große, professionelle Drucker haben oft einen Software-<acronym
>RIP</acronym
>, der auf einem extra bereitgestellten &UNIX;-Computer läuft. Hierfür werden oft Sun SPARC Solaris oder &SGI; &IRIX; Maschinen eingesetzt.</para>

</sect2>

<sect2>
<title
><application
>GhostScript</application
> als Software-<acronym
>RIP</acronym
></title>

<para
>Was aber tun, wenn Sie keinen &PostScript;-Drucker besitzen?</para>

<para
>Der <acronym
>RIP</acronym
>-Schritt muss ausgeführt werden bevor die Daten an die Druckeinheit weitergegeben werden. Die &PostScript;-Daten Ihrer Anwendung müssen also auf Ihrer eigenen Maschine berechnet werden. Dazu muss das genauer Rasterformat des Zieldruckers erstellt werden.</para>

<para
>Dadurch, dass der Drucker &PostScript; nicht selbst verarbeiten kann, wird die ganze Sache etwas komplizierter. Es wird eine Software benötigt, die viele damit verbundene Aufgaben lösen kann.</para>

<para
>Genau dies erledigt das für viele &Linux;-, *BSD- und andere &UNIX;-Systeme verfügbare Softwarepaket &ghostscript;. &ghostscript; ist einfach ein &PostScript;-Interpreter, ein Software-<acronym
>RIP</acronym
> für viele verschiedene Geräte.</para>

</sect2>

<sect2>
<title
><quote
>Treiber</quote
> und <quote
>Filter</quote
> im Allgemeinen</title>

<para
>Um Rasterbilder aus &PostScript;-Daten zu erzeugen benutzt &ghostscript; das <quote
>Filterkonzept</quote
>. Es gibt viele Filter in &ghostscript;, von denen einige auf bestimmte Drucker spezialisiert sind. &ghostscript;-Filter für bestimmte Geräte wurden oftmals ohne die Unterstützung des Herstellers entwickelt. Ohne die Spezifikationen und ohne technische Dokumente war es ein sehr mühsamer Weg die ganzen Protokolle und Datenformate zu entschlüsseln.</para>

<para
>Nicht alle &ghostscript;-Filter arbeiten gleich gut mit ihren Druckern. Es gibt jedoch einige neuere Filter wie den <application
>stp</application
>-Filter des <application
>Gimp</application
>-Print-Projekts, die sehr gute Ergebnisse bis hin zu Fotoqualität liefern. Diese Filter sind ihren Gegenstücken &Microsoft; &Windows; ebenbürtig oder übertreffen diese sogar noch.</para>

<para
>Die meisten Programme in &UNIX;- und &Linux;-Systemen erzeugen &PostScript;-Daten als Druckausgabe. Die Filter sind die eigentlichen Arbeitstiere in den Drucksystemen. Sie erzeugen die aus allen &PostScript;-Daten die richtigen Rasterbilder für alle Zielmaschinen ohne &PostScript;-Unterstützung.</para>

</sect2>

<sect2>
<title
>Treiber, Filter und Backends in CUPS </title>

<para
>&CUPS; benutzt eigene Filter, die jedoch auf dem Filtersystem von &ghostscript; basieren. Der pstoraster- und der imagetoraster-Filter sind direkt vom &ghostscript;-Quelltext abgeleitet. Unter &CUPS; wurde der ganze Mechanismus des alten Codes neu organisiert und in einige verständliche und eindeutige Module eingeordnet.</para>

<para
>Die nächste Zeichnung (mit Hilfe von &kivio; erstellt) zeigt einen Überblick über die Filter und Backends in &CUPS; und wie diese zusammenpassen. Der Ablauf ist von oben nach unten dargestellt. Backends sind spezielle Filter, die keine Daten in verschiedene Formate konvertieren sondern die fertigen Dateien an den Drucker schicken. Es gibt verschiedene Backends für die unterschiedlichen Protokolle.</para>

<screenshot id="architecture-diagram"
> <screeninfo
>Gestarteter &kprinter;-Dialog (&kivio; Entwurf) </screeninfo
> <mediaobject
> <imageobject
> <imagedata fileref="cups-filterarchitecture-kivio-70Percent-scaled.png" format="PNG"/></imageobject
> <textobject
> <phrase
>Gestarteter &kprinter; Dialog (&kivio; Entwurf)</phrase
></textobject
> </mediaobject
> </screenshot>

</sect2>
<sect2>
<title
>Warteschlangen und Druckdämonen</title>

<para
>Neben dem aufwendigen Filterteil zum Erstellen eines Rasterbildes braucht jede Drucksoftware einen Warteschlangen-Mechanismus. Dieser kümmert sich darum, dass verschiedene Druckaufträge von verschiedenen Benutzern den richtigen Druckern und Filtern zugewiesen werden. Der Warteschlangen-Mechanismus ist Teil des Druckdämons.</para>

<para
>Dieser Dämon sorgt für Ordnung im System. Er ist auch für die Kontrolle von Druckaufträgen zuständig, sodass Benutzer die Möglichkeit haben, ihre Druckaufträge abzubrechen, zu stoppen, erneut zu starten &etc;. Natürlich sollten Sie diese Möglichkeiten nicht für Druckaufträge haben, die von anderen Personen in Auftrag gegeben wurden.</para>

</sect2>

</sect1>



<sect1 id="cups-and-ppd">
<title
>Exkurs: Wie &CUPS; die mächtigen &PPD;s einsetzt.</title>

<para
>Jetzt, wo Sie wissen, wie eine &PostScript;-Datei, welche die Anordnung der Seitenelemente in einer sehr geräteunabhängigen Weise beschreibt, vorgeht um ein Rasterbild zu erzeugen, werden Sie sich vielleicht folgendes fragen: <quote
>Wie kommen diese ganzen unterschiedlichen Auflösungen, Papiergrößen, Farben und Filter auf meinem Drucker genau richtig raus?</quote
></para>

<para
>Die Antwort sind die so genannten &PostScript; Druckerbeschreibungsdateien (&PostScript; Printer Description files, &PPD;). Eine &PPD;-Datei beschreibt alle auf einem bestimmten Gerät veränderbaren Eigenschaften. Außerdem enthält die Datei programmierte Befehle um bestimmte Eigenschaften des Geräts anzusprechen. Trotzdem bestehen &PPD;-Dateien nur aus einfachem <acronym
>ASCII</acronym
>-Text.</para>

<para
>&PPD;-Dateien wurden von Adobe <quote
>erfunden</quote
> um den Herstellern die Implementierung von neuen Eigenschaften in &PostScript;-Druckern so einfach wie möglich zu machen und dies trotzdem in einer standardisierten Weise zu tun. &PPD;-Dateien sind von Adobe gut beschrieben und dokumentiert. Ihre Spezifikation ist praktisch ein offener Standard.</para>

<sect2 id="ppd-files">
<title
>Geräteabhängige Druckoptionen</title>

<para
>Drucken mit &PostScript; wurde ursprünglich nur für &Microsoft; &Windows;- und Apple &Mac;-Systeme entwickelt. Über einen langen Zeitraum hinweg war das Drucken auf modernen Geräten auf &Linux;- und &UNIX;-Systemen nicht möglich. Jetzt können jedoch bestehende &PPD;-Dateien von allen Systemen voll ausgeschöpft werden, die &CUPS; benutzen.</para>

<para
>Über &PPD;-Dateien konnten Druckerhersteller geräteabhängige Hardware-Eigentschaften wie Duplex-Modi, Sortierung, Lochen &etc; einbauen. Der Druckertreiber lädt die &PPD;-Datei einfach als zusätzlich Konfigurationsdatei. Dadurch erfährt der Treiber von den verfügbaren Optionen des Gerätes und er lernt wie er diese Optionen ausführen muss. Zusätzlich werden die neuen Optionen in der graphischen Oberfläche angezeigt. Durch diesen Mechanismus sind Sie in der Lage <quote
>geräteunabhängige</quote
> &PostScript; Seitenbeschreibungsdateien zu drucken, aber davor noch geräteabhängige Optionen zu definieren, die zu der Ausgabe der Anwendung hinzugefügt werden und dann erst gedruckt werden.</para>

</sect2>

<sect2>
<title
>Wie sie &PPD;-Dateien für &PostScript;-Drucker bekommen</title>

<para
>&PPD;-Dateien wurden ursprünglich normalerweise nicht in &UNIX;- und &Linux;-Systemen benutzt. Die Hersteller beabsichtigten nicht, diese Datei für andere Systeme als für die beiden ursprünglichen (&Microsoft; &Windows; und &MacOS; Betriebssystem) einzusetzen. Durch den hervorragenden Schritt von &CUPS;, die &PPD;-Spezifikationen voll zu unterstützen, haben Sie jetzt die Möglichkeit alle Eigenschaften von modernen Druckern unter &Linux; und &Linux;-ähnlichen Systemen zu nutzen. &kdeprint; macht die Benutzung von &CUPS; sogar noch einfacher als es sich die &CUPS;-Entwickler je erträumt hätten.</para>

<para
>Falls Sie einen &PostScript;-Drucker haben, kann &CUPS; die &Windows; &PPD;-Dateien, die der Hersteller liefert verwenden. Die Dateien kosten normalerweise kein Geld und können einfach von einem &Windows;-Computer mit installiertem &PostScript;-Treiber des entsprechenden Modells kopiert werden. Alternativ dazu finden Sie &PPD;-Dateien auch auf den Disketten Ihres Druckers oder an verschiedenen Plätzen im Internet.</para>

</sect2>

<sect2>
<title
>Wie spezielle &PPD;s auch für nicht-&PostScript; Drucker nützlich sein können.</title>

<para
>Jetzt wissen Sie wie &PostScript;-Drucker &PPD;s benutzen können. Aber wie sieht es mit nicht-&PostScript;-Druckern aus? &CUPS; bedient sich dazu eines sehr guten Tricks: Indem es dasselbe Format und dieselbe Datenstruktur wie die &PPD;s der &PostScript;-Welt verwendet, kann &CUPS; die verfügbaren Druckoptionen für nicht-&PostScript;-Drucker genauso beschreiben wie für echte &PostScript;-Drucker. Für einige spezielle Anforderungen von &CUPS; wurden einfach einige wenige Optionen hinzugefügt, z.B. die Zeile, die angibt, welcher Filter die &PostScript;-Datei weiter verarbeitet.</para>

<para
>Damit konnten die Entwickler die gleiche Software benutzen um die &PPD;s nach verfügbaren Optionen zu durchsuchen. Natürlich konnten sich die &CUPS;-Entwickler nicht darauf verlassen, dass die nicht-&PostScript;-Druckerhersteller sofort &PPD;s entwickelten. Diesen schwierigen Start mussten sie alleine bewältigen, indem sie die &PPD;s von Grund auf neu schrieben. Mehr als 1000 dieser &PPD;s sind in der kommerziellen Version von &CUPS;, die unter dem Namen <application
>ESP PrintPro</application
> verkauft wird, enthalten.</para>

<para
>Inzwischen sind eine Menge &PPD;s für &CUPS; verfügbar, die aber meistens immer noch nicht von den Druckerherstellern stammen sondern von freien Softwareentwicklern. Die &CUPS;-Leute bewiesen es und andere folgten schnell: Vor ein bis zwei Jahren war das Drucken unter &Linux; und &UNIX; noch eine Flickschusterei; jetzt wird eine große Fülle von Druckern unterstützt, z.B. auch 7-farbige Tintenstrahldrucker die Ausgaben in Photoqualität ermöglichen.</para>

</sect2>

<sect2>
<title
>Verschiedene Möglichkeiten an &PPD;s für nicht-&PostScript;-Drucker zu kommen</title>

<para
>Sie können &PPD;s zur Benutzung von &CUPS; mit nicht-&PostScript;-Druckern von verschiedenen Quellen des Internets beziehen:</para>

<itemizedlist
> <listitem
> <para
> als erstes gibt es <ulink url="http://www.linuxprinting.org"
>www.linuxprinting.org</ulink
>, wo sie online eine <quote
>CUPS-O-Matic</quote
>-&PPD; für jeden Drucker erzeugen können, der schon früher von &ghostscript; unterstützt wurde. Dies hilft Ihnen beim einfachen Umstieg auf &CUPS;. Falls Ihr Drucker schon mit &ghostscript; gut funktionierte, können sie <quote
>CUPS-O-Matic</quote
> benutzen um den Treiber ins &CUPS;-System zu integrieren und so die beste Lösung aus beiden Welten zu bekommen.</para
> </listitem
> <listitem
> <para
>zweitens gibt es  &CUPS;-&PPD;s für mehr als 120 Drucker, die durch den neuen universellen <application
>stp</application
>-Treiber unterstützt werden. <application
>stp</application
> war ursprünglich die Abkürzung für <quote
>Stylus Photo</quote
>, und wird nun vom gimp-Druckprojekt weiterentwickelt. Ins Leben gerufen wurde das Projekt von Mike Sweet, dem führenden &CUPS; Entwickler. Die Homepage des Projekts finden Sie unter <ulink url="http://gimp-print.sourceforge.net"
>gimp-print.sourceforge.net</ulink
>. Dieser Treiber druckt echte Photoqualität auf vielen modernen Tintenstrahldruckern. &HP; Laser- und DeskJet, <trademark class="registered"
>Epson</trademark
> Stylus und Photo Color Modelle werden genauso unterstützt wie einige <trademark class="registered"
>Canon</trademark
> und <trademark class="registered"
>Lexmark</trademark
> Modelle.</para
> </listitem
> <listitem
> <para
>drittens gibt es die kommerzielle Erweiterung von &CUPS;, die von den &CUPS; Entwicklern selbst erstellt wurde. Die Erweiterung heißt <application
>ESP PrintPro</application
> und enthält mehr als 2300 Druckertreiber. Außerdem liegen verbesserte imagetoraster- und pstoraster-Filter bei.</para
> </listitem
> </itemizedlist>

<para
>&CUPS; ermöglicht es Herstellern zu angemessenen, niedrigen Kosten das Drucken unter &Linux; und &UNIX; ihrer Modelle zu unterstützen. Der modulare Aufbau von &CUPS; ermöglicht das Einbinden von Filtern (=Treiber) mit minimalem Aufwand und erlaubt den Zugang zum ganzen Drucksystem, das &CUPS; zur Verfügung stellt.</para>

<para
>Lesen Sie mehr über die &CUPS; Funktionen in der verfügbaren &CUPS; Dokumentation unter <ulink url="http://www.cups.org/documentation.html"
>http://www.cups.org/documentation.html</ulink
> und <ulink url="http://www.danka.de/printpro/faq.html"
>http://www.danka.de/printpro/faq.html</ulink
>. Desweiteren gibt es unter <ulink url="http://www.linuxprinting.org"
>http://www.linuxprinting.org/</ulink
> eine große Sammlung zu allen Themen, die mit Drucken unter &Linux; und &UNIX; zu tun haben.</para>

</sect2>

</sect1>

<sect1 id="cups-ipp-support">
<title
>Wie die &IPP; Unterstützung &CUPS; zur besten vorhandenen Wahl macht.</title>

<sect2>
<title
><quote
><acronym
>LPD</acronym
> muss weg!</quote
></title>

<para
>Über einen langen Zeitraum hinweg waren viele Entwickler mit dem guten alten <acronym
>LPD</acronym
> unzufrieden. Es gab einige neue Projekte, die gegründet wurden um das Drucken zu verbessern. <application
>LPRng</application
> ist wohl das bekannteste Beispiel. Andere sind: <acronym
>PDQ</acronym
>, <acronym
>PPR</acronym
>, <acronym
>PLP</acronym
>, <acronym
>GNUlpr</acronym
> und <acronym
>RLPR</acronym
>. Keines dieser Programme stellte jedoch einen echten Durchbruch dar. Die meisten erweiterten nur die alten <acronym
>LPD</acronym
> Spezifikationen mit wenigen (oder vielen) Zusätzen, so dass die Programme inkompatibel zueinander wurden.</para>

<para
>Nachdem Grant Taylor, der Autor des <citetitle
>Linux Printing HOWTO</citetitle
> Dokuments die Entwicklung der verschiedenen <acronym
>BSD</acronym
>-artigen Alternativen gesehen hatte kam er schließlich in seiner <quote
>Mission um den LPD abzuschaffen</quote
>. zu der Erkenntnis: <citetitle
>LPD muss weg!</citetitle
></para>

<!-- FIXME: look up URLs for the above -->

</sect2>

<sect2>
<title
>Wie es zu &IPP; kam</title>

<para
>Seitens der Industrie wurden ebenfalls Anstrengungen unternommen die gut bekannte Schwäche des <acronym
>LPD</acronym
> zu beseitigen. Es fing mit proprietären Erweiterungen des alten <acronym
>LPD</acronym
> an und führte dann zum Versuch von &Hewlett-Packard;, &HP; JetDirect als neues Netzwerk-Druckprotokoll einzuführen. Das Ergebnis waren lediglich weitere Inkompatibilitäten.</para>

<para
>Am Schluss wurde eine Initiative zur Ausarbeitung eines neuen Industrie und <acronym
>IETF</acronym
>-Standards gegründet. Die <quote
>Drucker-Arbeitsgruppe</quote
>, ein loser Zusamenschluss von Hardware-, Software- und Betriebssystemverkäufern entwarf das neue <quote
>Internet Printing Protocol</quote
> (&IPP;). &IPP; v1.1 wurde von der <acronym
>IETF</acronym
> (Internet Engineering Task Force) als Standard genehmigt und genießt nun die uneingeschränkte Unterstützung der Industrie in Europa, den USA und Japan. Die meisten momentan erhältlichen Netzwerkdrucker haben jetzt eine eingebaute &IPP; Unterstützung, die auf dem traditionellen <acronym
>LPR</acronym
>/<acronym
>LPD</acronym
> oder JetDirect aufsetzt.</para>

</sect2>

<sect2>
<title
>Warum &IPP; viele Probleme löst</title>

<para
>&IPP; verspricht eine Lösung von vielen Problemen, mit denen sich Netzwerkadministratoren konfrontiert sehen. Diese haben es normalerweise mit heterogenen Netzwerkumgebungen zu tun und verbringen mehr als die Hälfte ihrer Arbeitszeit mit Druckproblemen.</para>

<para
>Durch die Schaffung einheitlicher Abfragefunktionen für &IPP;-Drucker und Server um Dateien zu übertragen und Druckaufträge zu verwalten, ist &IPP; für die Arbeit über verschiedene Betriebssystem-Plattformen hinweg geeignet. Die Umstellung auf &IPP; wird jedoch nicht über Nacht passieren, da viele alte Geräte noch über Jahre hinweg eingesetzt werden könnten. Deshalb gibt es im &IPP; auch eine Kompatibilitätsbestimmung zu allen alten &IPP; Implementierungen. &CUPS; beweist die Entwicklungsfähigkeit von &IPP; zum Drucken in allen Umgebungen.</para>

<para
>Der größte Vorteil wird die Integration in die vorhandenen, robusten <acronym
>IP</acronym
>-Protokolle sein. Als Erweiterung des bewährten und robusten <acronym
>HTTP</acronym
> 1.1 Protokolls an die speziellen Anforderungen von Druckdateien kann &IPP; sehr einfach andere Standards, die entwickelt werden einbinden.</para>

<itemizedlist
> <listitem
> <para
>Elementare-, zusammenfassende- und Zertifikatsauthentifizierung für Benutzer, die Zugang zu Druckdiensten benötigen.</para
> </listitem
> <listitem
> <para
>SSL3 und <acronym
>TLS</acronym
> Verschlüsselung für den Datentransfer.</para
> </listitem
> <listitem
> <para
>Kommunikation in beide Richtungen zwischen Arbeitsstationen und Druckgeräten, mit Hilfe des <acronym
>HTTP</acronym
>/&IPP; <command
>GET</command
> und <command
>POST</command
> Mechanismusses.</para
> </listitem
> <listitem
> <para
>LDAP Verzeichnisdienst-Unterstützung um eine einheitliche Datenbank der verfügbaren Drucker, ihrer Fähigkeiten und den Seitenpreisen &etc; zu verwalten. Zusätzlich können Benutzerpasswörter, <acronym
>ACL</acronym
>s und weitere Dinge verwaltet werden.</para
> </listitem
> <listitem
> <para
><quote
>Abholen</quote
>-Methode (im Gegensatz zur gewöhnlichen <quote
>Senden</quote
>-Methode), in welcher einem Server oder einem Drucker nur eine &URL; eines Dokuments übergeben werden muss, und dieser dann selbständig die Datei empfängt und ausdruckt.</para
> </listitem
> </itemizedlist>

</sect2>

<!--
<sect2>
<title
>&CUPS;, &IPP; and &kde;</title>

<para
>&CUPS; is the most advanced implementation of &IPP; on all &OS;
platforms.  That makes &CUPS; a crucial ally to help "conquer the
desktop" for projects like &kde;. &kdeprint; is the best utility to
make &CUPS; core functionality available to &kde; Desktop
users.</para>

</sect2
> -->

<sect2>
<title
>Drucker <quote
>Plug'n'Play</quote
> für Arbeitsstationen</title>

<para
>Haben Sie schon mal eine Vorführung der Netzwerkfähigkeiten von &CUPS; gesehen? Sie müssen ziemlich beeindruckt gewesen sein, wenn sie vorher nicht wussten was sie erwartet.</para>

<para
>Stellen Sie sich als Administrator eines <quote
>LANs</quote
> vor. Zu Testzwecken haben Sie eine &kde;/&CUPS; Arbeitsstation installiert, die komplett mit einem Dutzend funktionierender Drucker ausgestattet ist: &PostScript;, Laserdrucker, Tintenstrahldrucker &etc;. Ihre &kde;-Benutzer sind sehr zufrieden, da sie die funktionierenden Drucker voll ausschöpfen können. Sie haben zwei Stunden gebraucht um alles perfekt zum laufen zu bekommen und jetzt wollen alle hundert Benutzer des Netzwerks das Gleiche. Weitere zwei Stunden Arbeit für jeden Computer ? Sie denken jetzt sicher: <quote
>Das wird ein riesiger Aufwand</quote
></para>

<para
>Falsch! Mit nur einer Änderung Ihrer ersten &CUPS; Arbeitsstation machen Sie daraus einen <quote
>Server</quote
>. Installieren sie danach &CUPS; auf fünf Rechnern als <quote
>Arbeitsstation</quote
> und wenn Sie zurückkommen werden Sie sehen wie die Benutzer die Einstellungen Ihrer am Anfang definierten Drucker verändern können. Wie durch Magie tauchen die Drucker auf allen fünf &CUPS; Arbeitsstationen im <quote
>Druckdialog</quote
> auf.</para>

<para
>Ihre Benutzer können Drucken, ohne dass auf den Arbeitsstationen ein einziger Treiber oder eine einzige Druckerwarteschlange eingerichtet werden musste.</para>

<para
>Wie funktioniert das nun?</para>

</sect2>

<sect2>
<title
>Drucker <quote
>sehen</quote
>, die garnicht lokal installiert sind ?</title>

<para
>Die Antwort ist überhaupt nicht kompliziert.</para>

<para
>Wenn ein &CUPS; Server in einem <acronym
>LAN</acronym
> aktiv ist, sendet er die Namen der verfügbaren Drucker mit Hilfe des <acronym
>UDP</acronym
> Protokolls und Port 631 an das <acronym
>LAN</acronym
>. Port 631 ist als bekannter Port durch die <acronym
>IANA</acronym
> (die <quote
>Internet Assigning Numbers Authority</quote
>) &IPP; zugewiesen. Alle &CUPS; Arbeitsstationen empfangen auf Port 631 Daten von sendenden &CUPS; Servern. Dadurch kennen alle Rechner die verfügbaren Drucker und alle Rechner erfahren gleichzeitig den Pfad zu den Druckern.</para>

<para
>Mit &IPP; das eine wirklich clevere Erweiterung von <acronym
>HTTP</acronym
> v1.1 ist, hat &CUPS; die Möglichkeit alle Objekte des Drucksystems über <quote
>Universal Resource Locators</quote
> oder <acronym
>URL</acronym
>s anzusprechen. Druckaufträge, die entfernt oder neu gestartet werden müssen, Drucker, die abgefragt oder verändert werden müssen, administrative Aufgaben, die auf dem Server erledigt werden müssen, das alles kann mit &IPP; und &CUPS; über bestimmte <acronym
>URL</acronym
>s erledigt werden. Viele wichtige Dinge können über die Web-Schnittstelle von &CUPS; erledigt werden, die z.B. mit dem &konqueror; bedient werden kann.</para>

</sect2>

<sect2>
<title
>Drucken ohne einen Treiber zu installieren</title>

<para
>Desweiteren können die Arbeitsstationen jeden Drucker administrieren und benutzen, den sie sehen, genauso als wäre es ein lokal angeschlossener Drucker. Natürlich können Sie den Zugriff mit Zugriffslisten und anderen Maßnahmen beschränken, so dass nicht jede Arbeitsstation jeden Drucker nach Belieben benutzen kann.</para>

<para
>Die Arbeitsstationen können sogar ohne den richtigen lokal installierten Filter (oder Treiber) drucken.</para>

<para
>Wie funktioniert das also? Wenn eine Arbeitsstation etwas über eine Druckeroption wissen will oder diese Option auswählen will, sendet die Arbeitsstation eine Anfrage (<command
>CUPS-get-ppd</command
> genannt) an den Server. Der Server teil der Arbeitsstation alles über die Druckoption mit, die er aus der &PPD; ausgelesen hat. Der Benutzer der Arbeitsstation sieht dann die Optionen und kann die gewünschte auswählen. Er sendet dann die Druckdatei (normalerweise ungefiltertes &PostScript;) zusammen mit den Druckoptionen an den Druckserver. &IPP; ist dabei das Transportprotokoll. Die weitere Verarbeitung, insbesondere der Filter zur Erstellung des Endformats auf dem Zieldrucker findet dann auf dem Server statt. Der Server verfügt über die nötigen Programme (<quote
>Treiber</quote
> oder <quote
>Filter</quote
>) dafür.</para>

<para
>Dadurch druckt die Arbeitsstation, ohne dass lokal ein Treiber installiert sein muss.</para>

<para
>Jede Veränderung des Servers, wie z.B. das Hinzufügen oder das Ändern von Druckern wird sofort, ohne weitere Einrichtung der Arbeitsstation übernommen.</para>

</sect2>

<sect2>
<title
><quote
>Zero Administration</quote
>, Lastenausgleich und <quote
>Failover Switching</quote
></title>

<para
>Eine andere weiterführende Funktionen in &CUPS; ist die Möglichkeit einen Lastenausgleich einzurichten.</para>

<para
>Wenn sie die gleiche Warteschlange auf zwei oder mehreren verschiedenen Server definieren, werden die Arbeitsstationen ihre Aufträge an den ersten antwortenden oder verfügbaren Server schicken. Das führt dann zu einem automatischen Lastenausgleich zwischen den Servern. Wenn Sie einen Server wegen Wartungsarbeiten vom Netz nehmen müssen werden die anderen Server einfach dessen Arbeit übernehmen, ohne dass die Benutzer der Arbeitsstationen einen Unterschied bemerken.</para>

</sect2>

</sect1>

</chapter>

