/fpdf2

Simple PDF generation for Python

Primary LanguagePythonGNU Lesser General Public License v3.0LGPL-3.0

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

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

fpdf2

fpdf2 logo

fpdf2 is a PDF creation library for Python:

from fpdf import FPDF

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

It is a fork and the successor of PyFPDF (cf. history). Compared with other PDF libraries, fpdf2 is fast, versatile, easy to learn and to extend (example). It is also entirely writen in Python and only has a couple of dependencies: Pillow & defusedxml.

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, unreleased, development version straight from the development branch of this repository:

pip install git+https://github.com/PyFPDF/fpdf2.git@master

Features

Our 300+ reference PDF test files, generated by fpdf2, are validated using 3 different checkers:

QPDF logo PDF Checker logo VeraPDF logo

Documentation

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

Developement

Please check the dedicated documentation page.

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

🐛 💻

Yanone

💻

Leo Zhu

💻

Abishek Goda

💻

Arthur Moore

💻 ⚠️ 🐛

Bogdan Cuza

💻

Craig Hobbs

💻

xitrushiy

🐛 💻

José L. Redrejo Rodríguez

💻

Jürgen Gmach

💻

Larivact

💻

Leonel Câmara

💻

Mark Steadman

🐛 💻

Sergey

💻

Stan-C421

💻

Viraj Shah

💻

cornicis

💻

moe-25

💻 👀 🔬 🐛

Simone Bizzotto

💻

Boonyawe Sirimaha

🐛

T

💻 🎨

AubsUK

💬

Georg Mischler

🐛 💻 🎨 📖 🤔 💬 ⚠️

ping

🐛

Portfedh

📖

Tabarnhack

💻

Mridul Birla

🌍

digidigital

🌍

Xit

🌍

Alexander Burchenko

🌍

André Assunção

🌍

Quentin Brault

🌍

Paula Campigotto

🐛 💻 👀

bettman-latin

💻

oleksii-shyman

💻 🎨 🤔

lcomrade

📖 🐛 💻

pwt

🐛 💻

Martin Cerveny

🐛 💻

Spenhouet

🐛 👀

mtkumar123

💻

Davide Consalvo

💻

Bruno Santos

🐛

cgkoutzigiannis

⚠️

I Wayan Kurniawan

📖

Sven Eliasson

📖

gonzalobarbaran

💻

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)

Community, related tools, alternative libraries

More about those in the documentation.