pyPDF2 PdfFileWriter 输出 returns 损坏的文件

pyPDF2 PdfFileWriter output returns a corrupted file

我对 python 很陌生。我有以下代码,它从 GUI 中为“x”和“a”变量获取用户输入。目标是让它打开目录中的每个 .pdf 文件执行修改,并自行保存。目录中的每个 pdf 都是单页 pdf。好像可以用,但是新保存的文件损坏了,打不开

Seal_pdf = PdfFileReader(open(state, "rb"), strict=False)
input_pdf = glob.glob(os.path.join(x, '*.pdf'))
output_pdf = PdfFileWriter()
page_count = len(fnmatch.filter(os.listdir(x), '*.pdf'))
i = 0

if a == "11x17":
    for file in input_pdf:
        sg.OneLineProgressMeter('My Meter', i, page_count, 'And now we Wait.....')
        PageObj = PyPDF2.PdfFileReader(open(file, "rb"), strict=False).getPage(0)
        PageObj.scaleTo(11*72, 17*72)
        PageObj.mergePage(Seal_pdf.getPage(0))
        output_filename = f"{file}"
        f = open(output_filename, "wb+")
        output_pdf.write(f)
        i = i + 1

output_pdf.addPage(PageObj) 添加到循环中会生成未损坏的文件,但是,这会导致将每个连续的 .pdf 添加到前一个 .pdf。 (例如,“pdf 1”只是“pdf 1”,“pdf2 现在是两页”pdf1”和“pdf2”合并等)。我还尝试将倒数第二行更改为

with open(output_filename, "wb+") as f:
    output_pdf.write(f)

运气不好。我无法弄清楚我缺少什么让 PdfFileWriter return 目录中每个单独的 pdf 的单个页面,未损坏的文件。

if a == "11x17":
    for file in input_pdf:
        sg.OneLineProgressMeter('My Meter', i, page_count, 'And now we Wait.....')
        PageObj = PyPDF2.PdfFileReader(open(file, "rb"), strict=False).getPage(0)
        PageObj.scaleTo(11*72, 17*72)
        PageObj.mergePage(Seal_pdf.getPage(0))
        output_pdf.addPage(PageObj)
        output_filename = f"{file}"
        f = open(output_filename, "wb+")
        output_pdf.write(f)
        i = i + 1

我最终能够通过简单地将 output_pdf = PdfFileWriter() 放入循环中来解决这个问题。我偶然发现这是另一个循环问题的解决方案,并认为我会尝试一下。