如何重置输出文件?

时间:2015-07-13 10:35:14

标签: python pypdf

我想将一个长PDF文档分成许多部分,例如第1部分包括第3-14页,第2部分包括第15-19页,第3部分包括第20-27页,使用PyPDF2。

我编写了一个循环,它将原始PDF中的相关页面保存为每个部分的新文档。唯一的问题是第2部分仍然包括第1部分中的所有页面,第3部分仍包括第1部分和第1部分中的页面。 2。

我认为我不得不重置' output = 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

1 个答案:

答案 0 :(得分:-1)

这就是我尝试过的。我在我的pdf文件上试了一下,我有明确的页码。

from PyPDF2 import PdfFileWriter, PdfFileReader
pages={'part1':(3,14),'part2':(15,19),'part3':(20,27)}

for name,offset in pages.items():
    op = PdfFileWriter()
    ip = PdfFileReader(open("result.pdf", "rb"))
    for i in range(offset[0]-1,offset[1]):
        op.addPage(ip.getPage(i))
    with file(name+'pdf','wb') as f:
        op.write(f)

我很高兴知道我是否可以改进我的答案,因为我在我的系统上尝试过。它起作用了。