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

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

Developers:

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

🐛 💻

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

💻

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.

Related

  • 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...

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.4.6.tar.gz (87.3 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.4.6-py2.py3-none-any.whl (143.5 kB view details)

Uploaded Python 2Python 3

File details

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

File metadata

  • Download URL: fpdf2-2.4.6.tar.gz
  • Upload date:
  • Size: 87.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for fpdf2-2.4.6.tar.gz
Algorithm Hash digest
SHA256 1ac7fd9461b167b9c0a63212f2e438428bb7db50dfb248ea27c070a13b03ee68
MD5 0aebb247fca130d837df76b4b03d7be9
BLAKE2b-256 a335e5b846eeb3f95d0845eff5640a876478a3a9590c473bebb29aed2f76f898

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fpdf2-2.4.6-py2.py3-none-any.whl
  • Upload date:
  • Size: 143.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0

File hashes

Hashes for fpdf2-2.4.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 39b6cd244fdac6479dbd58aef262906fcf397e3ae603cdbf9b5f9df30dea089a
MD5 3fbe23f72d21ea3557bec4820abf4dad
BLAKE2b-256 cfcda400dd51b1a6b933f82042a0605d8b18a18f5d85939450d6506794938ae9

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