# 1.107.3

# Druck von Dateien

Beschreibung: Prüfungskandidaten sollten in der Lage sein, Druckerwarteschlangen zu verwalten und Druckjobs zu bearbeiten. Dieses Lernziel beinhaltet das Hinzufügen und Entfernen von Jobs an konfigurieren Druckerwarteschlangen und das Konvertieren von Textdateien in PostScript für den Ausdruck.

Die wichtigsten Dateien, Bezeichnungen und Anwendungen:

- lpr
- lpq
- mpage

Die Verwaltung von Druckerwarteschlangen und das Hinzufügen und Entfernen von Druckjobs wurde bereits im letzten Abschnitt besprochen. Interessant ist also das Konvertieren von Textdateien nach Postscript.

Das Prinzip von Drucken unter Linux ist immer mit Postscript verbunden. Da es keine wirklich eindeutige Definition von Druckertreiber unter Linux gibt, wird immer erstmal davon ausgegangen, daß ein Drucker Postscriptfähig ist. Die Ausgabe einer Postscript-Datei an einen Drucker kann dann über einen Filter laufen, der aus dem Postscript die für den Drucker verständliche Sprache generiert. Nahezu jede Anwendung unter Linux kann ihre Ausgaben in Postscript vornehmen. Dadurch ist also eine Art einheitlicher Druckerschnittstelle geschaffen. Die genaue Implementierung solcher Filter wird Thema des nächsten Abschnitts sein.

Für uns ist hier jetzt interessant, wie Textdateien in Postscript verwandelt werden können. Textdateien sind in diesem Zusammenhang beileibe nicht nur echte Dateien, sondern immer auch Datenströme, die beispielsweise von Linux-Texttools erstellt wurden. Das Programm lpr mit dem Druckaufträge gegeben werden, kann ja auch seine Daten aus der Standardeingabe lesen, es ist also durchaus möglich, das Ergebnis eines Befehls an dieses Programm zu pipen.

Für die Konvertierung von Textdateien nach Postscript existieren verschiedene Programme, die im Prinzip alle in der Lage sind, aus einer Textdatei oder einem Datenstrom Postscript zu erzeugen. Die jeweiligen Fähigkeiten sind in Einzelheiten unterschiedlich, so können manche Programme die Ausgabe in Spalten setzen oder mehrere Seiten auf eine Druckseite zusammenfassen. Andere Möglichkeiten sind die Formatierung von Text nach bestimmten Regeln, das Syntax-Highlighting für bestimmte Programmiersprachen oder die automatische Einrückung zur leichteren Lesbarkeit. Die bekanntesten Programme für diese Aufgabe sind

- a2ps
  Verwandelt Textdateien in Postscript. Direkte Weitergabe an den voreingestellten Drucker (oder an jeden beliebigen Drucker mit der Option `-P`Druckername) ist genauso möglich, wie Ausgabe in eine Postscriptdatei (`-o` Dateiname) oder Ausgabe auf die Standard-Ausgabe (`-o -`). Standardmäßig werden zwei Seiten auf ein Blatt gedruckt. Seiten werden gerahmt und mit Dateinamen, Usernamen, Druckdatum versehen. (Beides kann über Optionen auch abgeschaltet werden) Die Option `-E` ermöglicht Pretty-Printing für verschiedenste Formate wie C, Bash, ...

  Sehr viele Parameter erlauben die verschiedensten Einstellungen, wie etwa Anzahl der Zeilen pro Blatt, Anzahl der Zeichen pro Zeile, Titeleinstellungen, Zeilennummerierung, ...

- enscript
  Dieses Programm hat praktisch alle Fähigkeiten von a2ps und noch einiges mehr. Es ermöglicht beispielsweise die Definition eigener Pretty-Printing Stile und den Druck von Textdateien in beliebig vielen Spalten. Außerdem kann als Ausgabeformat nicht nur Postscript, sondern auch HTML, ANSI (Terminalausgabe) und RTF erzeugen. Es sind verschiedene Ausgabeformate möglich, so daß entweder 1,2,4 oder 8 Seiten auf ein Blatt gedruckt werden können.

- mpage
  Dieses Programm ließt normale Textdateien oder Postscript-Dateien und druckt sie auf einem Postscript-Drucker mit einer verkleinerten Ausgabe, so daß mehrere Seiten auf ein Blatt Papier passen. Diese Fähigkeit haben zwar auch die letzten beiden genannten Programme a2ps und enscript, mpage ist aber im Gegensatz zu diesen Programmen auch in der Lage, schon existierende Postscript-Dateien inklusive aller Bilder, Graphiken und sonstiger Features zu verkleinern. Das kann sehr praktisch sein, um einen großen Ausdruck auf wenige Blätter auszudrucken um das Erscheinungsbild zu überprüfen.