Поскольку от pyPdf отказались, я обновил его, чтобы использовать форк PyPDF2, который официально рекомендуется
This page is no longer updated. I've stopped maintaining pyPdf, and a company named Phaseit has forked the project and continued development and maintenance with my blessing as pyPdf2 ( http://knowah.github.com/PyPDF2/).
Кроме того, поскольку я хотел обернуть его в сценарий оболочки, я использовал аргументы строки команды -.
#!env python
import copy, sys
from PyPDF2 import PdfFileWriter, PdfFileReader
input = PdfFileReader(open(sys.argv[1], 'rb'))
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0, input.getNumPages())]:
(w, h) = p.mediaBox.upperLeft
p.mediaBox.lowerLeft = (w, h/2)
output.addPage(p)
output.write(open(sys.argv[2], 'wb'))
Да, ссылка Стивена Бостона поможет, просто чтобы дать больше информации.