The ReportLab Toolkit (Enhanced Fork)
Project description
reportlab-enhanced
An enhanced fork of ReportLab — the open-source Python library for generating PDF documents, charts, and vector graphics.
Features
- Generate rich PDF documents with text, images, tables, and charts
- High-level layout engine (Platypus) with flowables, frames, and page templates
- Low-level Canvas API for direct PDF drawing operations
- Charts and graphics with SVG/PS/bitmap rendering support
- TrueType and Type1 font handling
- Enhanced: TrueType font fallback support for missing glyphs
- Pure Python (no C extensions required since v4.0)
- Python >= 3.9
Enhancements over upstream
This fork builds on ReportLab 4.x with additional features:
- TTFont Fallback: Automatic font fallback for missing glyphs in TrueType fonts, enabled by default
- Active development with improvements to font handling and CJK support
See CHANGES.md for the full changelog.
Installation
pip install reportlab-enhanced
For development:
git clone https://github.com/selcarpa/reportlab_enhanced.git
cd reportlab-enhanced
pip install -e .
Optional dependencies
pip install reportlab-enhanced[accel] # rl_accel acceleration
pip install reportlab-enhanced[renderpm] # rl_renderPM bitmap rendering
pip install reportlab-enhanced[pycairo] # Cairo-based rendering
pip install reportlab-enhanced[bidi] # Bidirectional text support
pip install reportlab-enhanced[shaping] # HarfBuzz text shaping
Quick Start
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf", pagesize=A4)
c.drawString(100, 750, "Hello, reportlab-enhanced!")
c.save()
For the high-level Platypus API:
from reportlab.lib.pagesizes import A4
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
doc = SimpleDocTemplate("doc.pdf", pagesize=A4)
styles = getSampleStyleSheet()
story = [Paragraph("Hello, reportlab-enhanced!", styles["Title"])]
doc.build(story)
Documentation
The original ReportLab documentation is available at docs.reportlab.com.
To build the included PDF manuals:
cd docs && python genAll.py
This generates three PDF references in the docs/ directory.
Development
This project extensively uses vibe coding with Claude Code (Anthropic Claude) as a development partner for code generation, refactoring, and documentation.
Running tests
python setup.py tests-preinstall
# or
cd tests && python runAll.py
Contributing
Contributions are welcome! Please open an issue or pull request on GitHub.
Acknowledgements
This project is a fork of ReportLab by ReportLab Inc., originally created by Andy Robinson, Robin Becker, and the ReportLab team. The upstream project has been developed since 2000 and provides the foundation for this enhanced version.
License
BSD License. See LICENSE for details.
- Copyright (c) 2025-2026, selcarpa
- Copyright (c) 2000-2024, ReportLab Inc.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reportlab_enhanced-0.1.1.tar.gz.
File metadata
- Download URL: reportlab_enhanced-0.1.1.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7349676460a8f6d1016d3fa2c42e4ab77e258eac85c547f1173f1229005ac16
|
|
| MD5 |
1b5ad4a94642b57794a8f6c399c17477
|
|
| BLAKE2b-256 |
95bf2f3a7fce9ef3a90634fefc8a202e7b717fd6450bdee924fc7067a433748a
|
Provenance
The following attestation bundles were made for reportlab_enhanced-0.1.1.tar.gz:
Publisher:
release.yml on selcarpa/reportlab_enhanced
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reportlab_enhanced-0.1.1.tar.gz -
Subject digest:
a7349676460a8f6d1016d3fa2c42e4ab77e258eac85c547f1173f1229005ac16 - Sigstore transparency entry: 1760730074
- Sigstore integration time:
-
Permalink:
selcarpa/reportlab_enhanced@1a93b499a666cd68a857b059ac40700060ce724b -
Branch / Tag:
refs/tags/0.1.1-release - Owner: https://github.com/selcarpa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1a93b499a666cd68a857b059ac40700060ce724b -
Trigger Event:
push
-
Statement type:
File details
Details for the file reportlab_enhanced-0.1.1-py3-none-any.whl.
File metadata
- Download URL: reportlab_enhanced-0.1.1-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40778874657cb94552102f902f68e53280a160a74cde1303afae704366f0fbc6
|
|
| MD5 |
27eb6b8b50d8857d2f1955ee5a0cfafd
|
|
| BLAKE2b-256 |
9cfe71d408ecd7cd684e39e3314560b123b138f060c484af0b49986206cfa2b4
|
Provenance
The following attestation bundles were made for reportlab_enhanced-0.1.1-py3-none-any.whl:
Publisher:
release.yml on selcarpa/reportlab_enhanced
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reportlab_enhanced-0.1.1-py3-none-any.whl -
Subject digest:
40778874657cb94552102f902f68e53280a160a74cde1303afae704366f0fbc6 - Sigstore transparency entry: 1760730226
- Sigstore integration time:
-
Permalink:
selcarpa/reportlab_enhanced@1a93b499a666cd68a857b059ac40700060ce724b -
Branch / Tag:
refs/tags/0.1.1-release - Owner: https://github.com/selcarpa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1a93b499a666cd68a857b059ac40700060ce724b -
Trigger Event:
push
-
Statement type: