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!


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)

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).


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>

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.