Skip to main content

Simple PDF generation for Python

Project description

build status Pypi latest version License: LGPL v3 codecov Downloads per month

Discussions Pull Requests Welcome first-timers-only Friendly -> come look at our good first issues


fpdf2 logo

fpdf2 is a minimalist PDF creation library for Python:

from fpdf import FPDF

pdf = FPDF()
pdf.set_font('helvetica', size=12)
pdf.cell(txt="hello world")

It is a fork and the successor of PyFPDF. Compared with other PDF libraries, fpdf2 is simple, small and versatile, with advanced capabilities, and is easy to learn and extend. It is also entirely writen in Python (no C is involved), and has only one dependency so far, to handle images: Pillow.

Development status: this project is mature and actively maintained.

We are looking for contributing developers: if you want to get involved but don't know how, or would like to volunteer helping maintain this lib, open a discussion!

Installation Instructions:

pip install fpdf2

To get the latest development version:

# Linux only:
sudo apt-get install libjpeg-dev libpython-dev zlib1g-dev

# Linux and Windows:
git clone
cd fpdf2
python install


  • Python 3.6+ support
  • Unicode (UTF-8) TrueType font subset embedding
  • Internal/External Links
  • PNG, GIF and JPG support (including transparency and alpha channel)
  • Shape, Line Drawing
  • Generate Code 39 & Interleaved 2 of 5 barcodes
  • Cell / multi-cell / plaintext writing, automatic page breaks
  • Basic conversion from HTML to PDF
  • A templating system to render PDFs in batchs
  • Images & links alternative descriptions
  • Table of contents & document outline
  • Optional basic Markdown-like styling: **bold**, __italics__, --underlined--
  • Clean error handling through exceptions
  • Unit tests with qpdf-based PDF diffing and a high code coverage

We validate all our PDF samples using 3 different checkers:

QPDF logo PDF Checker logo VeraPDF logo


You can also have a look at the tests/, they're great usage examples!


Please check the documentation page dedicated to development.

Contributors ✨

This library could only exist thanks to the dedication of many volunteers around the world:

Mariano Reingart


David Ankin

🐛 💻 📖 🚧 💬 👀 ⚠️

Alex Pavlovich

🐛 💻 📖 💬 👀 ⚠️

Lucas Cimon

📝 💻 📖 🚇 🚧 💬

Miroslav Šedivý

💻 ⚠️

Florian Bernhart

💻 ⚠️

Edwood Ocasio

💻 ⚠️

Marcelo Duarte


Roman Kharin

💻 🤔

Christopher Frost

🐛 💻

Michael Kalbermatten

🐛 💻



Leo Zhu


Abishek Goda


Arthur Moore

💻 ⚠️ 🐛

Bogdan Cuza


Craig Hobbs



🐛 💻

José L. Redrejo Rodríguez


Jürgen Gmach




Leonel Câmara


Mark Steadman

🐛 💻





Viraj Shah





💻 👀 🔬 🐛

Simone Bizzotto


Boonyawe Sirimaha



💻 🎨



Georg Mischler

💻 🐛 📖 🤔 💬







Mridul Birla






Alexander Burchenko


André Assunção


Quentin Brault


Paula Campigotto

🐛 💻 👀



This project follows the all-contributors specification (emoji key). Contributions of any kind welcome!

Contributors map

(screenshot from June 2021, click on the map above to access an up-to-date online version)

Other libraries

For alternatives, check out this detailed list of PDF-related Python libs by Patrick Maupin. There is also pikepdf, PyFPDF2 & WeasyPrint.


  • Create PDFs with Python : a series of tutorial videos by bvalgard
  • digidigital/Extensions-and-Scripts-for-pyFPDF-fpdf2 : scripts ported from PHP to add transpareny to elements of the page or part of an image, allow to write circular text, draw pie charts and bar diagrams, embed JavaScript, draw rectangles with rounded corners, draw a star shape, restrict the rendering of some elements to screen or printout, paint linear / radial / multi-color gradients gradients, add stamps & watermarks, write sheared text...

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for fpdf2, version 2.4.6
Filename, size File type Python version Upload date Hashes
Filename, size fpdf2-2.4.6.tar.gz (87.3 kB) File type Source Python version None Upload date Hashes View
Filename, size fpdf2-2.4.6-py2.py3-none-any.whl (143.5 kB) File type Wheel Python version py2.py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page