PDF-Seiten drehen: 90 Grad für gerade Seiten und -90 Grad für ungerade Seiten

27

Ich habe mich in einer PDF-Datei gefragt, wie man PDF-Seiten dreht: 90 Grad für gerade Seiten und -90 Grad für ungerade Seiten?

Alles, was ich von pdftk weiß, ist, eine Seite um pdftk in.pdf cat 1W output out.pdfund alle Seiten um zu drehen pdftk in.pdf cat 1-endW output out.pdf.

Vielen Dank!

Tim
quelle
Zu Ihrer Information: Für neuere pdftk-Versionen lautet die Syntax:, pdftk in.pdf cat 1-endwest output out.pdfdh westanstelle von Woder southanstelle von S...
colidyre

Antworten:

11

Dies ist einfach seit pdftk 1.44, mit dem die shuffleOperation hinzugefügt wurde, die (unter anderem) verschiedene Transformationen auf geraden und ungeraden Seiten ermöglicht.

Wenn Sie eine ältere Version von pdftk haben, können Sie dieses Python-Skript mit der PyPdf- Bibliothek verwenden. (Warnung, direkt in den Browser eingegeben.)

#!/usr/bin/env python
import sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for i in range(0,input.getNumPages()):
    output.addPage(input.getPage(i).rotateClockwise(90 if i%2==0 else -90))
output.write(sys.stdout)
Gilles 'SO - hör auf böse zu sein'
quelle
30

Mit pdftkVersion 1.45 (6. Dezember 2012) oder später, zu verwenden:

pdftk A=MyPdfFile.pdf shuffle AoddWest AevenEast output MyRotatedFile.pdf

Wenn Sie pdftkVersion 1.44 haben ( danke an Gilles für den Hinweis! ), Können Sie Folgendes verwenden:

pdftk A=MyPdfFile.pdf shuffle AoddL AevenR output MyRotatedFile.pdf

Einige ähnliche Beispielfälle sind in man pdftk(zumindest in neueren Versionen) beschrieben.

rozcietrzewiacz
quelle
1

Zur Verbesserung von Gilles ' Antwort:

#!/usr/bin/env python
import sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(open(sys.argv[1], "rb"))
output = PdfFileWriter()
for i in range(0,input.getNumPages()):
    output.addPage(input.getPage(i).rotateClockwise(90 if i%2==0 else -90))
output.write(open(sys.argv[2], "wb"))

Wobei das Programm Befehlszeilenargumente einer Eingabe- und Ausgabedatei akzeptiert: python script.py <inputFileName> <outputFileName>

meinfr13nd
quelle