Broschürendruck (A4 auf A5, doppelseitig)
Hallo, seit ein paar Tagen schlage ich mich mit folgendem Problem rum: Mehrere Seiten (z.B. 16) A4 sollen verkleinert in A5, doppelseitig (Duplexdrucker vorhanden) so ausgedruckt werden, dass man den Stapel von hier 4 Blättern zum Schluss nur noch in der Mitte falten braucht, um eine fertige Broschüre zu haben. Also, für 4 Seiten: 1 - 2 - 3 - 4 -----drucken---> Vorderseite: 4 - 1, Rückseite: 2 - 3 Dank Kprinter und den entsprechenden Druckbefehlen (psbook, psnup) krieg ich es ja prima auf Verkleinerung und Duplex, nur stimmt die Reihenfolge nicht (die muss ich dann per Hand festlegen, was bei 4 oder 8 Seiten ja noch praktikabel ist). Welche Möglichkeit gibt es, hier um ein eigenes Script herumzukommen, dass die Seiten vor dem Druck entsprechend sortiert? Oder gibt es vielleicht schon ein entsprechendes Script, das ich nur nicht gefunden habe? -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Matthias Houdek writes:
Dank Kprinter und den entsprechenden Druckbefehlen (psbook, psnup) krieg ich es ja prima auf Verkleinerung und Duplex, nur stimmt die Reihenfolge nicht (die muss ich dann per Hand festlegen, was bei 4 oder 8 Seiten ja noch praktikabel ist).
Du willst psbook brauchen. psbook -s16 sortiert Dir die Seiten entsprechend. Gruss Beda
Beda Szukics, Mittwoch 10 März 2004 13:31:
Matthias Houdek writes:
Dank Kprinter und den entsprechenden Druckbefehlen (psbook, psnup) krieg ich es ja prima auf Verkleinerung und Duplex, nur stimmt die Reihenfolge nicht (die muss ich dann per Hand festlegen, was bei 4 oder 8 Seiten ja noch praktikabel ist).
Du willst psbook brauchen. psbook -s16 sortiert Dir die Seiten entsprechend.
Ja, natürlich (schrieb ich auch bereits). Nur klappt es trotzdem nicht so richtig. Ich experimenteire schon eine Weile mit diversen Kombinationen, aber entweder stimmt die Postionierung nicht, oder die Skalierung oder eben die Sortierung (die klappt eigentlich nie :-( ) Ich hab auch nirgends eine Beschreibung der verwendeten Variablen von Kprinter gefunden. -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Matthias Houdek, Mittwoch 10 März 2004 16:16: Also, folgendes Klappt (zumindest beim HP4plus mit Duplexeinheit): Druckereinstellungen: Treiber: foomatic/ljet4 (einige andere unterstützen kein Duplex) Ausrichtung: Hochformat (obwohl er ja quer druckt) Duplex: Schmalseitig (das ist egtl. wieder für Querformat) Seiten pro Bl.: 1 (die Skalierung übernimmt psnup) Ränder: Hab ich auf 0 gesetzt (weiß nicht, ob nötig) und unter "Filter" hab ich einen eigenen Verarbeitungsbefehl eingefügt (Über die Druckereinrichtung im KDE-Druckermanager -> Befehle): 'psbook %filterinput | psnup -2 %filterargs %filteroutput' Wichtig ist hier, dass psbook _vor_ psnup ausgeführt wird (daher rührten wohl meine ganzen Fehlversuche). -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Matthias Houdek writes:
Du willst psbook brauchen. psbook -s16 sortiert Dir die Seiten entsprechend.
Ja, natürlich (schrieb ich auch bereits). Nur klappt es trotzdem nicht so richtig. Ich experimenteire schon eine Weile mit diversen Kombinationen, aber entweder stimmt die Postionierung nicht, oder die Skalierung oder eben die Sortierung (die klappt eigentlich nie :-( )
Also ich mach es folgendermassen (die Datei stammt aus LaTeX und dvips und ist schon auf a5 gesetzt, d.h. du musst das Verkleinern noch vorher erledigen) psbook -s16 ¦ pstops '2:0(0mm,0mm)+1(0mm,-148.5mm)' ¦ psselect -o ¦ lpr druckt mir die einen Seiten, danach psselect -e -r druckt mir die hinteren Seiten in der richtigen Reihenfolge. Mit deinem Drucker wirst du wohl das eine oder andere weglassen oder verändern wollen. Gruss Beda
Beda Szukics, Mittwoch 10 März 2004 17:38:
Matthias Houdek writes:
Du willst psbook brauchen. psbook -s16 sortiert Dir die Seiten entsprechend.
Ja, natürlich (schrieb ich auch bereits). Nur klappt es trotzdem nicht so richtig. Ich experimenteire schon eine Weile mit diversen Kombinationen, aber entweder stimmt die Postionierung nicht, oder die Skalierung oder eben die Sortierung (die klappt eigentlich nie :-( )
Also ich mach es folgendermassen (die Datei stammt aus LaTeX und dvips und ist schon auf a5 gesetzt, d.h. du musst das Verkleinern noch vorher erledigen)
Ja, du hast den gleichen Denkfehler wie ich. *freu* Das mit dem vorher verkleinern klappt (zumindest bei der Kombination von psbook und psnup) nicht (Siehe meine andere Mail). psbook betrachtet offensichtlich die "Doppelseitenblätter" von psnup als eine einzelne Seite. Umgekehrt klappt es: erst mit psbook sortieren (z.B. 8-1-2-7-6-3-4-5) und dann mit psnup jeweils 2 Seiten auf ein Blatt skalieren. Den Rest macht dann die Duplexeinheit (oder eben psselect).
psbook -s16 ¦ pstops '2:0(0mm,0mm)+1(0mm,-148.5mm)' ¦ psselect -o ¦ ^^^^ Scheinbar nicht zwingend nötig, klappt bei mir auch ohne
lpr druckt mir die einen Seiten, danach psselect -e -r druckt mir die hinteren Seiten in der richtigen Reihenfolge. Mit deinem Drucker wirst du wohl das eine oder andere weglassen oder verändern wollen.
Jo, da ich einen Duplexdrucker habe, kann ich mir psselect sparen ;-) Trotzdem danke. -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Hallo, Am Wed, 10 Mar 2004, Matthias Houdek schrieb:
Also, für 4 Seiten:
1 - 2 - 3 - 4 -----drucken---> Vorderseite: 4 - 1, Rückseite: 2 - 3
==== psbooklet.sh ==== #! /bin/bash # (c)2000 David Haller # usage="Usage: psbooklet.sh DATEI AUSGABEDATEIPRAEFIX" if test "$#" -ne "2"; then echo "$usage"; exit 1; fi INFILE="$1" OUTFILE="$2" if test "x$INFILE" = "x-"; then INFILE="/tmp/psbooklet_infile.ps"; cat /dev/stdin > "$INFILE"; fi if test "x$OUTFILE" = "x-"; then OUTE=""; OUTO="" else OUTE='${OUTFILE}-${i}-even.ps' OUTO='${OUTFILE}-${i}-odd.ps' fi if ! test -r "$INFILE"; then echo "$usage"; exit 1; fi SIGN=20 # ergibt "20 mod 4" = 5 Blaetter zum Falten und heften # Das folgende _scheint_ zu tun... PAGES=$(grep '%%Pages:' $INFILE | head -1 | sed 's/%%Pages: //') TMP="/tmp/psbooklet$$.ps" i=1 while test $[(i-1) * SIGN] -le $PAGES do START="$[($i-1) * $SIGN + 1]" END="$[$i * $SIGN]" psselect -p"$START-$END" $INFILE | psbook | psnup -2 > $TMP # Jetzt sollten in $TMP die passend sortierten Seiten # von 1 bis $SIGN bzw. (i-1) * $SIGN +1 bis i * $SIGN enthalten # sein. Also beim ersten Schleifendurchlauf die Seiten 1-20 # als 20,1; 2,19; 18,3; 4,17; 16,5; 6,15; 14,7; 8,13; 12,9; 10,11 psselect -e "$TMP" `eval echo "$OUTE"` # gerade Seiten drucken (d.h. 2,19;4,17...) # je nach Drucker vertauschen, ggfs. ein "-r" einfuegen! psselect -o "$TMP" `eval echo "$OUTO"` # ungerade Seiten (d.h. 20,1; 18,3...) i=$[i+1] # Und ab zum naechsten Stapel `a "$SIGN" Seiten... ;) done # und aufraeumen: rm $TMP if test "x$1" = "x-" && test "x$INFILE" = "x/tmp/psbooklet_infile.ps" then test -f "$INFILE" && rm "$INFILE"; fi ==== Falls du Probleme beim anpassen auf deinen Drucker hast melde dich. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
David Haller, Mittwoch 10 März 2004 20:58:
Hallo,
Am Wed, 10 Mar 2004, Matthias Houdek schrieb:
Also, für 4 Seiten:
1 - 2 - 3 - 4 -----drucken---> Vorderseite: 4 - 1, Rückseite: 2 - 3
==== psbooklet.sh ==== #! /bin/bash # (c)2000 David Haller # usage="Usage: psbooklet.sh DATEI AUSGABEDATEIPRAEFIX"
if test "$#" -ne "2"; then echo "$usage"; exit 1; fi INFILE="$1" OUTFILE="$2" if test "x$INFILE" = "x-"; then INFILE="/tmp/psbooklet_infile.ps"; cat /dev/stdin > "$INFILE"; fi if test "x$OUTFILE" = "x-"; then OUTE=""; OUTO="" else OUTE='${OUTFILE}-${i}-even.ps' OUTO='${OUTFILE}-${i}-odd.ps' fi if ! test -r "$INFILE"; then echo "$usage"; exit 1; fi
SIGN=20 # ergibt "20 mod 4" = 5 Blaetter zum Falten und heften
# Das folgende _scheint_ zu tun... PAGES=$(grep '%%Pages:' $INFILE | head -1 | sed 's/%%Pages: //')
TMP="/tmp/psbooklet$$.ps"
i=1 while test $[(i-1) * SIGN] -le $PAGES do START="$[($i-1) * $SIGN + 1]" END="$[$i * $SIGN]" psselect -p"$START-$END" $INFILE | psbook | psnup -2 > $TMP # Jetzt sollten in $TMP die passend sortierten Seiten # von 1 bis $SIGN bzw. (i-1) * $SIGN +1 bis i * $SIGN enthalten # sein. Also beim ersten Schleifendurchlauf die Seiten 1-20 # als 20,1; 2,19; 18,3; 4,17; 16,5; 6,15; ... psselect -e "$TMP" `eval echo "$OUTE"` # gerade Seiten drucken (d.h. 2,19;4,17...) # je nach Drucker vertauschen, ggfs. ein "-r" einfuegen! psselect -o "$TMP" `eval echo "$OUTO"` # ungerade Seiten (d.h. 20,1; 18,3...) i=$[i+1] # Und ab zum naechsten Stapel `a "$SIGN" Seiten... ;) done # und aufraeumen: rm $TMP if test "x$1" = "x-" && test "x$INFILE" = "x/tmp/psbooklet_infile.ps" then test -f "$INFILE" && rm "$INFILE"; fi ====
Falls du Probleme beim anpassen auf deinen Drucker hast melde dich.
Danke, an sowas in der Art habe ich auch noch gedacht, aber ich wollte das Fahrrad kein zweites Mal erfinden. Zum Glück habe ich einen Duplex-Drucker, so dass mir das psselect [-e|-o] erspart bleibt ;-). Und über KDEprint hab ich es inzwischen auch hinbekommen. Mein Denkfehler war, dass ich psnub immer vor psbook machen wollte (frag mich nicht, warum). Aber dein Script ist trotzdem auch für mich noch nutzbar, weil ich ggf. auch mal druckfertige "Handbücher" für andere als Datei weitergeben will. Nur lesen tun die sich so schlecht *g*. Außerdem sortiert dein Script gleich so schön zu 5er-Blöcken, was bei großen Dateien (>> 20) natürlich auch ein Vorteil ist (wobei ich sowieso meist schneide, loche und dann in kleine Ringbücher abhefte - da wäre das egal). Vielleicht könnte man noch die Teilstapelgröße als Startparameter mit angeben. Wenn leer, wird alles in einem Schub gemacht. -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Matthias Houdek
i=1 while test $[(i-1) * SIGN] -le $PAGES do START="$[($i-1) * $SIGN + 1]" END="$[$i * $SIGN]" psselect -p"$START-$END" $INFILE | psbook | psnup -2 > $TMP
Außerdem sortiert dein Script gleich so schön zu 5er-Blöcken, was bei großen Dateien (>> 20) natürlich auch ein Vorteil ist (wobei ich sowieso meist schneide, loche und dann in kleine Ringbücher abhefte - da wäre das egal).
PMJI, aber man psbook sagt: NAME psbook - rearrange pages in PostScript file into signatures SYNOPSIS psbook [ -q ] [ -ssignature ] [ infile [ outfile ] ] DESCRIPTION Psbook rearranges pages from a PostScript document into ``signatures'' for printing books or booklets, creating a new PostScript file. The input PostScript file should follow the Adobe Document Structuring Con- ventions. The -s option selects the size of signature which will be used. The signature size is the number of sides which will be folded and bound together; the number given should be a multiple of four. The default is to use one signature for the whole file. Extra blank sides will be added if the file does not contain a multiple of four pages. Das sollte das Skript doch deutlich vereinfachen. :-) Was mir beim Broschürendruck (egal ob mit Duplex-Printer oder beim Druck in zwei Durchgängen) aber immer wieder auffällt ist, daß Vorder- und Rückseite auf dem Papier nicht unbedingt "deckungsgleich" sind bzw. die ungeraden und geraden Druckseiten (in A5) unterschiedlich weit vom "Falz" entfernt sind. Ich denke mal, um da ein richtig gutes Ergebnis zu bekommen ist einiges an Feintuning in den PPD-Files notwendig. Gruß Rainer -- Dipl.-Inf. (FH) Rainer Koenig Project Manager Linux Fujitsu-Siemens VP BC E SW OS Phone: +49-821-804-3321 Fax: +49-821-804-2131
Rainer Koenig, Donnerstag 11 März 2004 08:47:
Matthias Houdek
writes: i=1 while test $[(i-1) * SIGN] -le $PAGES do START="$[($i-1) * $SIGN + 1]" END="$[$i * $SIGN]" psselect -p"$START-$END" $INFILE | psbook | psnup -2 > $TMP
Außerdem sortiert dein Script gleich so schön zu 5er-Blöcken, was bei großen Dateien (>> 20) natürlich auch ein Vorteil ist (wobei ich sowieso meist schneide, loche und dann in kleine Ringbücher abhefte - da wäre das egal).
PMJI, aber man psbook sagt:
NAME psbook - rearrange pages in PostScript file into signatures
SYNOPSIS psbook [ -q ] [ -ssignature ] [ infile [ outfile ] ]
DESCRIPTION Psbook rearranges pages from a PostScript document into ``signatures'' for printing books or booklets, creating a new PostScript file. The input PostScript file should follow the Adobe Document Structuring Con- ventions.
The -s option selects the size of signature which will be used. The signature size is the number of sides which will be folded and bound together; the number given should be a multiple of four. The default is to use one signature for the whole file. Extra blank sides will be added if the file does not contain a multiple of four pages.
Das sollte das Skript doch deutlich vereinfachen. :-)
Jepp, bin gerade beim Überarbeiten von Davids Script für meine Zwecke und dabei ist mir das auch schon aufgefallen.
Was mir beim Broschürendruck (egal ob mit Duplex-Printer oder beim Druck in zwei Durchgängen) aber immer wieder auffällt ist, daß Vorder- und Rückseite auf dem Papier nicht unbedingt "deckungsgleich" sind bzw. die ungeraden und geraden Druckseiten (in A5) unterschiedlich weit vom "Falz" entfernt sind. Ich denke mal, um da ein richtig gutes Ergebnis zu bekommen ist einiges an Feintuning in den PPD-Files notwendig.
Hm, ich setze einfach der Blattrand des Druckers auf Null, die zu druckenden Seiten haben i.d.R. genug eigenen Rand, dass die nicht bedruckbaren 6 mm nicht abgeschnitten werden. Dadurch hatte ich bisher keine Probleme damit. Ggf. könnte man aber noch einen Bundsteg einarbeiten. Mal schaun. -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
Hallo, Am Thu, 11 Mar 2004, Matthias Houdek schrieb:
David Haller, Mittwoch 10 März 2004 20:58:
==== psbooklet.sh ==== [..] usage="Usage: psbooklet.sh DATEI AUSGABEDATEIPRAEFIX" [..] SIGN=20 # ergibt "20 mod 4" = 5 Blaetter zum Falten und heften [..]
Jein. Ich habe die Erfahrung gemacht, dass sich mehr als 5 Blaetter nicht sinnvoll falten lassen, es sei denn man beschneidet anschliessend mit ner "gescheiten" Schneidemaschine. Man koennte aber folgendes schreiben: usage="Usage: psbooklet.sh DATEI AUSGABEDATEIPRAEFIX [SIGNATUR]" SIGN="${3:=20}" -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Hallo, habe mich gestern und vor allem heute nach der Lösung meines flachsen Denkansatzes etwas mit mit den PS-Tools beschäftigt. Das Ergebnis ist ein Script, dass eine Postscriptdatei (als Datei oder von stdin) als Booklet (4 Seiten auf einem Blatt, 2 vorn, 2 hinten) ausgibt (in eine Datei oder nach stdout). Folgende Optionen sind möglich: Blätter pro Block (-n): Wieviele Blätter sollen jeweils einen zusammengehörigen Block bilden, ist der Blöck größer als die benötigten Blätter, werden nur die benötigten verwendet (macht psbook nicht). Zusätzlicher Bundsteg (-b): Die einzelnen Seiten werden um den angegebenen mm-Betrag (bezogen auf die verkleinerte Seite) nach außen verschoben. Gleichzeitig wird die Seite entsprechend weiter verkleinert, dass sie trotzdem passt. Optionaler Zoom (-z): Um die Seitengröße individuell anzupassen, kann ein zusätzlicher Zoom-Faktor angegeben werden (in Prozent). Damit wird auch der automatische Zoom bei der Angabe des Bundstegs abgeschaltet. (Das Anpassen von A4 auf A5 bleibt davon unberührt) Sie Ausgabe erfolgt wahlweise in 2 Dateien (gerade und ungerade Seiten für den manuellen Druck) oder in eine Datei (für Duplexdrucker). Das Script kann über meine Homepage gedownloadet werden. Aber Achtung, es ist noch beta ;-). Tipps und Hinweise werden dankend angenommen. -- Gruß MaxX 8-) Hinweis 1: PMs an diese Adresse werden automatisch vernichtet. Hinweis 2: Bitte unbedingt beachten: http://www.suse-etikette.de.vu
participants (4)
-
Beda Szukics
-
David Haller
-
Matthias Houdek
-
Rainer Koenig