Drucken unter Unix
Kurzbeschreibung des Drucksystems
- Alle Drucker des Fachbereichs
können department-weit über den Printserver
linuxprintangesteuert werden. Ausdrucke sind für Studierende grundsätzlich kostenpflichtig. - Als Druckersoftware wird CUPS eingesetzt. Eine ausführliche Beschreibung der Druck-Kommandos finden Sie im CUPS-Benutzerhandbuch, eine kurze Beschreibung einschließlich lokaler Besonderheiten im folgenden Text.
- CUPS ist ein Spoolsysteme: Drucken unter Unix erfolgt in
zwei Schritten:
- Übertragen des Druckauftrags an den Printserver
linuxprintund Einspoolen in die gewählte Drucker-Queue - Abarbeiten der Drucker-Queue am Printserver.
- Übertragen des Druckauftrags an den Printserver
- Alle Drucker sind PostScript-Drucker.
- Der systemweiter Default-Drucker
lpzeigt auf/dev/null, d.h. Ausdrucke ohne Druckerangabe verschwinden im “Nirvana”. - Sie können aber einen persönlichen Default-Drucker in der
Umgebungsvariablen
$PRINTERdefinieren, z.B. mit
export PRINTER=d116_sw(fürbash-Benutzer)
setenv PRINTER d116_sw(fürtcsh-Benutzer)
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-n | Nur 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
- PostScript-Fonts verwenden, z.B. im LaTeX-Header mit:
\documentclass[a4paper]{article} \usepackage[T1]{fontenc} \usepackage[latin1]{inputenc} \usepackage{times} \usepackage{german} - Dokument setzen, Seiten zum Booklet umsortieren, fertiges Booklet drucken mit:
latex manual latex manual dvips -o- manual | psbook | psnup -2 | pslpr -Pd116_sw
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