Simple & fast PDF generation for Python
Project description
→ come look at our good first issues
fpdf2
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(text="hello world")
pdf.output("hello_world.pdf")
Go try it now online in a Jupyter notebook: or
Compared with other PDF libraries, fpdf2
is fast, versatile, easy to learn and to extend (example).
It is also entirely written in Python and has very few dependencies:
Pillow, defusedxml, & fontTools. It is a fork and the successor of PyFPDF
(cf. history).
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/py-pdf/fpdf2.git@master
Features
- Python 3.8+ support
- Unicode (UTF-8) TrueType font subset embedding
- Internal / external links
- Embedding images, including transparency and alpha channel
- Arbitrary path drawing and basic SVG import
- Embedding barcodes, charts & graphs, emojis, symbols & dingbats
- Tables and also cell / multi-cell / plaintext writing, with automatic page breaks, line break and text justification
- Choice of measurement unit, page format & margins. Optional page header and footer
- Basic conversion from HTML to PDF
- A templating system to render PDFs in batches
- Images & links alternative descriptions, for accessibility
- Table of contents & document outline
- Document encryption & document signing
- Annotations, including text highlights, and file attachments
- Presentation mode with control over page display duration & transitions
- Optional basic Markdown-like styling:
**bold**, __italics__
- Can render mathematical equations & charts
- Usage examples with Django, Flask, FastAPI, streamlit, AWS lambdas... : Usage in web APIs
- more than 1300 unit tests running under Linux & Windows, with
qpdf
-based PDF diffing, timing & memory usage checks, and a high code coverage
Our 350+ reference PDF test files, generated by fpdf2
, are validated using 3 different checkers:
Please show the value
Choosing a project dependency can be difficult. We need to ensure stability and maintainability of our projects. Surveys show that GitHub stars count play an important factor when assessing library quality.
⭐ Please give this repository a star. It takes seconds and will help your fellow developers! ⭐
Please share with the community
This library relies on community interactions. Please consider sharing a post about fpdf2
and the value it provides 😊
Documentation
- Documentation Home
- Tutorial in several languages: English - Deutsch - español - हिंदी - português - Русский - Italian - français - Ελληνικά - עברית - 简体中文 - বাংলা - ភាសាខ្មែរ - 日本語 - Dutch - Polski - Türkçe - Indonesian
- Release notes: CHANGELOG.md
- A series of blog posts: fpdf2 tag @ ludochaordic
You can also have a look at the tests/
, they're great usage examples!
Development
Please check the dedicated documentation page.
Contributors ✨
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 January 2023, 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fpdf2-2.8.2.tar.gz
.
File metadata
- Download URL: fpdf2-2.8.2.tar.gz
- Upload date:
- Size: 266.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3a2c6699c39b23b786fc6ad9fc3de5432e59f6b6383bb9ab4ce1f994a5f3e762 |
|
MD5 | ff01a954528f583a6609dbc1f1c0283c |
|
BLAKE2b-256 | b0540e86f986e81abad9e6b348f5176048a2aa046920d46292c42a581064d93e |
Provenance
The following attestation bundles were made for fpdf2-2.8.2.tar.gz
:
Publisher:
continuous-integration-workflow.yml
on py-pdf/fpdf2
-
Statement:
- Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
fpdf2-2.8.2.tar.gz
- Subject digest:
3a2c6699c39b23b786fc6ad9fc3de5432e59f6b6383bb9ab4ce1f994a5f3e762
- Sigstore transparency entry: 155582102
- Sigstore integration time:
- Permalink:
py-pdf/fpdf2@b9cfbb6d8ca1eb034e826fd358194e899a1daf28
- Branch / Tag:
refs/heads/master
- Owner: https://github.com/py-pdf
- Access:
public
- Token Issuer:
https://token.actions.githubusercontent.com
- Runner Environment:
github-hosted
- Publication workflow:
continuous-integration-workflow.yml@b9cfbb6d8ca1eb034e826fd358194e899a1daf28
- Trigger Event:
push
- Statement type:
File details
Details for the file fpdf2-2.8.2-py2.py3-none-any.whl
.
File metadata
- Download URL: fpdf2-2.8.2-py2.py3-none-any.whl
- Upload date:
- Size: 236.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 951e26290d0fc6ab4582b0d0bbacb64716fecef0f2b9223f9178c90ec4321af7 |
|
MD5 | 0b91dfbebd23a01f18b6dd1465776fa1 |
|
BLAKE2b-256 | eb467aae9cb2584dcac217e662ab6d4670ef4e447b73d624b6210f7155322411 |
Provenance
The following attestation bundles were made for fpdf2-2.8.2-py2.py3-none-any.whl
:
Publisher:
continuous-integration-workflow.yml
on py-pdf/fpdf2
-
Statement:
- Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
fpdf2-2.8.2-py2.py3-none-any.whl
- Subject digest:
951e26290d0fc6ab4582b0d0bbacb64716fecef0f2b9223f9178c90ec4321af7
- Sigstore transparency entry: 155582104
- Sigstore integration time:
- Permalink:
py-pdf/fpdf2@b9cfbb6d8ca1eb034e826fd358194e899a1daf28
- Branch / Tag:
refs/heads/master
- Owner: https://github.com/py-pdf
- Access:
public
- Token Issuer:
https://token.actions.githubusercontent.com
- Runner Environment:
github-hosted
- Publication workflow:
continuous-integration-workflow.yml@b9cfbb6d8ca1eb034e826fd358194e899a1daf28
- Trigger Event:
push
- Statement type: