Как разделить PDF каждые 4 страницы, используя PyPDF2 в python? - PullRequest
0 голосов
/ 19 апреля 2020

Нашел в сети пример кода, который разбивает pdf на 2 страницы, но не может заменить его на 4 страницы, любые советы будут оценены

   #!/usr/bin/env python3

from PyPDF2 import PdfFileWriter, PdfFileReader
import glob, sys

pdfs = glob.glob("*.pdf")

for pdf in pdfs:
    inputFile = PdfFileReader(open(pdf, "rb"))
    for i in range(inputFile.numPages // 2):
        output = PdfFileWriter()
        output.addPage(inputFile.getPage(i * 2))

        if i * 2 + 1 < inputFile.numPages:
            output.addPage(inputFile.getPage(i * 2 + 1))

        newname = "-" + str(i) + ".pdf"
        outputStream = open(newname, "wb")
        output.write(outputStream)
        outputStream.close()

1 Ответ

0 голосов
/ 20 апреля 2020

Поняв, как код работает строка за строкой, я смог найти решение, хотя я верю, что его еще можно улучшить, но оно дало мне тот результат, который мне был нужен. В for l oop мне пришлось увеличить счетчик на 2, чтобы избежать повторения одних и тех же страниц в каждом файле после каждого l oop, и я добавил пару операторов addPage, и это сработало. Спасибо randomhacks.co.uk за то, что пришли с оригинальным кодом, который я указал в своем вопросе. Любые улучшения приветствуются.

#!/usr/bin/env python3

from PyPDF2 import PdfFileWriter, PdfFileReader
import glob, sys

pdfs = glob.glob("*.pdf")

for pdf in pdfs:
inputFile = PdfFileReader(open(pdf, "rb"))
for i in range(0, inputFile.numPages, 2):
    output = PdfFileWriter()
    output.addPage(inputFile.getPage(i * 2))
    output.addPage(inputFile.getPage(i * 2 + 1))
    output.addPage(inputFile.getPage(i * 2 + 2))

if i * 2 + 3  < inputFile.numPages:
    output.addPage(inputFile.getPage(i * 2 + 3))

newname = "pdf[:9]" +"-" + str(i) + ".pdf"

outputStream = open(newname, "wb")
output.write(outputStream)
outputStream.close()
...