http://www.documentroot.net - Tipps, Tricks, Tutorials, Wissenswertes
22. Oktober 2009

Bücher und Broschüren drucken mit Linux

Quelle: http://www.documentroot.net/linux/linux-buecher-broschueren-drucken

Wer schonmal versucht hat, ein DinA5 Buch oder eine Broschüre mit seinem Tintenstrahler zu drucken, der weiß wahrscheinlich, wie verwirrend allein die richtige Anordnung der Seiten ist. Linux bringt Tools mit, die einem diese Denkarbeit abnehmen können und in ein Skript gepresst kann man mit einem einzigen Befehl ein PDF für den Buchdruck vorbereiten.

(Die folgende Anleitung verwendet das Paket psutils. Bitte sicherstellen, dass es installiert ist!)

Prinzip BuchdruckDer Druck einer DinA5-Broschüre klingt einfach, ist aber nicht ganz so trivial. Die Seiten müssen nämlich auf die vier Bereiche eines gefalteten DinA4-Blattes verteilt werden. Hat man nur ein einziges Blatt (also 4 Seiten), ist das noch recht einfach, siehe rechtes Bild. Komplizierter wird es dann schon, wenn 4 Seiten nicht ausreichen, zB wenn man ein mehrseitiges PDF-Dokument in Buchform drucken möchte.

~ psbook ~

Für diesen Zweck gibt es das Tool psbook, das Seiten von ps-Files für den Buchdruck passend umordnet. So wird bei einem 4-seitigen Dokument die Reihenfolge von [1] [2] [3] [4] umgeordnet in [4] [1] [2] [3] sodass man hinterher auf halbe Größe skalieren kann, [4,1] auf die Vorderseite eines DinA4-Blattes drucken kann und [2,3] auf die Rückseite.
Dies war noch das einfachste Beispiel – bei einem 100-seitigen Dokument wird es schnell sehr unübersichtlich, aber das Prinzip bleibt gleich. psbook anwenden und je 2 Seiten zusammenfassen.

~ psnup ~

Prinzip Buchdruck 8 SeitenDas Zusammenfassen wird mit dem Tool psnup erledigt, das in einem Dokument mehrere Seiten auf eine einzige packen kann (wir wollen je zwei Seiten auf eine zusammenfassen). Nach psbook und psnup ist die Datei fertig für den Druck.
Beispiel: ein 8-seitiges Dokument wird nach beiden Schritten umgewandelt in die Form [8,1] [2,7] [6,3] [4,5].
Beim Druck wird nun [8,1] auf ein DinA4-Blatt gedruckt und auf die Rückseite davon kommt [2,7]. Auf das nächste Blatt Papier kommen [6,3] und [4,5]. Zum Schluss werden die Blätter gefaltet und ineinander gelegt.

~ ps2pdf / pdf2ps ~

Nun arbeiten beide Tools aber auf ps-Dateien und nicht auf den weiter verbreiteten pdf-Files. Aber auch dafür ist was im Paket: pdf2ps und ps2pdf wandeln zwischen beiden Formaten hin und her.

~ Beispiel ~

1
2
3
4
pdf2ps input.pdf input.ps
psbook input.ps umsortiert.ps
psnup -2 umsortiert.ps buch.ps
ps2pdf buch.ps buch.pdf

Damit man sich diese Tipporgie sparen kann, habe ich ein Skript geschrieben, das als Argument eine PDF-Datei nimmt und diese in Buchform umwandelt.
Danach ungerade Seiten drucken, Papierstapel drehen, gerade Seiten drucken, fertig.


~ Skript: pdf2book ~

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh
 
filename=$(ls "$1" | sed 's/\(.*\)\..*/\1/')
 
if [ "" = "$filename" ]
then
  echo "Datei nicht gefunden. Ende."
  exit 1
fi
 
tempname="/tmp/pdf2book"
 
pdf2ps "$filename.pdf" "$tempname.1.ps"
 
if [ "$2" = "" ]
  then psbook -q "$tempname.1.ps" "$tempname.2.ps";
  else psbook -q -s$2 "$tempname.1.ps" "$tempname.2.ps";
fi
 
psnup -q -2 "$tempname.2.ps" "$tempname.1.ps"
 
ps2pdf "$tempname.1.ps" "$filename.book.pdf"

Aufruf des Skriptes mit pdf2book <filename>.pdf
Erstellt wird eine Datei <filename>.book.pdf.

~ Dicke Bücher ~

Hat man ein richtig dickes Buch zu drucken, wird es eng, wenn man alle Blätter ineinander legen will. Hierfür werden Bücher in Segmente unterteilt, also einzelne “Teilbücher”, die dann hintereinandergelegt und am Buchrücken verklebt werden. Will man das machen, muss man dem psbook-Aufruf den Parameter -s mitgeben. Er gibt an, wieviele Seiten ein Segment bilden sollen.
Zum Beispiel: psbook -s100 <input> <output>
Dieser Befehl fasst 25 Blätter (= 100 Seiten) zu einem Segment zusammen. Gefaltet ist das Segment also 50 Blatt stark. Die Zahl hinter dem Parameter -s sollte immer durch 4 teilbar sein, wie dieses Rechenbeispiel zeigt.
In meinem Skript kann die Segmentgröße als zweites Kommandozeilenargument mit angegeben werden.

~ Binden ~

Was nun noch fehlt, ist das Binden des Segments bzw der Segmente. Ist es nur ein einziges, ist es empfehlenswert, mit Nadel und Faden einmal durch den Falz zu nähen. Bei vielen Segmenten kann man das mit jedem Segment einzeln machen und dabei ein Stoffband mit einnähen, das die Rücken aller Segmente zusammenhält.
Alternativ kann man die Segmente auch nebeneinander in einen Schraubstock spannen (Rücken nach oben) und mit einem Raspel den Falz komplett wegraspeln. Dann etwas aufblättern und Leim reinschmieren; zusammenpressen und trocknen lassen.

~ Weitere Infos ~

PSUtils Homepage: http://www.tardis.ed.ac.uk/~ajcd/psutils/
(hier gibt es auch die man-Pages)

Linux , , , , , , , , , , ,