Linux setzt beim Thema Drucken auf das Common Unix Printing System (CUPS) und auf das Dateiformat PostScript. Darüber mehr zu erfahren, kann nützlich sein und für mehr Komfort beim Drucken sorgen.
Beim Thema “Drucken” fällt den meisten Anwendern nur ein, dass sie Office-Dokumente und E-Mails zu Papier bringen möchten; die Fortgeschrittenen haben die in diesen Programmen die Druckoptionen entdeckt und können zwei Seiten verkleinert auf ein Blatt Papier bringen oder den Duplexdruck einschalten. Doch es ist viel mehr möglich, wenn man sich ein wenig mit der Technik beschäftigt und sich auf die Suche nach hilfreichen Tools begibt. Wir präsentieren hier einen kleinen Einstieg in das Thema.
Pretty Printer “a2ps”
Das kleine Programm a2ps (“Any 2 PostScript”) [1] ist ein so genannter Pretty Printer (deutsch etwa: Schöndrucker) – es ist dafür gedacht, einfache Textdateien auszudrucken, diese aber (abhängig vom Format) mit Hervorhebungen aufzubereiten. Wollen Sie z. B. eine Skriptdatei (etwa /etc/bash.bashrc) gut lesbar zu Papier bringen, rufen Sie das Programm wie folgt auf:
a2ps -Esh --pro=color /etc/bash.bashrc
Mit der Option -Esh schalten Sie die Syntaxhervorhebung für Shell-Skripte ein, und --pro=color sorgt für farbige Ausgabe; davon abgesehen druckt das Programm mit Standardeinstellungen, was bei a2ps bedeutet, dass es zwei Seiten verkleinert auf ein A4-Blatt bringt, und zwar auf dem Standarddrucker, falls Sie mehrere Geräte verwenden – im Kasten Standarddrucker rausfinden und ändern lesen Sie, wie Sie den Standarddrucker identifizieren und ändern können. Das Ergebnis dieser Aktion zeigt Abbildung 1. Lassen Sie die Farboption weg, weicht a2ps auf kursive und fette Schrift aus, um Elemente im Dokument hervorzuheben.

Abbildung 1: Hübsch farbig kann “a2ps” eine Skriptdatei drucken – das gelingt auch mit vielen anderen Dateiformaten, etwa C-Programmen.
Mit welchen Dateien außer Shell-Skripten das Tool noch zurecht kommt, verrät die info-Dokumentation, die Sie in der Shell (recht unkomfortabel) mit info a2ps abrufen können. Ist Konqueror auf Ihrem KDE-Desktop installiert, geht es auch angenehmer, indem Sie den alten Dateimanager starten und in die Adresszeile info:a2ps eingeben (Abbildung 2).

Abbildung 2: Die “info”-Dokumentation zu “a2ps” listet über 100 Formate auf, die das Programm mit Syntax Highlighting drucken kann.
Wollen Sie lieber einzelne Seiten (statt zwei auf einem Blatt) drucken, ergänzen Sie die Option -1; entsprechend erhalten Sie mit -3, -4, …, -9 drei bis neun Seiten auf einem Blatt.
Unter OpenSuse installieren Sie das Programm mit
sudo zypper in a2ps
während Kubuntu-Anwender den Befehl
sudo apt install a2ps
verwenden.
Standarddrucker rausfinden und ändern
Viele Tools, die einen Druckauftrag erzeugen, schicken ihn an den Standarddrucker, wenn Sie nicht explizit einen Drucker nennen. Doch welcher ist der Standarddrucker?
Um das herauszufinden, geben Sie in einem Terminalfenster den etwas kryptischen Befehl
lpoptions | tr " " "\n" | grep device-uri
ein. Die Informationen stecken schon in der Ausgabe von lpoptions, sind aber schlecht lesbar – der Rest des Kommandos formatiert die Ausgabe ein wenig um und zeigt dann nur die Zeile an, in der device-uri vorkommt. Eine typische Ausgabe des Kommandos sieht wie folgt aus:
device-uri=hp:/usb/hp_LaserJet_1015?serial=00CNFD058499
Und sie bedeutet, dass ein via USB angeschlossener HP LaserJet 1015 der Standarddrucker ist.
Wollen Sie einen anderen Drucker zum Ziel für Aufträge ohne Druckerauswahl machen, müssen Sie zunächst herausfinden, wie die Warteschlangen heißen, die Linux für die Drucker angelegt hat. Dabei hilft das Programm lpstat:
esser@hpquadi7:~> lpstat -s system default destination: hplaserjet1015 device for hplaserjet1015: hp:/usb/hp_LaserJet_1015?serial=00CNFD058499 device for LaserJet1100-TurboPrint: tpu://HP/hp_LaserJet_1015/SN=00CNFD058499 device for MFCJ5910DW: socket://192.168.178.46:9100
Das jeweils dritte Wort jeder Zeile (hier z. B. hplaserjet1015) ist der Name einer Warteschlange; dahinter folgen Informationen über den Treiber und/oder die Anschlussart (z. B. USB oder Netzwerk). Um nun in dieser Situation den Drucker mit dem Warteschlangennamen MFCJ5910DW zum Standarddrucker zu machen, verwenden Sie das Kommando
lpoptions -d MFCJ5910DW > /dev/null
Den hinteren Teil (ab dem Größerzeichen) können Sie dabei auch weg lassen, dann erscheinen im Terminalfenster Statusinformationen zum (neuen) Standarddrucker. Ob mit oder ohne Unterdrückung der Ausgabe: Nach dem lpoptions-Aufruf schickt Linux Druckaufträge an dieses Gerät.
Unabhängig von dieser Einstellung können Sie auch die Shell-Variable PRINTER setzen und “exportieren”: Das überschreibt alle Vorgaben und stellt einen anderen Standarddrucker ein – zurück zum HP LaserJet geht es dann z. B. mit
export PRINTER=hplaserjet1015
Fügen Sie dieses Kommando (mit einem für Sie passenden Warteschlangennamen) in die Datei ~/.bashrc ein, etablieren Sie damit den Standardrucker für alle künftigen Ausdrucke.
Drucker anhalten
Wollen Sie zwischendurch den Drucker anhalten (also verhindern, dass der Rechner weitere Druckaufträge aus der Warteschlange verarbeitet), schalten Sie ihn mit cupsdisable vorübergehend aus. Das Programm kann nur der Administrator verwenden, weswegen Sie sudo voranstellen müssen. Als Argument erwartet das Tool den Namen einer Warteschlange.
sudo cupsdisable hplaserjet1015
schaltet den Drucker vorübergehend aus, und nach dem Befehl
sudo cupsenable hplaserjet1015
geht es wieder weiter. Wichtig ist, dass der Drucker auch im “disabled”-Zustand weiterhin Druckaufträge annimmt. Die verwandten Tools cupsreject (engl. reject = abweisen) und cupsaccept (engl. accept = annehmen) deaktivieren die Warteschlange, so dass man keine Aufträge mehr dorthin schicken kann, bzw. lassen wieder neue Einträge zu (Abbildung 3).

Abbildung 3: Die vier Standardtools für die Steuerung der Druckerwarteschlangen sind “cupsenable”, “cupsdisable”, “cupsaccept” und “cupsreject”.
Das Kommando cupsdisable verschafft Ihnen die Gelegenheit, zu untersuchen, was auf dem Rechner passiert, wenn Sie einen Druckauftrag abschicken.
PostScript
Die Seitenbeschreibungssprache PostScript “sprechen” vor allem bessere Laserdrucker und auch Druckmaschinen (in einer Druckerei). PostScript ist für Linux eine wichtige Sprache, denn wenn Sie etwas ausdrucken, erzeugt das Drucksystem meist zunächst eine PostScript-Datei, welche ein spezieller Druckertreiber für Ihr Gerät dann in die Sprache übersetzt, die der Drucker spricht. Der letzte Schritt entfällt, wenn Sie einen PostScript-Drucker benutzen: Dann liegt das Dokument nach der ersten Umwandlung schon in der Zielsprache vor.
Wie kann man dieses Wissen sinnvoll nutzen? Ein Beispiel: Wenn Sie eines dieser irritierenden PDF-Formulare ausgefüllt haben, bei denen der PDF-Viewer Ihnen verbietet, die Änderungen zu speichern, ist nur das Ausdrucken erlaubt. Nach dem Drucken (und dem Schließen des PDF-Viewers) sind die Änderungen verloren. Wenn Sie aber die Verarbeitung der Druckerwarteschlange mit cupsdisable anhalten, erzeugt der PDF-Viewer zwar den Druckauftrag, dieser verlässt aber nicht das System. Jetzt können Sie sich auf die Suche begeben: Verarbeitete Druckaufträge landen im Ordner /var/spool/cups/ und haben dort nichtssagende Dateinamen der Form d00012-001. Eine kurze Untersuchung mit dem Befehl file verrät, dass es sich dabei um eine PostScript-Datei handelt:
quad:/var/spool/cups # file d00012-001 d00012-001: PostScript document text conforming DSC level 3.0, Level 2
(Vor dem Wechsel in den Ordner /var/spool/cups/ müssen Sie mit sudo -l zum Administrator rootwerden; normale Anwender können das Verzeichnis nicht betreten oder auflisten.)
PostScript-Dateien können Sie u. a. im Dateibetrachter Dolphin öffnen; auf den ersten Blick gibt es keine großen Unterschiede zwischen PDF- und PostScript-Dateien: Diese lassen sich ineinander konvertieren.
- Von PostScript zu PDF geht es mit dem Programm
ps2pdf, - für die umgekehrte Richtung nutzen Sie
pdf2ps.
Beide Programme erwarten als Argument den Namen einer PostScript- bzw. PDF-Datei und erzeugen eine – bis auf die Dateiendung – gleichnamige Datei des jeweils anderen Typs.
Um zum Ausgangspunkt zurück zu kommen: Die gegen Speichern von Änderungen geschützte Datei haben Sie nun auf Umwegen in eine PostScript-Datei (mit Ihren Formulareintragungen) umgewandelt, und daraus können Sie wieder eine PDF-Datei erzeugen, die Sie dann archivieren. Hat alles geklappt, nehmen Sie die Druckerwarteschlange mit cupsenable wieder in Betrieb.
Mehr Informationen zu PostScript und dem (daraus entstandenen) PDF-Format lesen Sie in einem älteren EasyLinux-Artikel [3].
psnup, psselect & Co.
Ein Programmpaket, das bei OpenSuse und Kubuntu einheitlicg psutils heißt, enthält eine Sammlung kleiner Tools, mit denen Sie PostScript-Dateien verarbeiten können. Klassiker sind psnup und psselect.
psnup (PostScript n-up) fasst mehrere Seiten auf je einem Blatt zusammen, z. B. in einem 3×3- oder 4×4-Raster. Um etwa aus der digitalen Fassung der letzten EasyLinux-Ausgabe eine Miniaturansicht mit 16 Seiten auf einem Blatt zu machen, können Sie folgende Befehle verwenden:
pdf2ps EL_03-2016_Digisub.pdf test.ps psnup -16 test.ps test-out.ps ps2pdf test-out.ps
Das Ganze dauert eine Weile, danach erhalten Sie ein Ergebnis wie in Abbildung 4. (Sinnvoller wäre es hier allerdings, pdfnup zu verwenden, das dieselbe Aufgabe wie psnup hat, dabei aber direkt mit PDF-Dateien arbeitet.)
Auch psselect ist ein nützliches Tool: Es wählt einzelne Seiten aus einer PostScript-Datei aus – über die Angabe von Seiten, Seitenbereichen oder durch die Vorgabe “ungerade” oder “gerade”. Haben Sie z. B. einen nicht duplexfähigen Drucker, können Sie ein großes Dokument trotzdem beidseitig drucken, indem Sie zunächst mit psselect -e (even) die gerade Seiten drucken, den fertigen Papierstapel neu einlegen und dann mit psselect -o -r (odd, reverse) die ungeraden Seiten in umgekehrter Reihenfolge drucken. Das liefert im Ergebnis eine Sammlung von korrekt beidseitig bedruckten Blättern.
In der Toolsammlung psutils stecken noch weitere interessante Helfer, etwa psbook, das aus einem mehrseitigen Dokument eine so genannte Signatur erstellt. Dieser Begriff aus dem Buchdruck beschreibt die ungewöhnliche Anordnung von Seiten, die für den erforderlich ist – man kann sie aber auch brauchen, wenn man eine kleine mehrseitige Broschüre erstellen und selbst drucken möchte [2].
Hübsche Manpages erzeugen
Als letztes Beispiel für die drucktaugliche Aufbereitung von Daten nehmen wir die Linux-Handbuchseiten (die Manpages). In der Shell können Sie mit man befehl die Onlinehilfe zu einem Befehl abrufen. man kann sie aber auch ein Druckformat bringen und ins PostScript-Format exportieren. Zusammen mit ps2pdf basteln Sie daraus eine PDF-Datei:
man -t man | ps2pdf - man.pdf
erzeugt eine hübsch formatierte Version, die Sie am Bildschirm lesen oder zu Papier bringen können (Abbildung 5).
Infos
[1] a2ps: https://www.gnu.org/software/a2ps/
[2] Booklet-Druck mit “psbook”: Frank Hofmann, “Bücher, Broschüren und Booklets”, LinuxUser 11/2009, S. 88 ff., http://linux-community.de/19481
[3] Artikel zu PostScript und PDF: Hans-Georg Eßer, “Nicht nur zum Drucken”, EasyLinux 03/2009, S. 61 ff., http://linux-community.de/18409



