split a multi-page pdf file into multiple pdf files with python? split a multi-page pdf file into multiple pdf files with python? python python

split a multi-page pdf file into multiple pdf files with python?


from PyPDF2 import PdfFileWriter, PdfFileReaderinputpdf = PdfFileReader(open("document.pdf", "rb"))for i in range(inputpdf.numPages):    output = PdfFileWriter()    output.addPage(inputpdf.getPage(i))    with open("document-page%s.pdf" % i, "wb") as outputStream:        output.write(outputStream)

etc.


I missed here a solution where you split the PDF to two parts consisting of all pages so I append my solution if somebody was looking for the same:

from PyPDF2 import PdfFileWriter, PdfFileReaderdef split_pdf_to_two(filename,page_number):    pdf_reader = PdfFileReader(open(filename, "rb"))    try:        assert page_number < pdf_reader.numPages        pdf_writer1 = PdfFileWriter()        pdf_writer2 = PdfFileWriter()        for page in range(page_number):            pdf_writer1.addPage(pdf_reader.getPage(page))        for page in range(page_number,pdf_reader.getNumPages()):            pdf_writer2.addPage(pdf_reader.getPage(page))        with open("part1.pdf", 'wb') as file1:            pdf_writer1.write(file1)        with open("part2.pdf", 'wb') as file2:            pdf_writer2.write(file2)    except AssertionError as e:        print("Error: The PDF you are cutting has less pages than you want to cut!")


The PyPDF2 package gives you the ability to split up a single PDF into multiple ones.

import osfrom PyPDF2 import PdfFileReader, PdfFileWriterpdf = PdfFileReader(path)for page in range(pdf.getNumPages()):    pdf_writer = PdfFileWriter()    pdf_writer.addPage(pdf.getPage(page))    output_filename = '{}_page_{}.pdf'.format(fname, page+1)    with open(output_filename, 'wb') as out:        pdf_writer.write(out)    print('Created: {}'.format(output_filename))

Source: https://www.blog.pythonlibrary.org/2018/04/11/splitting-and-merging-pdfs-with-python/