How py-pdf/pypdf works
pypdf is a Python PDF library. The principal workflow opens a PDF with PdfReader, exposes pages and document objects, then supports page-level inspection such as text extraction; PdfWriter creates or modifies PDFs for output. The README also documents merging, splitting, page transformations, metadata, annotations, and encryption. The tree and excerpts establish the main modules, but most reader/writer wiring is unsampled, so uncertain internal links are omitted.
Main entry points: _writer.py PdfWriter · _reader.py PdfReader · _text_extractor.py Text extraction · _encryption.py Encryption
Components 14
PDF reading
- PdfReader
pypdf/_reader.py - Page operations
pypdf/_page.py - Text extraction
pypdf/_text_extraction/_text_extractor.py - Layout extraction
pypdf/_text_extraction/_layout_mode/_text_state_manager.py
PDF editing
- PdfWriter
pypdf/_writer.py - Page selection
pypdf/pagerange.py
PDF representation
- PDF objects
pypdf/generic/_data_structures.py - Stream filters
pypdf/filters.py
Document features
- Encryption
pypdf/_encryption.py - Crypto providers
pypdf/_crypt_providers/_base.py - XMP metadata
pypdf/xmp.py - Annotations
pypdf/annotations/_base.py - PDF actions
pypdf/actions/_actions.py
Other components
- PDF user
Connections 18
- PDF user → PdfReader: opens PDF
- PdfReader → Page operations: exposes pages
- PDF user → Text extraction: requests text
- Page operations → Text extraction: extracts text
- Text extraction → Layout extraction: tracks text state
- PDF user → PdfWriter: creates or edits
- PDF user → Page selection: selects pages
- PdfReader → PDF objects: parses objects
- PdfWriter → PDF objects: serializes objects
- PdfReader → Stream filters: decodes streams
- PdfWriter → Stream filters: encodes streams
- PdfReader → Encryption: decrypts PDF
- PdfWriter → Encryption: encrypts PDF
- Encryption → Crypto providers: uses provider
- PdfReader → XMP metadata: reads metadata
- PdfWriter → XMP metadata: writes metadata
- PdfWriter → Annotations: adds annotations
- PdfWriter → PDF actions: adds actions