Python - 使用 PyPDF2 批量旋转 pdf

fcr*_*fcr 4 python pdf pypdf2

我一直在编写代码来批量旋转文件夹内的 pdf 文件,但我找不到迭代和更改旋转文件的目标文件夹的方法,我的目的是将新文件保存在另一个文件夹,谢谢

import PyPDF2
from os import listdir

di = "C:\z_PruebPy\pdf"

archs = []

listarch = []

loc = r"C:/z_PruebPy/pdf/"

for x in listdir(di):
    archs.append(loc+x)

for arch in listarch:
    pdf_in = open(arch, 'rb')
    pdf_reader = PyPDF2.PdfFileReader(pdf_in)
    pdf_writer = PyPDF2.PdfFileWriter()

    for pagenum in range(pdf_reader.numPages):
        page = pdf_reader.getPage(pagenum)
        page.rotateClockwise(270)
        pdf_writer.addPage(page)

    pdf_out = open(arch, 'wb') #????????
    pdf_writer.write(pdf_out)
    pdf_out.close()
    pdf_in.close()
Run Code Online (Sandbox Code Playgroud)

Loï*_*oïc 8

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

所以这应该有效,假设您创建了输出文件夹:

from PyPDF2 import PdfFileReader, PdfFileWriter
from os import listdir

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
    pdf_in = open(input_dir + x, 'rb')
    pdf_reader = PdfFileReader(pdf_in)
    pdf_writer = PdfFileWriter()
    for pagenum in range(pdf_reader.numPages):
        page = pdf_reader.getPage(pagenum)
        page.rotateClockwise(270)
        pdf_writer.addPage(page)
    pdf_out = open(output_dir + x, 'wb')
    pdf_writer.write(pdf_out)
    pdf_out.close()
    pdf_in.close()
Run Code Online (Sandbox Code Playgroud)