Wie kann ich ein PDF mit 2 Seiten pro Seite in 1 Seite pro Seite konvertieren?
Wie kann ich ein PDF mit 2 Seiten pro Seite in 1 Seite pro Seite konvertieren?
Antworten:
OK, das Problem wurde bereits mit Hilfe von Acrobat (Vollversion, nicht Reader) gelöst. Aber was tun, wenn Sie keinen Zugriff auf Acrobat haben? Könnte dies auch mit Ghostscript und pdftk gemacht werden?
... und zum Spaß verwenden wir keine Eingabedatei mit "Double-Up" -Seiten, sondern eine mit "Treble-Up". Eigentlich habe ich heute ein solches PDF per E-Mail erhalten. Es war ein Flyer, gefaltet in Leporellos Schema . Die Blattgröße war A4-Landschaft (842pt x 595pt), und sie wurde wie folgt gefaltet und angelegt:
Front side to be printed, page 1 of PDF
+--------+--------+--------+ ^
| | | | |
| 5 | 6 | 1 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
^ ^
fold fold
v v
+--------+--------+--------+ ^
| | | | |
| 2 | 3 | 4 | |
| | | | 595 pt
| | | | |
| | | | |
| | | | |
+--------+--------+--------+ v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->
Ich möchte 1 PDF mit 6 Seiten erstellen, von denen jede die ungewöhnliche Größe von 280,67pt x 595 pt hat.
Extrahieren wir zuerst die linken Abschnitte von jeder der Eingabeseiten:
gswin32c.exe ^
-o left-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [0 0]>> setpagedevice" ^
-f myflyer.pdf
Was haben diese Parameter bewirkt?
-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 unmittelbar vor der Haupteingabedatei zu verarbeiten (die folgen muss -f
).<</PageOffset ....:
Legt die Verschiebung des Seitenbilds auf dem Medium fest. (Für linke Seiten hat die Verschiebung natürlich [0 0]
keine wirklichen Auswirkungen.)-f ...............:
Verarbeiten Sie diese Eingabedatei.Welches Ergebnis hat der letzte Befehl erzielt?
Dieses:
Output file: left-sections.pdf, page 1
+--------+ ^
| | |
| 5 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: left-sections.pdf, page 2
+--------+ ^
| | |
| 2 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Lassen Sie uns nun das Analoge für die Mittelteile machen:
gswin32c.exe ^
-o center-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [280.67 0]>> setpagedevice" ^
-f myflyer.pdf
Ergebnis:
Output file: center-sections.pdf, page 1
+--------+ ^
| | |
| 6 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: center-sections.pdf, page 2
+--------+ ^
| | |
| 3 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Zuletzt die richtigen Abschnitte:
gswin32c.exe ^
-o right-sections.pdf ^
-sDEVICE=pdfwrite ^
-g2807x5950 ^
-c "<</PageOffset [561.34 0]>> setpagedevice" ^
-f myflyer.pdf
Ergebnis:
Output file: right-sections.pdf, page 1
+--------+ ^
| | |
| 1 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
Output file: right-sections.pdf, page 2
+--------+ ^
| | |
| 4 | |
| |595 pt
| | |
| | |
| | |
+--------+ v
< 280 pt >
Jetzt kombinieren wir die Seiten in einer Datei:
pdftk.exe ^
A=right-sections.pdf ^
B=center-sections.pdf ^
C=left-sections.pdf ^
cat A1 B2 C2 A2 B1 C1 ^
output single-files-input.pdf
verbose
Erledigt. Hier ist das gewünschte Ergebnis. 6 verschiedene Seiten im Format 280,67 x 595.
Ergebnis:
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ ^
| | | | | | | | | | | | |
| 1 | | 2 | | 3 | | 4 | | 5 | | 6 | |
| | | | | | | | | | | | 595 pt
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
+--------+ +--------+ +--------+ +--------+ +--------+ +--------+ v
< 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt > < 280 pt >
f = open("order.dat","w")
for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i))
f.close()
Dadurch wird eine Datei order.dat mit "A1 B1 A2 B2 ... A63 B63" erstellt. Sie können es dann kopieren und einfügen in pdftk
.
@peims, danke. Hier ist die Schritt-für-Schritt-Version Ihrer Methode. Ich habe es mit einer Datei versucht, die ich für meinen Kindle DX konvertieren wollte, und es funktioniert perfekt:
Verwenden Sie als Nächstes pdftk.exe (von http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ), um die Ergebnisse in eine einzelne Datei zu verschachteln. Kopieren Sie "pdftk.exe", "left.pdf" und "right.pdf" nach "D: \" und führen Sie Folgendes aus:
Hinweis: Wenn Sie die Dateien nach "C: \" kopieren, funktioniert dies unter Win 7 aufgrund von Sicherheitsberechtigungen nicht. Wenn Sie kein D: \ haben, erstellen Sie ein Verzeichnis "C: \ x", um den Vorgang abzuschließen.
Diese Ergebnisse wären normalerweise gut genug. Es gibt jedoch zwei weitere optionale Schritte, um die Ausgabe zu verbessern.
Hatte gerade das gleiche Problem. Ich bin auf briss gestoßen, ein Open-Source-Java-GUI-Tool zum Trennen und Zuschneiden von PDF-Seiten:
http://sourceforge.net/projects/briss/
Unter Linux hat es sehr gut funktioniert, obwohl die Benutzeroberfläche nicht ganz trivial ist. Es funktionierte sogar mit einem PDF mit einigen unterschiedlich großen Seiten!
Sie können das Dokument duplizieren und dann die Seiten zuschneiden, sodass in einer Datei nur die geraden Seitenzahlen und in der anderen nur die ungeraden Seitenzahlen angezeigt werden. Teilen Sie dann die Dateien in einzelne Seiten auf und kombinieren Sie sie neu, um ein Dokument mit einzelnen Seiten zu einer Seite zu erstellen ...
Sie können dies mit einer Reihe von Methoden tun, zum Beispiel:
Ich verwende das folgende Skript, um gescannte Bücher unter Mac und Linux zu verarbeiten. Dies kann sehr speicherintensiv werden.
#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder".
#
# The second step is to take each page of the PDF and split this into two two pages,
# because each page of the scanned document actually contains two pages of the book.
#
#
FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf
echo "Making a temporary copy of the input file."
cp $1 $FILE
#
# Start cropping
#
echo "Cropping the PDF"
# The first regex removes all boxes but CropBox. The second regex renames the CropBox as MediaBox
perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE
echo "Validating the PDF"
#Run PDFTK to ensure that the file is OK
cat $FILE | pdftk - output $FILE2
#
# Done cropping, start splitting the pages
#
echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"
convert -density 200 $FILE2 -crop 50%x0 +repage $FILE3
#
# Done spliting, copy the result in a new file
#
mv $FILE3 $1.pages.pdf
Vielen Dank für eine gute Referenz. Ich war in einer ähnlichen Ausgabe, wollte aber mitteilen, was für mich funktioniert hat.
Ich hatte ein landschaftsorientiertes Tabloid-PDF mit hochformatigem Text nur auf der linken Seite. Im Wesentlichen fehlt in der 2-fach-Boulevardzeitung jeglicher Inhalt auf der rechten Seite. Ähnlicher Ausgangspunkt, aber Tabloid ist 792 × 1224 (Hochformat), 1124 x 792 (Querformat) und die Punktdefinition für das 1/2 Tabloid, das ich benötigte, war 612 x 792 Punkte.
"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"
Ich habe den Inhalt, den ich brauchte, in ein 8,5 x 11-Porträt gebracht, das viel besser lesbar ist.
Ich verstehe, dass eine PDF-Datei mit zwei Seiten (nebeneinander auf einem Blatt) in eine Seite pro Blatt konvertiert werden muss, was zu zwei Blättern einer PDF-Datei führt. Mit anderen Worten, wenn insgesamt 15 Seiten auf 15 Blättern vorhanden sind, müssen wir die PDF-Datei in eine PDF-Datei mit 30 Blättern konvertieren, die jeweils eine Seite enthält. Wenn dies das Problem ist, habe ich Adobe Acrobat XI PRO "Seiten-Tool extrahieren" verwendet, indem ich Seitenzahlen von 1 bis 30 angegeben habe
Krop (Python) & PDFscissors (Java) wurden noch nicht erwähnt. Überprüfen Sie sie, wenn Sie z. B. PDF-Vorlesungsnotizen haben, die Sie in eine ordnungsgemäße PDF-Präsentation zurückversetzen möchten.