MIN-Fakultät
Fachbereich Informatik
Rechenzentrum

Achtung!

Sie befinden sich auf den alten Webseiten des Fachbereichs Informatik. Die neuen Webseiten sind unter

http://www.inf.uni-hamburg.de/de/inst/irz/it-services/print

erreichbar.

Drucken unter Unix

Kurzbeschreibung des Drucksystems

Druckauftrag starten mit lpr oder gtklp

Sie können Text-, PostScript- oder PDF-Dateien mit dem Unix-Kommando lpr ausdrucken. Eventuelle Formatierungsangaben können als Parameter angegeben werden; diese sind aber u.U. recht kryptisch und nur schwer zu merken. Alternativ können Sie das Kommando gtklp benutzen; bei diesem können sie die gewünschten Druckoptionen in Menüs auswählen. Als drittes können Sie direkt aus manchen Anwendungen heraus drucken, z.B. in StarOffice, Firefox oder Thunderbird.

Syntax
lpr [-P<Drucker>] [-#n] [-h] [-o<Optionen>] <Datei(en)>
Oft benutzte Parameter
-#n n Kopien (Datei wird n-mal übertragen!)
-o collate=True Mehrfachkopien zusammenhängend drucken
-o number-up=n 2, 4 oder 8 Seiten auf eine Seite
-o number-up-layout=lrtb Seitenlayout bei 2, 4 oder 8 Seiten
-o page-ranges=m-nNur bestimmte Seiten / Bereiche
-h kein Titelblatt (sofern für den Drucker zugelassen)
-o landscape Querformat
-o sides=one-sided einseitige Ausgabe
-o sides=two-sided-long-edge doppelseitig über lange Seite
-o sides=two-sided-short-edge doppelseitig über kurze Seite
Beispiel:
lpr -Pd116_sw README NEWS

Ein -und zweiseitig Drucken

Die meisten Drucker im Fachbereichsnetz sind mit einer Duplex-Einrichtung ausgerüstet und in der Regel auf doppelseitigen Druck eingestellt.

Wenn trotzdem ein einzelnes Dokument anders gedruckt werden soll, so sollte nicht der Default-Wert am Drucker verstellt werden, sondern eine entsprechende Option beim lpr-Kommando mit der Option -o sides=one-sided für einseitigen und -o sides=two-sided-long-edge für zweiseitigen Ausdruck angegeben werden. Mit der Option -o sides=two-sided-short-edge wird die Rückseite um 180 Grad gedreht, z.B. für A5-Booklets.

Beispiel:
lpr -Pd116_sw -o sides=one-sided diplom.ps
lpr -Pd116_sw -o sides=two-sided-long-edge diplom.ps
lpr -Pd116_sw -o sides=two-sided-short-edge diplom.ps

Ausdrucke im Querformat erzwingt man mit der Option -o landscape

Beispiel:
lpr -Pd116_sw -o landscape folien.ps

Mehrere Exemplare drucken

Das Kommando lpr weiß nichts über die Struktur des zu druckenden Dokumentes. Bei Angabe mehrerer zu druckender Exemplare mit -# kann es daher nur das Dokument n-fach an den Drucker übertragen. Da der wesentliche Aufwand in der Datenübertragung und Aufbereitung liegt, dauert die Druckzeit auch das n-fache.

Je nach Art des zu druckenden Dokumentes kann man u.U. - und sollte dann auch! - dafür sorgen, dass das Dokument nur einmal an den Drucker übertragen und dann jede Seite effizient n-mal nacheinander gedruckt wird. Das geht z.B. für Textdateien mit a2ps und für LaTeX-Dokumente mit dvips.

DIN A3-Ausdrucke

Der Schwarzweiß-Laserdrucker HP8100 (Queue d105_hp8100) und der Farb-Laserdrucker Tektronix 790 (Queue rz_fa3) im Operating können sowohl auf DIN A4- als auch auf A3-Papier drucken.

Zur Auswahl von A3-Papier sollte der Druckauftrag mit der Option -o media=A3 abgeschickt werden:

Beispiel:
lpr -Prz_fa3 -o media=A3 a3file.ps
lpr -Pd105_hp8100 -o media=A3 a3file.ps

Anmerkung: Wer den Farb-Laserdrucker Tektronix 790 für A4-Dokumente benutzen will, sollte sowohl A4-Format als auch den manuellen Papiereinzug angeben:

Beispiel:
lpr -Prz_fa3 -o media=A4,MPTray a4file.ps

Wer Din A4-Dokumente vergrößert als A3-Poster ausgeben will, kann seine Dokumente vorher mit dem Kommando psresize skalieren:

Beispiel:
psresize -PA4 -pA3 a4file.ps tmpa3file.ps
lpr -Prz_fa3 -o media=A3 tmpa3file.ps
rm tmpa3file.ps

Dokument falsch ausgegeben?

Manchmal wird ein Dokument anders gedruckt, als man es beim Druck-Kommando angefordert hat, z.B. im Quer- statt Hochformat oder mehrere Exemplare. Das kann daran liegen, dass das lpr-Kommando nicht nur die Parameter interpretiert, die man selbst beim Aufruf angegeben hat, sondern auch Parameter, die als Voreinstellugen in einer Datei .lpoptions in Ihrem Login-Verzeichnis liegen. Insbesondere gtklp merkt sich in dieser Datei, welche Parameter beim letzten Aufruf für den jeweiligen Drucker verwendet wurden. Somit müssen Sie diese beim nächsten Mal nicht wieder angeben; wenn Sie jedoch anderes wollen, werden u.U. die alten Einstellugen ungewollt übernommen.

In Zweifelsfällen: Löschen Sie die Datei .lpoptions in Ihrem Login-Verzeichnis oder zumindest darin die Zeile mit den Einstellungen für den jeweiligen Drucker.

Andere Dateiformate

Textdateien können Sie mit dem Kommando a2ps von TeX/LaTeX erstellte DVI-Dateien mit dvips drucken. Beide wandeln das zu druckende Dokument in PostScript um und rufen dann implizit lpr auf.

Statt des alten DVI-Formats können Sie Ihre TeX/LaTeX-Dokumente auch mit pdftex bzw. pdflatex setzen und die erzeugten PDF-Dokumente online ansehen oder direkt drucken.

Anstehende Druckaufträge überprüfen mit lpq oder Web-Abfrage

Mit dem Kommando lpq können Sie sich ansehen, wer gerade druckt bzw. noch darauf wartet.

Syntax
lpq [-P<Drucker>]
Beispiel:
rzdspc5% lpq -Pd116_sw
d116_sw is ready and printing
Rank    Owner   Job     File(s)                         Total Size
active  zierke  1356    dokument.ps                     1067008 bytes

Achtung: Die Druckerqueues d116_sw und d116_sw sind Sammelqueues, deren eingehende Druckaufträge an eine der beiden Druckerqueues d105a_hp oder d105b_hp (bzw. analog d116a_hp oder d116b_hp) weitergeleitet werden. Wenn Ihr Dokument also gerade auf dem Drucker d105a_hp oder d105b_hp gedruckt wird, wird dies nicht mehr bei lpq -Pd116_sw angezeigt; der Auftrag hat diese Queue ja schon verlassen. Statt dessen müssen Sie lpq -Pd105a_hp oder lpq -Pd105b_hp eingeben.

Web-Abfrage

Sie können Sich die anstehenden Druckaufträge auch über eine Webschnittstelle ansehen. Dafür müssen Sie sich mit Ihrer Benutzerkennung authentisieren. Insbesondere wird hier auch angezeigt, wenn Ihr Druckauftrag im Status held (zurückgehalten) ist, weil z.B. die Kosten dieses Auftrages Ihr aktuelles Druckerkontingent überschreiten.

Druckaufträge abbrechen bzw. löschen

Um zu verhindern, dass Benutzer Druckaufträge von Dritten abbrechen, wurde im Informatik-Rechenzentrum das Abbrechen und Verschieben von Druckaufträgen mit den üblichen Kommandos (lprm unter Unix) abgeschaltet. Wenn Sie es trotzdem versuchen, bekommen Sie nur eine Fehlermeldung.

Statt dessen können Sie Ihre Druckaufträge über eine Webschnittstelle anhalten, abbrechen oder löschen: Lassen Sie sich die aktuellen Druckaufträge anzeigen; dabei müssen Sie sich mit Ihrer Informatik-Benutzerkennung authentisieren. Rechts neben Ihren Druckaufträgen finden Sie zwei Links “Anhalten” zum Anhalten und “Löschen” zum Abbrechen eines laufenden bzw. Löschen eines noch anstehenden Druckauftrags.

Drucken von Textdateien mit a2ps

Die früher auf den Unix-Rechnern verwendete Druckersoftware konnten Textdateien oft nicht vernünftig ausgeben; insbesondere lange Zeilen wurden nicht umbrochen, sondern angeschnitten. Mit der nun verwendeten Druckersoftware CUPS ist das kein Problem mehr; trotzdem wandeln manche hartgesottene Unix-Benutzer Ihre Textdateien nach alter Gewohnheit mit dem Kommando a2ps in PostScript um und schicken dann diese PostScript-Version zum Drucker.

Als Voreinstellung druckt a2ps zwei logische Seiten von 60 Zeilen zu 80 Spalten auf ein Blatt und vesieht die logischen Seiten mit Rahmen und einer Titelzeile. Beim Ausdruck von Programmcode werden Schlüsselwörter und Kommentare je nach Sprache hervorgehoben.

Beispiel: mehrere Seiten auf ein Blatt Papier
a2ps -Pd116_sw -4 *.java
a2ps -Pd116_sw -9 *.[ch]
Beispiel: Dateien kompakt zusammenfassen
a2ps -Pd116_sw --file-align=fill *.pl
a2ps -Pd116_sw -4 -A fill *.h
Beispiel: Textdatei 160-spaltig im Querformat drucken
a2ps -Pd116_sw -1 -r -l 160 openldap-2.1.28-29.diff
Beispiel: Ausgabe in eine Datei oder nach STDOUT
a2ps --output=file.ps *.tex
a2ps -o- *.[ch] | lpr -Pd116_sw
Beispiel: mehrere Exemplare drucken
a2ps -Pd116_sw --copies=2 loesung1.txt
a2ps -Pd116_sw -n3 *.h

Anmerkung: Die Kopienanzahl kann man auch nachträglich mit einem Texteditor in die von a2ps erzeugte PostScript-Datei einfügen:

% Initialize page description variables.
/sh 595 def
/sw 842 def
/llx 24 def
/urx 818 def
/ury 571 def
/lly 24 def
/#copies 3 def
/th 15.000000 def

PostScript-Aufbereitung mit lpr oder den PStools

Mit der früher auf den Unix-Rechnern verwendeten Druckersoftware konnte man auszudruckende Dokumente nicht aufbereiten wie z.B. umsortieren, Seiten auswählen oder auf einem Blatt zusammenfassen. Statt dessen wurden die PostScript-Dokumente von den sogenannten PStools - psnup, psselect, psbook u.a. - vorverarbeitet und dann an den Drucker geschickt.

Bei der nun verwendeten CUPS-Druckersoftware sind diese Aufbereitungsmöglichkeiten nun integriert, indem die PStools nun als Filter im CUPS-System eingebunden sind und passende Optionen beim lpr-Aufruf angegeben werden. Dummerweise stören sich der von den PStools erzeugten PostScript-Code und der PostScript-Filter im CUPS-System gegenseitig. Das führt z.B. dazu, dass bei mit psnup -2 erzeugte Seiten (zwei logische Seiten auf einem Blatt Papier) die lpr-Optionen -o sides=one-sided und -o sides=two-sided-short-edge wirkungslos sind; alles wird immer doppelseitig so ausgegeben, dass an der langen Seite umzublättern ist.

Also: Vermeiden Sie psnup!

PStools-Probleme umgehen mit pslpr

Wenn Sie trotzdem die PStools benutzen müssen, weil sie z.B. Seiten mit psbook umsortieren wollen, dann drucken Sie Ihre von den PStools erstellte Ausgabe nicht mit lpr, sondern mit dem Shellskript pslpr aus. pslpr schickt vor Ihrer eigentlichen Druckdatei ein kurzes Stück PostScript-Code, der den Drucker richtigt auf doppelseitig mit Bindung an kurzer bzw. langer Seite einstellt.

Parameter des Shellskriptes pslpr
-P <printer> Druckerauswahl
-l doppelseitig über lange Seite
-k doppelseitig über kurze Seite
-b Dokument wird durch psbook | psnup -2 geschickt und dann doppelseitig über kurze Seite gedruckt

Verkleinern - zwei Hochformat-Seiten auf ein Blatt Papier

Beispiel:
lpr -Pd116_sw -o number-up=2 paper.ps

alternativ:

psnup -2 paper.ps | pslpr -Pd116_sw

Verkleinern - vier Querformat-Seiten auf ein Blatt Papier

Beispiel:
lpr -Pd116_sw -o number-up=4 -o number-up-layout=tblr folien.ps

alternativ:

psnup -4 -c -r folien.ps | pslpr -Pd116_sw

Booklet: Seiten zu einem DIN A5-Heft umsortieren

Beispiel:
psbook lkurz.ps | lpr -Pd116_sw -o sides=two-sided-short-edge -o number-up=2

alternativ:

psbook lkurz.ps | psnup -2 | pslpr -s -Pd116_sw
pslpr -b -Pd116_sw

Auswählen einzelner Seiten

Beispiel:
lpr -Pd116_sw -o page-ranges=1-4 -o number-up=2 paper.ps

alternativ:

psselect -p1-4 paper.ps | psnup -2 | pslpr -Pd116_sw

Problematische PostScript-Dokumente

Manche automatisch erstellte PostScript-Dokumente lassen sich nicht drucken, weil sie Code enthalten, an dem sich der PostScript-Interpreter im Drucker verschluckt, z.B. PCL-Befehle am Anfang des Dokumentes, Leerzeilen, falsche Zeilenenden. Manches davon kann man mit dem Shell-Skript fixps bereinigen, bevor man das Dokument an den Drucker schickt.

Beispiel:
fixps -o- datei.ps | lpr -Pd116_sw

Drucken von PDF-Dokumenten

Drucken mit lpr direkt an den Drucker

Im einfachsten Fall kann man ein PDF-Dokument direkt mit dem Befehl lpr an das CUPS-Printsystem übergeben; dieses ist dann dafür verantwortlich, den PDF-Code in PostScript zu wandeln und den PostScript-Code an den Drucker zu schicken. Alle üblichen lpr-Optionen sind möglich.

Beispiel:
lpr -Pd116_sw -o sides=two-sided-short-edge -o number-up=2 l2kurz.pdf 

Drucken aus Acroread oder XPDF heraus

Alternativ - wenn man sich das PDF-Dokument ohnehin gerade in Programmen wie Acroread oder XPDF ansieht - kann man auch aus diesem Programm heraus drucken; ggfs. mit im Druckmenü ausgewählten Optionen. Dann erzeugt das aufgerufende Programm entsprechenden PostScript-Code und übergibt ihn an den CUPS-Printserver.

Drucken mit acroread, pdf2ps oder pdftops

Verschiendene Programme, die von PDF nach PostScript konvertieren, erzeugen verschiedenen PostScript-Code. Es kann sein, dass eine von einer bestimmten Anwendung generierten PDF-Datei bei Konvertierung nach PostScript mit einem bestimmten Programm (oder bei implizieter Konvertierung beim direkten Drucken mit lpr) nicht druckbar ist. Dann kann man versuchen, sein PDF-Dokument mit einem anderen Programm in PostScript zu konvertieren und dieses dann drucken.

Beispiele:
acroread -toPostScript -size a4 paper.pdf | lpr -Pd116_sw
pdf2ps paper.pdf - | lpr -Pd116_sw

Ab hier ist's alt und muss noch überarbeitet werden!!


Drucken von LaTeX-Dokumenten mit dvips

Vom Textsatzsystem LaTeX erzeugte DVI-Dateien werden mit dem dem Kommando dvips gedruckt:

dvips [-P<printer>] [-P<opt>] [-cn] <dvi files>

Die Parameter sind z.T. ähnlich wie beim Kommando lpr, aber mit der Option -P statt -Z:

-cn, -Cn n Kopien (nicht empfohlen, siehe unten)
-odatei, -o '' Ausgabedatei (Default .ps)
-o- Ausgabe nach stdout
-tformat Papierformat, z.B.
  -tlandscape Querformat
-Pkonfig Konfigurationsdatei laden, z.B.
  -Pdrucker Druckerauswahl
  -Psimplex einseitig
  -Pduplex doppelseitig über lange Seite
  -Pduplexshort doppelseitig über kurze Seite

mehrere Exemplare drucken

Mit der Kopienangabe mit -c trägt dvips in die erstellte PostSrcript-Datei einen Kopienzähler ein, der dafür sorgt, dass das einmal zum Drucker geschickte Dokument n Mal gedruckt wird.

Mit dem CUPS-Drucksystem führt das jedoch anscheinend bei HP-Druckern zu Problemen: Wenn die Seitenzahl des Dokumentes ungerade ist, dann wird die letzte Seite nur ein einziges Mal statt n Mal gedruckt.

Sicherer ist es, auf die Kopienangabe beim dvips zu verzichten und sie statt dessen beim Druck-Kommando anzugeben:

dvips -o- diplom.dvi | lpr -Pd116_sw -#3

bzw, wenn das Dokument fertig sortiert n mal gedruckt werden soll, mit

dvips -o- diplom.dvi | lpr -Pd116_sw -#3 -o collate=True

Booklets

Ausdrucke in DIN A3 auf dem Farb-Laserdrucker

Beim Ausdrucken von DVI-Dateien muss beim dvips-Aufruf die Option -t a3 angegeben werden, weil andernfalls die gedruckte Seite auf DIN A4-Format abgeschnitten wird, selbst wenn A3-Papier im Drucker eingelegt ist.

Beispiel:
dvips -Prz_fa3 -t a3 poster.dvi