【问题标题】:Python - Batch rotate pdf with PyPDF2Python - 使用 PyPDF2 批量旋转 pdf
【发布时间】:2017-10-24 23:20:22
【问题描述】:

我一直在编写代码来批量旋转文件夹内的 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()

【问题讨论】:

    标签: python pdf pypdf2


    【解决方案1】:

    你必须给 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()
    

    【讨论】:

    • 谢谢!!,正是我想要的
    猜你喜欢
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2013-12-18
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多