last_page_orientation = last_page.rotate % 360 ~~~~~~~~~~~~~~~~~^~~~~ TypeError: unsupported operand type(s) for %: 'method' and 'int'
时间: 2023-07-24 08:14:15 浏览: 153
非常抱歉,我之前的代码有一个错误。`last_page.rotate` 是一个方法,不能直接与整数进行取模运算。我们需要使用 `last_page.get('/Rotate', 0)` 来获取页面的旋转角度。以下是更新后的代码:
```python
import os
from PyPDF2 import PdfFileReader, PdfFileWriter
def rotate_pdf_pages(filepath):
pdf_reader = PdfFileReader(open(filepath, 'rb'))
num_pages = pdf_reader.getNumPages()
# 判断最后两页的方向
last_page = pdf_reader.getPage(num_pages - 1)
second_last_page = pdf_reader.getPage(num_pages - 2)
last_page_orientation = last_page.get('/Rotate', 0) % 360
second_last_page_orientation = second_last_page.get('/Rotate', 0) % 360
if last_page_orientation in [0, 180] and second_last_page_orientation in [0, 180]:
# 最后两页为竖向,需要旋转
last_page.rotateClockwise(90)
second_last_page.rotateClockwise(90)
# 创建新的 PDF 写入器并保存旋转后的文件
output_pdf = PdfFileWriter()
for page_num in range(num_pages - 2):
page = pdf_reader.getPage(page_num)
output_pdf.addPage(page)
output_pdf.addPage(second_last_page)
output_pdf.addPage(last_page)
# 获取原文件名并在文件名前添加 'rotated_' 前缀
filename = os.path.basename(filepath)
new_filename = 'rotated_' + filename
with open(new_filename, 'wb') as output_file:
output_pdf.write(output_file)
print(f"成功旋转并保存文件: {new_filename}")
else:
print("最后两页不需要旋转")
# 遍历文件夹中的所有文件
folder_path = '/path/to/folder'
for filename in os.listdir(folder_path):
filepath = os.path.join(folder_path, filename)
if os.path.isfile(filepath) and filename.endswith('.pdf'):
rotate_pdf_pages(filepath)
```
请确保安装了 `PyPDF2` 库(通过 `pip install PyPDF2` 安装)。同时,将 `'/path/to/folder'` 替换为实际的文件夹路径。
阅读全文