Girar páginas pdf: 90 grados para páginas pares y -90 grados para páginas impares

27

Me preguntaba en un archivo pdf, ¿cómo rotar las páginas pdf: 90 grados para páginas pares y -90 grados para páginas impares?

Por pdftk, todo lo que sé es rotar una página pdftk in.pdf cat 1W output out.pdfy rotar todas las páginas pdftk in.pdf cat 1-endW output out.pdf.

¡Gracias!

Tim
fuente
FYI: para las nuevas versiones de pdftk, la sintaxis es: es pdftk in.pdf cat 1-endwest output out.pdfdecir, en westlugar de Wo en southlugar de S...
colidyre

Respuestas:

11

Esto es fácil desde pdftk 1.44 que agregó la shuffleoperación que permite diferentes transformaciones en páginas pares e impares (entre otros usos).

Si tiene una versión anterior de pdftk, puede usar este script de Python con la biblioteca PyPdf . (Advertencia, escrita directamente en el 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- deja de ser malvado'
fuente
30

Con la pdftkversión 1.45 (6 de diciembre de 2012) o posterior, use:

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

Si tiene la pdftkversión 1.44gracias a Gilles por señalarlo! ), Puede usar:

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

Algunos casos de ejemplo similares se describen en man pdftk(al menos en versiones recientes).

rozcietrzewiacz
fuente
1

Como una mejora a la respuesta 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"))

Donde el programa acepta argumentos de línea de comando de un archivo de entrada y salida: python script.py <inputFileName> <outputFileName>

meinfr13nd
fuente