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()
放入循环中来解决这个问题。我偶然发现这是另一个循环问题的解决方案,并认为我会尝试一下。
我对 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()
放入循环中来解决这个问题。我偶然发现这是另一个循环问题的解决方案,并认为我会尝试一下。