Obróć strony pdf: 90 stopni dla stron parzystych i -90 stopni dla stron nieparzystych

27

Zastanawiałem się w pliku pdf, jak obracać strony pdf: 90 stopni dla stron parzystych i -90 stopni dla stron nieparzystych?

W pdftk wszystko, co wiem, to obracanie strony o pdftk in.pdf cat 1W output out.pdfi obracanie wszystkich stron o pdftk in.pdf cat 1-endW output out.pdf.

Dzięki!

Tim
źródło
FYI: w przypadku nowszych wersji pdftk składnia jest następująca: pdftk in.pdf cat 1-endwest output out.pdftj. westZamiast Wlub southzamiast S...
colidyre

Odpowiedzi:

11

Jest to łatwe, ponieważ pdftk 1.44 dodał shuffleoperację umożliwiającą różne transformacje na stronach nieparzystych i parzystych (między innymi zastosowaniami).

Jeśli masz starszą wersję pdftk, możesz użyć tego skryptu Python z biblioteką PyPdf . (Ostrzeżenie wpisane bezpośrednio w przeglądarce).

#!/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- przestań być zły”
źródło
30

W pdftkwersji 1.45 (6 grudnia 2012 r.) Lub nowszej użyj:

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

Jeśli masz pdftkwersję 1.44 ( dzięki Gillesowi za zwrócenie na to uwagi! ), Możesz użyć:

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

Niektóre podobne przykłady przypadków opisano w man pdftk(przynajmniej w najnowszych wersjach).

rozcietrzewiacz
źródło
1

Jako ulepszenie odpowiedzi Gillesa :

#!/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"))

Gdy program akceptuje argumenty wiersza polecenia pliku wejściowego i wyjściowego: python script.py <inputFileName> <outputFileName>

meinfr13nd
źródło