使用 PyPDF2 批量旋转 PDF 文件

Batch rotate PDF files with PyPDF2

我一直在编写一个代码来批量旋转文件夹内的 PDF 文件,但我找不到一种方法来迭代和更改旋转文件的目标文件夹。

我的目的是将新文件以相同的名称保存在另一个文件夹中。

from os import listdir

from PyPDF2 import PdfReader, PdfWriter

# Collect files
root = "C:\z_PruebPy\pdf"
archs = []
for x in listdir(root):
    archs.append(root + x)

# Batch rotate
for arch in archs:
    pdf_in = open(arch, "rb")
    reader = PdfReader(pdf_in)
    writer = PdfWriter()

    for page in reader.pages:
        page.rotate_clockwise(270)
        writer.add_page(page)

    with open(arch, "wb") as pdf_out:  # ????????
        writer.write(pdf_out)
    pdf_in.close()

您必须为 PdfFileWriter 提供指向新位置的文件指针。 此外,您不需要创建列表并迭代列表,只需迭代 os.listdir 结果。 最后你有未使用的变量,比如 loc。 我稍微清理了你的代码。

假设您创建了输出文件夹,这应该可行:

from os import listdir

from PyPDF2 import PdfReader, PdfWriter

input_dir = "C:\z_PruebPy\pdf\"
output_dir = "C:\z_PruebPy\output_pdf\"

for x in listdir(input_dir):
    if not x.endswith(".pdf"):
        continue
    reader = PdfReader(input_dir + x)
    writer = PdfWriter()
    for page in reader.pages:
        page.rotate_clockwise(270)
        writer.add_page(page)
    with open(output_dir + x, "wb") as pdf_out:
        writer.write(pdf_out)