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)
command-line
pdf
pdftk
TSGM
quelle
quelle
Antworten:
Hier ist ein kleines Python-Skript, das die PyPdf-Bibliothek verwendet , die den Job erledigt. (Abgeleitet von
un2up
.) Speichern Sie es in einem Skript namensunbook
, machen Sie es ausführbar (chmod +x unbook
) und führen Sie es als Filter (unbook <book.pdf >1up.pdf
) aus.Ich habe dieses Skript auf der Ausgabe von getestet
pdfbook --signature=N
. Bei einer anderen Methode müssen Sie möglicherweise nicht jede andere Eingabeseite umkehren, und die Seitenreihenfolge kann unterschiedlich sein (dies hängt von der Ausrichtung der Querformat-Seiten ab). Die Seitenanordnung stimmt nicht mit Ihrer Frage überein. Die 13,42 macht für mich keinen Sinn (in einem 4-seitigen Buch sollte 3 neben 2 stehen, nicht neben 1).Ignorieren Sie alle Verfallswarnungen. Nur die PyPdf-Betreuer müssen sich mit diesen befassen.
quelle
<
vor der Eingabedatei vergessen haben . Wenn Sie wirklich absolut sicher sind, dass Sie den Befehl richtig geschrieben haben, könnte dies ein Fehler in der PyPdf-Bibliothek sein (es hat mich noch nicht gescheitert, aber es könnte passieren).python
war mein Fehler: Ich hätte eine Shebang-Linie setzen sollen, fügte ich hinzu.