1 min read

Python pypdf Module

pypdf is a free and open-source pure-python PDF library capable of splitting, merging, cropping, and transforming the pages of PDF files. It can also add custom data, viewing options, and passwords to PDF files.

Installation

pip install pypdf

Reading PDFs

You can extract text and metadata from existing PDFs.

from pypdf import PdfReader

reader = PdfReader("example.pdf")

# Number of pages
print(len(reader.pages))

# Extract text from the first page
page = reader.pages[0]
text = page.extract_text()
print(text)

Merging PDFs

A common use case is combining multiple PDFs into one.

from pypdf import PdfWriter

merger = PdfWriter()

pdfs = ["file1.pdf", "file2.pdf", "file3.pdf"]

for pdf in pdfs:
    merger.append(pdf)

merger.write("merged-result.pdf")
merger.close()

Splitting PDFs

You can save individual pages as separate files.

from pypdf import PdfReader, PdfWriter

reader = PdfReader("merged-result.pdf")

for i, page in enumerate(reader.pages):
    writer = PdfWriter()
    writer.add_page(page)

    with open(f"page_{i}.pdf", "wb") as output_pdf:
        writer.write(output_pdf)

Rotating Pages

from pypdf import PdfReader, PdfWriter

reader = PdfReader("original.pdf")
writer = PdfWriter()

# Rotate the first page 90 degrees clockwise
writer.add_page(reader.pages[0].rotate(90))

# Add the rest unchanged
for page in reader.pages[1:]:
    writer.add_page(page)

with open("rotated.pdf", "wb") as f:
    writer.write(f)

programming/python/python