Ich habe eine PDF-Datei, die in einem Broschürenformat erstellt wurde. Es soll im Querformat auf A4-Papier gedruckt werden. Hier sind zwei Seiten im PDF, die vier Seiten im eigentlichen Buch entsprechen sollten.
-------------------------------
| | |
| | |
| | |
| (1) | (3) |
| | |
| | |
| | |
-------------------------------
-------------------------------
| | |
| | |
| | |
| (4) | (2) |
| | |
| | |
| | |
-------------------------------
Die in Klammern gesetzten Nummern entsprechen der Reihenfolge der einzelnen Seiten.
Ich weiß, dass es unter Linux alle möglichen Befehle (pdfbook, pdfnup usw.) gibt (die wahrscheinlich ursprünglich für die Erstellung dieser Broschüre verwendet wurden). Wie buche ich es aus? Das heißt, ich möchte daraus ein PDF-Dokument erstellen, in dem jede einzelne Seite des Endprodukts eine einzelne Seite des PDFs ist, die auf die übliche Weise bestellt wurde.
Bearbeiten
Dank Gilles konnte ich den folgenden Code verwenden:
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
second_half = []
for i in range(0,input.getNumPages()):
p = input.getPage(i)
q = copy.copy(p)
print >> sys.stderr, 'splitting page',i
print >> sys.stderr, '\tlowerLeft:',p.mediaBox.lowerLeft
print >> sys.stderr, '\tupperRight:',p.mediaBox.upperRight
p.mediaBox.upperRight = (ur[0], (bl[1]+ur[1])/2)
p.mediaBox.lowerLeft = bl
q.mediaBox.upperRight = ur
q.mediaBox.lowerLeft = (bl[0], (bl[1]+ur[1])/2)
if i % 2 == 0:
output.addPage(p)
qold = q
else:
output.addPage(q)
output.addPage(qold)
output.addPage(p)
output.write(sys.stdout)