Sie können dies mit Hilfe von Ghostscript lösen. pdftk
allein kann das (meines Wissens nach) nicht. Ich gebe Ihnen die Befehlszeilenschritte, um dies manuell zu tun. Es wird einfach sein, dies als Prozedur zu skripten, auch mit unterschiedlichen Parametern für Seitengrößen und Seitenzahlen. Aber du hast gesagt, dass du das selbst kannst;-)
So lösen Sie das mit Hilfe von Ghostscript...
... und zum Spaß habe ich es kürzlich nicht gemacht mit einer Eingabedatei mit "double-up"-Seiten, aber einer mit "treble-ups". Die Antwort für diesen Fall können Sie hier lesen .
Ihr Fall ist noch einfacher. Sie scheinen etwas Ähnliches zu haben:
+------------+------------+ ^
| | | |
| 1 | 2 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
^
fold
v
+------------+------------+ ^
| | | |
| 3 | 4 | |
| | | 595 pt
| | | |
| | | |
| | | |
+------------+------------+ v
<---------- 842 pt -------->
Sie möchten 1 PDF mit 4 Seiten erstellen, die jeweils die Größe von 421 pt x 595 pt haben.
Erster Schritt
Lassen Sie uns zuerst die linken Abschnitte aus jeder der Eingabeseiten extrahieren:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
Was haben diese Parameter bewirkt?
Beachten Sie zunächst, dass in PDF 1 Zoll ==72 Punkte . Dann ist der Rest:
-o ...............:
Benennt die Ausgabedatei. Verwendet implizit auch-dBATCH -dNOPAUSE -dSAFER
.-sDEVICE=pdfwrite :
wir wollen PDF als Ausgabeformat.-g................:
legt die Größe des Ausgabemediums in Pixel fest. Die Standardauflösung von pdfwrite beträgt 720 dpi. Multiplizieren Sie daher mit 10, um eine Übereinstimmung für PageOffset zu erhalten.-c "..............:
fordert Ghostscript auf, das angegebene PostScript-Code-Snippet direkt vor der Haupteingabedatei zu verarbeiten (auf die-f
folgen muss ).<</PageOffset ....:
legt die Verschiebung des Seitenbildes auf dem Medium fest. (Natürlich gilt für linke Seiten die Verschiebung um[0 0]
hat keine wirkliche Wirkung.)-f ...............:
diese Eingabedatei verarbeiten.
Welches Ergebnis hat der letzte Befehl erzielt?
Dieses hier:
Output file: left-sections.pdf, page 1
+------------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: left-sections.pdf, page 2
+------------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Zweiter Schritt
Als nächstes die richtigen Abschnitte:
gs \
-o right-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [-421 0]>> setpagedevice" \
-f double-page-input.pdf
Beachten Sie den negativen Versatz, da wir die Seite nach links verschieben, während der Anzeigebereich stationär bleibt.
Ergebnis:
Output file: right-sections.pdf, page 1
+------------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
Output file: right-sections.pdf, page 2
+------------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+------------+ v
<-- 421 pt -->
Letzter Schritt
Nun fassen wir die Seiten zu einer Datei zusammen. Wir könnten das auch mit Ghostscript machen, aber wir verwenden pdftk
stattdessen, weil es für diesen Job schneller ist:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle \
output single-pages-output.pdf
verbose
Fertig. Hier ist das gewünschte Ergebnis. 4 verschiedene Seiten, Größe 421x595 pt.
Ergebnis:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | |5595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->
Es gibt ein Tool pdfposter, mit dem PDFs mit mehreren Seiten für eine Eingabeseite erstellt werden können (Kacheln oder Zerschneiden der Seiten). Es ähnelt dem Tool poster
, was dasselbe für PostScript-Dateien macht.
Also, nach viel mehr Suche (es scheint, dass "PDF-Schnittseiten" eine viel bessere Suche ist), habe ich ein kleines Skript namens unpnup
gefunden die poster
verwendet , PDF/PS-Konvertierung und pdftk
um genau das zu tun, was ich brauche. Es ist ein bisschen umständlich, aber es ist den anderen Methoden, die ich gefunden habe (wie die Verwendung von imagemagick), weit überlegen, weil es die Seiten nicht rastert, bevor es sie ausspuckt.
Für den Fall, dass mobileread aus irgendeinem Grund verschwindet, ist der Kern des Skripts (lizenziert unter der GPLv2 oder später von Harald Hackenberg <hackenberggmx.at>
) lautet wie folgt:
pdftk "$1" burst
for file in pg*.pdf;
do
pdftops -eps $file
poster -v -pA4 -mA5 -c0% `basename $file .pdf`.eps > `basename $file .pdf`.tps
epstopdf `basename $file .pdf`.tps
done
pdftk pg*.pdf cat output ../`basename $1 .pdf`_unpnuped.pdf