Sie können dies mit Hilfe von Ghostscript lösen. pdftk
allein kann das nicht (nach bestem Wissen). Ich gebe Ihnen die Befehlszeilenschritte, um dies manuell zu tun. Es wird einfach sein, dies als Prozedur zu skripten, auch mit verschiedenen Parametern für Seitengrößen und Seitenzahlen. Aber du hast gesagt, dass du das selbst machen kannst ;-)
Wie man das mit Hilfe von Ghostscript löst ...
... und zum Spaß habe ich es kürzlich nicht mit einer Eingabedatei mit "Double-Up" -Seiten gemacht, sondern mit einer mit "Treble-Ups". Sie können die Antwort für diesen Fall in dieser anderen Antwort 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, von denen jede die Größe von 421 pt x 595 pt hat.
Erster Schritt
Extrahieren wir zunächst die linken Abschnitte von jeder der Eingabeseiten:
gs \
-o left-sections.pdf \
-sDEVICE=pdfwrite \
-g4210x5950 \
-c "<</PageOffset [0 0]>> setpagedevice" \
-f double-page-input.pdf
Was haben diese Parameter bewirkt?
Erstens wissen, dass in PDF 1 Zoll == 72 Punkte . Dann ist der Rest:
-o ...............:
Benennt die Ausgabedatei. Implizit auch verwendet -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 (worauf folgt -f
).
<</PageOffset ....:
Legt die Verschiebung des Seitenbilds auf dem Medium fest. (Für linke Seiten hat die Verschiebung nach natürlich [0 0]
keine wirkliche Auswirkung.)
-f ...............:
Verarbeiten Sie diese Eingabedatei.
Welches Ergebnis hat der letzte Befehl erzielt?
Dieses:
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
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
Jetzt kombinieren wir die Seiten in einer Datei. Wir könnten das auch mit Ghostscript machen, aber wir werden pdftk
stattdessen verwenden, weil es für diesen Job schneller ist:
pdftk \
A=right-sections.pdf \
B=left-sections.pdf \
shuffle A B \
output single-pages-output.pdf
verbose
Getan. Hier ist das gewünschte Ergebnis. 4 verschiedene Seiten im Format 421x595 pt.
Ergebnis:
+------------+ +------------+ +------------+ +------------+ ^
| | | | | | | | |
| 1 | | 2 | | 3 | | 4 | |
| | | | | | | | 595 pt
| | | | | | | | |
| | | | | | | | |
| | | | | | | | |
+------------+ +------------+ +------------+ +------------+ v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->