NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #258 most downloaded on PyPI
A pure-python PDF library capable of splitting, merging, cropping, and transforming PDF files
Last release 13 days ago
16 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 56 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
12 years old
120 releases · first in 2014
Fix deprecation for Ressources when using old constants
One column per quarter.
Allow multiple charsets for NameObject.read_from_stream
Generating name objects (NameObject) without a leading slash is considered deprecated now. Previously, just a plain warning would be logged, leading t…
Generating name objects (NameObject) without a leading slash
is considered deprecated now. Previously, just a plain warning
would be logged, leading to possibly invalid PDF files. According
to our deprecation policy, this will log a DeprecationWarning
for now.
Use NumberObject for /Border elements of annotations
layout mode text extraction ZeroDivisionError
Remove deprecated XMP properties
Handle IndirectObject as image filter
Out-of-bounds issue in handle_tj (text extraction)
Cope with deflated images with CMYK Black Only
Mediabox expansion size when applying non-right angle rotation
Infinite recursion when using PdfWriter(clone_from=reader)
Avoid exceeding recursion depth when retrieving image mode
Invalid cm/tm in visitor functions
PDF size increases because of too high float writing precision
⚠️ The 'rename PdfWriter.create_viewer_preference to PdfWriter.create_viewer_preferences (#2190)' could be a breaking change for you, if you use it. A…
⚠️ The 'rename PdfWriter.create_viewer_preference to PdfWriter.create_viewer_preferences (#2190)' could be a breaking change for you, if you use it. As it was only introduced last week I'm confident enough that nobody will be affected though. Hence only the patch update.
Cope with indirect objects in filters and remove deprecated code
Cope with missing /I in articles
Relax typing_extensions version
Check version of crypt provider
Avoid endless recursion of reading damaged PDF file
optimize _decode_png_prediction
Add level parameter to compress_content_streams
level parameter to compress_content_streams (#2044)Accelerate image list keys generation
cryptography for encryption/decryption as a fallback for PyCryptodome (#2000)Add is_open in outlines in PdfReader and PdfWriter
Accept calRGB and calGray color_spaces
Prevent updating page contents after merging page (stamping/watermarking)
Add AES support for encrypting PDF files (#1918, #1935, #1936, #1938)
Cascaded filters in image objects
File expansion when updating with Page Contents
Add capability to replace image
Handle missing /Type entry in Page tree
Simplify metadata input (Document Information Dictionary)
Convert color space before saving
Mark code handling old parameters as deprecated
Warn about PDF encryption security
tox -e deps (#1750, #1752)Use Python's secrets module instead of random module
Extend PdfWriter.append() to PageObjects
⚠️ We discovered that compress_content_stream has to be applied to a page of the PdfWriter. It may not be applied to a page of the PdfReader!
⚠️ We discovered that compress_content_stream has to be applied to a page of the PdfWriter. It may not be applied to a page of the PdfReader!
Some attributes not copied in DictionaryObject._clone
Add reader.attachments public interface (#1611, #1661)
clone_document_from_reader() (#1613)Switch from trimbox to cropbox when merging pages
NOTICE: pypdf changed the way it represents numbers parsed from PDF files. pypdf<3.4.0 represented numbers as Decimal, pypdf>=3.4.0 represents them as
NOTICE: pypdf changed the way it represents numbers parsed from PDF files. pypdf<3.4.0 represented numbers as Decimal, pypdf>=3.4.0 represents them as floats. Several other PDF libraries to this, as well as many PDF viewers. We hope to fix issues with too high precision like this and get a speed boost. In case your PDF documents rely on more than 18 decimals of precision you should check if it still works as expected. To clarify: This does not affect the text shown in PDF documents. It affects numbers, e.g. when graphics are drawn on the PDF or very exact positions are used. Typically, 5 decimals should be enough.
Add page label support to PdfWriter
### Bug Fixes (BUG) - Accept hierarchical fields (#1529) ### Documentation (DOC) - Use google style docstrings (#1534) - Fix linked markdown documents
Help the specializing adaptive interpreter
Move PyPDF2 to pypdf (#1513). This now it's all lowercase, no number in the name. For installation and for import. PyPDF2 will no longer receive updat
Move PyPDF2 to pypdf (#1513). This now it's all lowercase, no number in the name. For installation and for import. PyPDF2 will no longer receive updates. The community should move back to its roots.
If you were still using pyPdf or PyPDF2 < 2.0.0, I recommend reading the migration guide: https://pypdf.readthedocs.io/en/latest/user/migration-1-to-2.html
pypdf==3.1.0 is only different from PyPDF2==3.0.0 in the package name.
Replacing "PyPDF2" by "pypdf" should be enough if you migrate from
PyPDF2==3.0.0 to pypdf==3.1.0.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →