ReportLab Creator & Producer
Understanding PDF metadata that shows ReportLab as the Creator or Producer — learn how this Python library creates PDF documents programmatically with full control over text, graphics, tables, and charts.
📄 About This PDF Metadata
When you examine a PDF file's properties and see ReportLab PDF Library - www.reportlab.com as the Producer or Creator, it indicates that the document was generated using ReportLab — the most popular Python library for creating PDF documents programmatically.
Sample PDF Metadata from ReportLab:
Title: Monthly Sales Report
Author: John Smith
Subject: Q4 2024 Sales Analysis
Creator: ReportLab PDF Library - www.reportlab.com
Producer: ReportLab PDF Library - www.reportlab.com
Creation Date: 2025-01-27 10:30:00
Keywords: sales, report, quarterly
By default, ReportLab sets both Creator and Producer to "ReportLab PDF Library - www.reportlab.com". These can be customized using the setCreator() method on the Canvas object, while the Producer is typically left as the default to identify the PDF generation engine.
PDF Creator
Set with canvas.setCreator() — defaults to "ReportLab PDF Library - www.reportlab.com". Can be customized to your application name.
PDF Producer
Defaults to ReportLab PDF Library - www.reportlab.com — identifies ReportLab as the PDF generation engine.
📚 What is ReportLab?
ReportLab is an open-source Python library for generating PDF documents and graphics programmatically. Founded in January 2000 by Andy Robinson and Robin Becker, it has become the primary package Python developers use for creating reports in PDF format. The company started as ReportLab Inc. in New York but moved operations to London in 2001, operating as ReportLab Europe Ltd.
Library Information
| Authors: | Andy Robinson, Robin Becker |
| Founded: | January 2000 |
| First Stable: | v0.94 (June 20, 2000) |
| Current Version: | 4.4.9 |
| Website: | reportlab.com |
Technical Details
| License: | BSD License |
| Language: | Python |
| Python Version: | 3.7+ |
| PyPI: | pip install reportlab |
| Documentation: | docs.reportlab.com |
Why ReportLab?
Direct PDF Generation
Creates PDF directly — no intermediate formats or external tools needed
Charts & Graphics
Built-in charting library for bar, line, pie charts and custom graphics
Platypus Layout
High-level page layout engine with flowables, frames, and templates
💡 ReportLab Toolkit vs ReportLab PLUS
The open-source ReportLab Toolkit provides comprehensive PDF generation capabilities. ReportLab PLUS is a commercial version adding features like RML (Report Markup Language), PDF parsing/reuse, and additional fonts. Most users find the free toolkit sufficient.
⚙️ How ReportLab Creates PDFs
ReportLab offers two approaches for PDF generation:
PDF Generation Approaches:
Low-Level: pdfgen Canvas
Direct control over page content — draw strings, shapes, images at exact coordinates. Like painting on a blank canvas with precise positioning.
High-Level: Platypus
"Page Layout and Typography Using Scripts" — uses flowables (paragraphs, tables, images) that automatically flow across pages.
ReportLab Architecture:
- pdfgen: Low-level canvas for direct PDF operations
- platypus: High-level document templates and flowables
- graphics: Charts, shapes, and vector graphics
- lib: Colors, units, page sizes, styles
- pdfbase: Core PDF structures, fonts, encoding
✨ Key Features
📝 Text & Typography
- Multiple fonts (Type 1, TrueType, CID)
- Unicode text support (UTF-8)
- Text positioning and alignment
- Paragraph styles and formatting
- Asian language support
🎨 Graphics & Shapes
- Lines, rectangles, circles, polygons
- Bezier curves and paths
- Fill colors, gradients, patterns
- Transformations (rotate, scale, skew)
- Clipping and masking
📊 Charts & Data Viz
- Bar charts (horizontal, vertical, stacked)
- Line charts and area charts
- Pie charts and doughnut charts
- Legends and axis labels
- Custom data-driven widgets
📋 Tables & Layout
- Complex table layouts with cell spans
- Table styles (borders, colors, alignment)
- Automatic page breaks
- Multi-column layouts
- Page templates with headers/footers
🖼️ Images & Barcodes
- JPEG, PNG, GIF images (via PIL/Pillow)
- Image scaling and positioning
- Image caching for reuse
- Transparency support
- 1D barcodes (Code 39, Code 128, EAN, UPC)
- 2D barcodes (QR Code, DataMatrix)
- CMYK color support
- PDF encryption and permissions
📤 How to Use ReportLab
ReportLab can be installed via pip and used as a Python library:
Installation:
# Install via pip
pip install reportlab
Basic Canvas Example:
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
# Create a canvas
c = canvas.Canvas("hello.pdf", pagesize=letter)
# Set metadata
c.setTitle("My Document")
c.setAuthor("John Smith")
c.setSubject("Sample Report")
c.setKeywords(["report", "sample"])
c.setCreator("My Application")
# Draw content
c.drawString(100, 750, "Hello, World!")
# Save the PDF
c.showPage()
c.save()
Platypus Example (High-Level):
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph
from reportlab.lib.styles import getSampleStyleSheet
# Create document
doc = SimpleDocTemplate("report.pdf", pagesize=letter)
styles = getSampleStyleSheet()
# Build content (flowables)
story = []
story.append(Paragraph("Report Title", styles['Heading1']))
story.append(Paragraph("This is a paragraph...", styles['Normal']))
# Generate PDF
doc.build(story)
🔍 Understanding PDF Metadata
ReportLab provides methods on the Canvas object to set PDF metadata:
| PDF Metadata | Canvas Method | Default Value |
|---|---|---|
| Title | setTitle(title) |
untitled |
| Author | setAuthor(author) |
anonymous |
| Subject | setSubject(subject) |
unspecified |
| Keywords | setKeywords(keywords) |
Empty |
| Creator | setCreator(creator) |
ReportLab PDF Library - www.reportlab.com |
| Producer | Internal (doc.info.producer) | ReportLab PDF Library - www.reportlab.com |
| Creation Date | Automatic | Current timestamp |
💡 Note on Metadata Methods
The setAuthor, setTitle, setSubject methods "have no visible effect" on the document itself — they only set metadata that appears in File > Document Info in PDF readers.
Default Metadata Values (from source code):
producer = "ReportLab PDF Library - www.reportlab.com"
creator = "ReportLab PDF Library - www.reportlab.com"
title = "untitled"
author = "anonymous"
subject = "unspecified"
keywords = ""
Sample Producer Values:
| ReportLab Version | Producer Value |
|---|---|
| ReportLab 4.x | ReportLab PDF Library - www.reportlab.com |
| ReportLab 3.x | ReportLab PDF Library - www.reportlab.com |
| ReportLab 2.x | ReportLab PDF Library - www.reportlab.com |
| Custom (modified) | canvas._doc.info.producer = "Your App" |
🛠️ Troubleshooting
Common issues when using ReportLab:
Fonts Not Displaying Correctly
Cause: Using a font name that isn't registered or available.
Solution: ReportLab includes 14 standard PDF fonts (Helvetica, Times-Roman, Courier, etc.). For TrueType fonts, register them with pdfmetrics.registerFont(TTFont('FontName', 'path/to/font.ttf')). Ensure font files are accessible at runtime.
Unicode/Non-ASCII Characters Not Showing
Cause: Standard fonts don't support all characters; encoding issues.
Solution: Use UTF-8 encoding and TrueType fonts that support your character set. For Asian languages, register appropriate CID fonts or use TrueType fonts with full Unicode support like DejaVu Sans or Noto fonts.
Images Not Appearing or Corrupted
Cause: Missing PIL/Pillow library, incorrect path, or unsupported format.
Solution: Install Pillow: pip install pillow. Use absolute paths or ensure working directory is correct. Supported formats include JPEG, PNG, GIF. Use drawImage() for efficiency when reusing images.
Text Positioning Issues
Cause: Origin is at bottom-left, Y-axis increases upward (unlike most GUI systems).
Solution: Remember that (0,0) is bottom-left corner. For letter size (8.5"×11"), top of page is around y=792 points. Use reportlab.lib.pagesizes for standard sizes. Consider Platypus for automatic layout.
Tables Breaking Incorrectly Across Pages
Cause: Long tables without proper splitting configuration.
Solution: Use Platypus Table with repeatRows parameter to repeat header rows. Enable long table optimizations in rl_config. Consider splitting data into smaller tables if automatic splitting causes issues.
❓ Frequently Asked Questions
When a PDF shows "ReportLab PDF Library - www.reportlab.com" as the Producer or Creator, it means the PDF was generated using ReportLab, the most popular open-source Python library for creating PDF documents programmatically. ReportLab has been the go-to solution for Python PDF generation since 2000.
Yes, the core ReportLab Toolkit is free and open source, released under the BSD license. You can use it in commercial projects without restrictions. ReportLab also offers ReportLab PLUS, a commercial version with additional features like RML (Report Markup Language), PDF parsing, and prepaid fonts.
ReportLab was founded in January 2000 by Andy Robinson and Robin Becker. The project started on SourceForge in December 1999. The first known stable version (0.94) was released on June 20, 2000, with version 1.0 arriving a month later. The company moved to London in 2001 and has been continuously developed for over 25 years.
pdfgen (Canvas) is the low-level API where you draw directly on pages at specific coordinates — full control but more manual work. Platypus ("Page Layout and Typography Using Scripts") is the high-level API using "flowables" (paragraphs, tables, images) that automatically flow across pages with templates and styles. Most applications benefit from Platypus for documents; use Canvas for precise graphics.
ReportLab is programmatic — you build PDFs with Python code, defining each element. WeasyPrint converts HTML/CSS to PDF. Choose ReportLab when you need precise control, charts, or complex layouts without HTML. Choose WeasyPrint when you have existing HTML templates or prefer CSS-based styling. Both are free and excellent for different use cases.
Yes, you can customize the Producer by accessing the internal document info object: canvas._doc.info.producer = "Your Application". The Creator field is more commonly customized using canvas.setCreator("Your App"). However, many developers leave Producer as default to indicate the PDF generation technology used.
ReportLab is used by major organizations worldwide including Fidelity Investments, Hilton Hotels, Hewlett Packard, NASA, Wikipedia, University College London, Oxfam, and many others. It's the standard Python solution for generating invoices, reports, tickets, financial documents, and any programmatic PDF needs.
🛠️ Related Tools
PDF Metadata Viewer
Free tool to view PDF metadata including Creator, Producer, and version information.
View PDF Metadata →📝 Summary: ReportLab PDF Metadata
- Authors: Andy Robinson, Robin Becker
- Founded: January 2000
- Producer shows ReportLab PDF Library
- License: BSD (free, open source)
- Company: ReportLab Europe Ltd
- Current version: 4.4.9
- Python 3.7+ required
- pdfgen for low-level control
- Platypus for document layout
- Charts & graphics built-in