我想將一個長的PDF文檔分成許多部分,例如:第1部分包括第3-14頁,第2部分包括第15-19頁,第3部分包括第20-27頁,使用PyPDF2。如何重置輸出文件?
我編寫了一個循環,將相關頁面從原始PDF中取出並保存爲每個部分的新文檔。唯一的問題是,部分2仍包括從部分1中的所有頁,並且第3部分仍然包括從部件的頁面1 & 2.
我假設我無論如何都必須「復位」輸出= PdfFileWriter(),但如果我把它放到while循環中,我得到一個很長的錯誤信息。
output = PdfFileWriter()
input = PdfFileReader(open("%s" % pdf, "rb"))
current_row = 2
i = sheet.cell(row = current_row, column = 4).value
j = sheet.cell(row = current_row, column = 5).value
org = sheet.cell(row = current_row, column = 1).value
n = sheet.cell(row = current_row, column = 7).value
while i > 0:
while i <= j:
p = i-1
output.addPage(input.getPage(p))
i += 1
print(i, p, j)
print org
outputStream = file("%s_%s_%s.pdf" % (mysheet, n, org), "wb")
output.write(outputStream)
outputStream.close()
current_row += 1
i = sheet.cell(row = current_row, column = 4).value
j = sheet.cell(row = current_row, column = 5).value
org = sheet.cell(row = current_row, column = 1).value
n = sheet.cell(row = current_row, column = 7).value
重置'output = PdfFileWriter()'確實是解決方案,你得到了什麼錯誤? – franciscod
關閉'outputStream'後,只需將一個新的'PdfFileWriter()'分配給'output'。 – martineau
包括這一行解決了這個問題 - 謝謝!該錯誤消息實際上是由於PDF被加密。這裏的問題是我的代碼生成的PDF都是從原始文檔的第1頁開始的。重置輸出= PdfFileWriter()負責。 –