Girar páginas em pdf: 90 graus para páginas pares e -90 graus para páginas ímpares

27

Eu queria saber em um arquivo pdf, como girar páginas em PDF: 90 graus para páginas pares e -90 graus para páginas ímpares?

Pelo pdftk, tudo o que sei é girar uma página pdftk in.pdf cat 1W output out.pdfe girar todas as páginas pdftk in.pdf cat 1-endW output out.pdf.

Obrigado!

Tim
fonte
FYI: para versões mais recentes do pdftk, a sintaxe é:, pdftk in.pdf cat 1-endwest output out.pdfou seja, em westvez de Wou em southvez de S...
colidyre

Respostas:

11

Isso é fácil desde o pdftk 1.44, que adicionou a shuffleoperação, permitindo diferentes transformações em páginas ímpares e pares (entre outros usos).

Se você possui uma versão mais antiga do pdftk, pode usar esse script Python com a biblioteca PyPdf . (Aviso, digitado diretamente no navegador.)

#!/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- parar de ser mau'
fonte
30

Com a pdftkversão 1.45 (6 de dezembro de 2012) ou posterior, use:

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

Se você possui a pdftkversão 1.44 ( obrigado a Gilles por apontar isso! ), Você pode usar:

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

Alguns exemplos de casos semelhantes são descritos em man pdftk(pelo menos nas versões recentes).

rozcietrzewiacz
fonte
1

Como uma melhoria na resposta 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"))

Onde o programa aceita argumentos de linha de comando de um arquivo de entrada e saída: python script.py <inputFileName> <outputFileName>

meinfr13nd
fonte