Putar halaman pdf: 90 derajat untuk halaman genap dan -90 derajat untuk halaman ganjil

27

Saya bertanya-tanya dalam file pdf, bagaimana cara memutar halaman pdf: 90 derajat untuk halaman genap dan -90 derajat untuk halaman aneh?

Dengan pdftk, yang saya tahu adalah merotasi satu halaman pdftk in.pdf cat 1W output out.pdf, dan memutar semua halaman pdftk in.pdf cat 1-endW output out.pdf.

Terima kasih!

Tim
sumber
FYI: untuk versi pdftk yang lebih baru, sintaksnya adalah:, pdftk in.pdf cat 1-endwest output out.pdfyaitu westalih- alih Watau southbukan S...
colidyre

Jawaban:

11

Ini mudah karena pdftk 1.44 yang menambahkan shuffleoperasi yang memungkinkan transformasi yang berbeda pada halaman ganjil dan genap (di antara kegunaan lain).

Jika Anda memiliki versi pdftk yang lebih lama, Anda dapat menggunakan skrip Python ini dengan pustaka PyPdf . (Peringatan, ketikkan langsung ke browser.)

#!/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 'SANGAT berhenti menjadi jahat'
sumber
30

Dengan pdftkversi 1.45 (6 Desember 2012) atau lebih baru, gunakan:

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

Jika Anda memiliki pdftkversi 1.44 ( terima kasih kepada Gilles untuk menunjukkannya! ), Anda dapat menggunakan:

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

Beberapa contoh kasus serupa dijelaskan dalam man pdftk(setidaknya dalam versi terbaru).

rozcietrzewiacz
sumber
1

Sebagai peningkatan pada jawaban Gilles :

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

Saat program menerima argumen baris perintah dari file input dan output: python script.py <inputFileName> <outputFileName>

meinfr13nd
sumber