-> come look at our good first issues
fpdf2
is a minimalist 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
.
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!
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 https://github.com/PyFPDF/fpdf2.git
cd fpdf2
python setup.py 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:
- Documentation Home
- Tutorial in several languages: English - Deutsch - español - हिंदी português - Русский - Italian - français
- Release notes: CHANGELOG.md
You can also have a look at the tests/
, they're great usage examples!
Please check the dedicated documentation page.
This library could only exist thanks to the dedication of many volunteers around the world:
This project follows the all-contributors specification (emoji key). Contributions of any kind welcome!
(screenshot from June 2021, click on the map above to access an up-to-date online version)
More about those in the documentation.