Как повернуть страницу в pyPDF2?

Я редактирую файл PDF с помощью pyPDF2. Мне удалось создать PDF-файл, который я хочу, но я еще не повернул некоторые страницы.

Я зашел в документацию и нашел два метода: rotateClockwise и rotateCounterClockwise, и хотя они говорят, что параметр int, я не могу заставить его работать. Питон говорит:

TypeError: unsupported operand type(s) for +: 'IndirectObject' and 'int'

Чтобы произвести эту ошибку:

page = input1.getPage(i)
page.rotateCounterClockwise(90)
output.addPage(page)

Я не могу найти человека, объясняющего процедуру. Однако в stackoverflow есть вопрос, но ответ просто расплывчатый.

Заранее спасибо. Извините, если я что-то пропустил.


person Ignacio Tiraboschi    schedule 06.03.2017    source источник


Ответы (2)


Это известная ошибка в функции rotateClockwise. Имеется исправление, которое еще не было объединено. Просто отредактируйте метод _rotate в вашем pdf.py с помощью этого исправления.

def _rotate(self, angle):
    rotateObj = self.get("/Rotate", 0)
    currentAngle = rotateObj if isinstance(rotateObj, int) else rotateObj.getObject()
    self[NameObject("/Rotate")] = NumberObject(currentAngle + angle)
person Norsk    schedule 23.04.2017
comment
Похоже, теперь это исправлено. - person mountrix; 19.12.2019

Попробуйте заменить свои три строки на это:

output.addPage(input1.getPage(i).rotateCounterClockwise(90))

Я думаю, что поворот должен быть выполнен для вызова getPage, а не на «извлеченной» странице.

person James C. Taylor    schedule 09.03.2017