Rotation des pages pdf: 90 degrés pour les pages paires et -90 degrés pour les pages impaires

27

Je me demandais dans un fichier pdf, comment faire pivoter les pages pdf: 90 degrés pour les pages paires et -90 degrés pour les pages impaires?

Par pdftk, tout ce que je sais, c'est faire pivoter une page pdftk in.pdf cat 1W output out.pdfet faire pivoter toutes les pages pdftk in.pdf cat 1-endW output out.pdf.

Merci!

Tim
la source
FYI: pour les nouvelles versions de pdftk, la syntaxe est pdftk in.pdf cat 1-endwest output out.pdfwestWsouthS
:,

Réponses:

11

C'est facile depuis pdftk 1.44 qui a ajouté l' shuffleopération permettant différentes transformations sur les pages paires et impaires (entre autres utilisations).

Si vous avez une ancienne version de pdftk, vous pouvez utiliser ce script Python avec la bibliothèque PyPdf . (Attention, tapé directement dans le navigateur.)

#!/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- arrête d'être méchant'
la source
30

Avec la pdftkversion 1.45 (6 décembre 2012) ou ultérieure, utilisez:

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

Si vous avez la pdftkversion 1.44 ( merci à Gilles de l'avoir signalé! ), Vous pouvez utiliser:

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

Certains exemples de cas similaires sont décrits dans man pdftk(au moins dans les versions récentes).

rozcietrzewiacz
la source
1

Pour améliorer la réponse de 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"))

Où le programme accepte les arguments de ligne de commande d'un fichier d'entrée et de sortie: python script.py <inputFileName> <outputFileName>

meinfr13nd
la source