Python - Сплит PDF на основе списка - PullRequest
0 голосов
/ 01 сентября 2018

Я пытаюсь разделить PDF на отдельные PDF-файлы на новые файлы на основе списка. Код следующий:

import sys
import os
from PyPDF2 import PdfFileReader, PdfFileWriter

def splitByStudent(file, group):
    inputPdf = PdfFileReader(open(file,"rb"))
    output = PdfFileWriter()
    path = os.path.dirname(os.path.abspath(file))
    os.chdir(path)
    numpages = int(inputPdf.numPages/len(group))
    for s in group:
        startpage = group.index(s) * numpages
        endpage = startpage + numpages
        newfile = s + ".pdf"
        for i in range(startpage, endpage):
            output.addPage(inputPdf.getPage(i))
            with open(newfile, "wb") as outputStream:
                output.write(outputStream)





BIASL1 = ["Student One", "Student Two"]

file = "filename.pdf"

splitByStudent(file, BIASL1)

Файл PDF с именем «filename» содержит 16 страниц, а имя первого созданного файла - «Student One.pdf», который должен иметь правильные 8 страниц. «Student Two.pdf», однако, содержит все 16 страниц оригинала. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 01 сентября 2018

Строка output = PdfFileWriter() должна быть внутри цикла for:

def splitByStudent(file, group):
    inputPdf = PdfFileReader(open(file,"rb"))
    path = os.path.dirname(os.path.abspath(file))
    os.chdir(path)
    numpages = int(inputPdf.numPages/len(group))
    for s in group:
        output = PdfFileWriter()
        startpage = group.index(s) * numpages
        endpage = startpage + numpages
        newfile = s + ".pdf"
        for i in range(startpage, endpage):
            output.addPage(inputPdf.getPage(i))
            with open(newfile, "wb") as outputStream:
                output.write(outputStream)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...