簡體   English   中英

pyPDF2 PdfFileWriter output 返回損壞的文件

[英]pyPDF2 PdfFileWriter output returns a corrupted file

我是 python 的新手。我有以下代碼,它從 GUI 獲取用戶輸入的“x”和“a”變量。 目標是讓它在目錄中打開 each.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 為目錄中的每個單獨的 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()放入循環中來解決這個問題。 我偶然發現這是另一個循環問題的解決方案,並認為我會嘗試一下。 PdfFileWriter() 內部循環

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM