Skip to main content

Simple PDF generation for Python

Project description

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 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!

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 https://github.com/PyFPDF/fpdf2.git
cd fpdf2
python setup.py install

Features

  • 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
  • Arbitrary path drawing and basic SVG import
  • 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

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

🐛 👀

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.

Project details


Download files

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

Source Distribution

fpdf2-2.5.1.tar.gz (125.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fpdf2-2.5.1-py2.py3-none-any.whl (204.8 kB view details)

Uploaded Python 2Python 3

File details

Details for the file fpdf2-2.5.1.tar.gz.

File metadata

  • Download URL: fpdf2-2.5.1.tar.gz
  • Upload date:
  • Size: 125.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for fpdf2-2.5.1.tar.gz
Algorithm Hash digest
SHA256 602f6485ef0156ffa1b39bc83ee5ca00c88d32e5be8651e6ade1a69b825a677e
MD5 72258722244641af13759ff8ae36d249
BLAKE2b-256 046ae5c35734af2a283f2b5e1c209b1f92351895ebc4caf384211777db67a0bc

See more details on using hashes here.

File details

Details for the file fpdf2-2.5.1-py2.py3-none-any.whl.

File metadata

  • Download URL: fpdf2-2.5.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 204.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

File hashes

Hashes for fpdf2-2.5.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 59c54a8b2a9fed71cbf81d9e59d5921258cb01b25532db47ae4f01b4759e558b
MD5 35c603ff6c9b462235e31df112f0ca61
BLAKE2b-256 d5eeaec523fd02bcb8bd4b07179a0ed9923bc1e8bd8b1bea475db9eac09145eb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page