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.

🆓 Open Source (BSD) 🐍 Python Library 📅 Since 2000

📄 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.xReportLab PDF Library - www.reportlab.com
ReportLab 3.xReportLab PDF Library - www.reportlab.com
ReportLab 2.xReportLab 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

Viewer

PDF Metadata Viewer

Free tool to view PDF metadata including Creator, Producer, and version information.

View PDF Metadata →
Converter

PDF Converter

Convert PDF files to Excel, Word, and other formats.

Convert PDF Files →

📝 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