如何使用 PyPDF2 旋转页面?

How can I rotate a page with PyPDF2?

我正在使用 pyPDF2 编辑 PDF 文件。我设法生成了我想要的 PDF,但我还没有旋转一些页面。

我去 the documentation 找到了两种方法:rotateClockwiserotateCounterClockwise,虽然他们说参数是 int,我不能让它工作。 Python 说:

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

产生这个错误:

from PyPDF2 import PdfFileReader, PdfFileWriter


reader = PdfFileReader("example.pdf")

with open("out.pdf", "wb") as fh:
    writer = PdfFileWriter(fh)
    page = reader.getPage(0)
    page.rotateCounterClockwise(90)
    writer.addPage(page)

我找不到人解释这个过程。然而,Whosebug 中有一个 question,但答案很模糊。

尝试用以下内容替换您的三行代码:

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

我认为旋转必须对 getPage 调用进行,而不是在 "extracted" 页面上进行。

This was a known bug with the rotateClockwise function. This was fixed.

对于旧版本的 PyPDF2:只需使用此修复程序编辑 pdf.py 中的“_rotate”方法

def _rotate(self, angle):
    rotateObj = self.get("/Rotate", 0)
    currentAngle = rotateObj if isinstance(rotateObj, int) else rotateObj.getObject()
    self[NameObject("/Rotate")] = NumberObject(currentAngle + angle)