Ruota le pagine pdf: 90 gradi per le pagine pari e -90 gradi per le pagine dispari


27

Mi chiedevo in un file pdf, come ruotare le pagine pdf: 90 gradi per le pagine pari e -90 gradi per le pagine dispari?

Di pdftk, tutto quello che so è ruotare una pagina di pdftk in.pdf cat 1W output out.pdfe ruotare tutte le pagine di pdftk in.pdf cat 1-endW output out.pdf.

Grazie!


Cordiali saluti: per le versioni più recenti di pdftk, la sintassi è pdftk in.pdf cat 1-endwest output out.pdfwestWsouthS
:,

Risposte:


11

Questo è facile da pdftk 1.44 che ha aggiunto l' shuffleoperazione consentendo diverse trasformazioni su pagine pari e dispari (tra gli altri usi).

Se hai una versione precedente di pdftk, puoi usare questo script Python con la libreria PyPdf . (Attenzione, digitato direttamente nel 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)

30

Con la pdftkversione 1.45 (6 dicembre 2012) o successiva, utilizzare:

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

Se hai la pdftkversione 1.44 ( grazie a Gilles per averlo sottolineato! ), Puoi usare:

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

Alcuni casi di esempio simili sono descritti in man pdftk(almeno nelle versioni recenti).


1

Come miglioramento alla risposta di 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"))

Dove il programma accetta argomenti della riga di comando di un file di input e output: python script.py <inputFileName> <outputFileName>

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.