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)