Enterprise PDF for Python
The enterprise PDF library
Python doesn't have.
Generate archival PDF/A, sign documents with PAdES, encrypt with AES-256 and produce accessible PDF/UA from plain Python. One memory-safe core, the same behavior as every other binding, running entirely on your servers: no per-document SaaS fees, no data leaving your network, no AGPL strings.
Install from PyPI. The wheel bundles the native core, nothing to compile.pip install rustpdfWhy Python teams pick rust-pdf
Python is everywhere documents are generated: invoices, reports,
statements, e-invoices for tax authorities. But the regulated-grade
building blocks (PDF/A, juridically-valid signatures, AES-256, PDF/UA)
are scattered across half-maintained libraries, fragile
HTML→PDF via headless Chrome, or per-document SaaS that
ships your sensitive data off-site.
rust-pdf gives you all of it through one pip install, with
a single offline license that unlocks the corporate features. The native
core releases the GIL on every call, so you can render thousands of
documents in parallel.
- Native, not a wrapper around Chrome: no headless browser, no gigabytes of RAM per worker.
- Runs on your servers: documents never leave your network and nothing phones home, ideal for LGPD/GDPR, fintech and health.
- No AGPL trap: a commercial per-application license, never the AGPL of iText or the per-server billing of Aspose.
- Deterministic output: the same input always produces the same bytes, so you can diff and audit it.
- Free to build with: everyday PDF generation is free forever; you only license the regulated-grade features.
Free to build with. Licensed when you ship.
Prototype and generate everyday PDFs for free. When you need archival, signatures, encryption or accessibility, one license unlocks them all in Python and every other binding.
Community free
- Pages & vector graphics
- Embedded/subset fonts, Unicode shaping
- Justified paragraphs & tables
- Images (JPEG/PNG/alpha/16-bit)
- Merge / split / rotate
- Text extraction & optimize
Corporate licensed
- PDF/A: 1b / 2b / 2a / 3b / 3a archival
- Digital signatures: PKCS#7, visible & multiple
- PAdES: B-B / B-LT / B-LTA + RFC 3161 timestamps
- Encryption: RC4 / AES-128 / AES-256 (R6)
- Accessibility: Tagged PDF / PDF/UA-1
- AcroForm: fields with generated appearances
Author a tagged, signed PDF/A in a few lines of Python
# pip install rustpdf
import rustpdf
with rustpdf.Document() as doc:
doc.pdfa(rustpdf.PdfaLevel.A2A).tagged().set_info(title="Q3 Report")
f = doc.add_font_file("Roboto-Regular.ttf")
doc.add_page()
doc.show_text(f, 26, 72, 760, "Annual report", heading_level=1)
doc.show_text(f, 11, 72, 720, "Olá, açúcar — café") # shaped, kerned, Unicode
data = doc.to_bytes()
# Encrypt with AES-256, or sign with PAdES — same offline license:
with rustpdf.EditableDoc.load(data) as ed:
ed.encrypt(owner="owner-secret", method=rustpdf.Encryption.AES256)
ed.save("secured.pdf")
The full Python reference (fonts, images, forms, manipulation, encryption and signatures) lives in the Python docs.
Start building in Python
pip install rustpdf and ship your first archival PDF today.
Free for everyday generation; license the corporate features when you go to
production.