Python 3 - Splitting a PDF file

Viewed 6710

I'm hoping to extract pages 30 to 34 from my PDF file and make it into a single doc. However, my code seems to only get me page 34.

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

path = 'file_path'

pdf = PdfFileReader(path, "rb")

for page in range(29, 33):
    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdf.getPage(page))

output_fname = "Output.pdf"

with open(output_fname, 'wb') as out:
    pdf_writer.write(out)

print ("PDF file has been split")

Okay I've noticed if I changed the middle part of the code to add the pages manually it works. But I do need a less clunky way of doing it for extracting a large number of pages.

output.addPage(pdf.getPage(29))
output.addPage(pdf.getPage(30))
2 Answers

Nvm I realise my error. Should've just excluded the pdf_writer = PdfFileWriter() from the loop statement.

import os
from PyPDF2 import PdfFileReader, PdfFileWriter

path = 'file_path'
pdf = PdfFileReader(path, "rb")

pdf_writer = PdfFileWriter()

for page in range(29, 33):
    pdf_writer.addPage(pdf.getPage(page))

output_fname = "Output.pdf"

with open(output_fname, 'wb') as out:
    pdf_writer.write(out)

print ("PDF file has been split")
import os
from PyPDF2 import PdfFileReader, PdfFileWriter

path = r"C:\Users\scriptdocuchm_ktm.pdf"

pdf = PdfFileReader(path, "rb")
pdflist = []
pdf_writer = PdfFileWriter()

for page in range(66,70):
    pdflist.append(page)
    pdf_writer.addPage(pdf.getPage(page))

print(pdflist)

output_filename = "split.pdf"

with open(output_filename, 'wb') as out:
    pdf_writer.write(out)

print ("pdf file has been split")
Related