What's New in ReportLab PLUS 2.5

What's new in Version 2.5 - October 2010. This covers both our open source and commercial software, which are always released together.

ReportLab PLUS

ReportLab PLUS is our combined distribution containing RML, PageCatcher, Diagra and our other supporting libraries. It delivers an importable Python package called 'rlextra' which works with the open source 'reportlab' package, whose changes are covered below.

Report Markup Language (RML)

  • Support for colour separated PDF output and other optimisations and features for high-quality printing, including enforcement of colour models for CMYK, RGB, and "spot colours"
  • Long table optimisations are now turned on by default. Previously, documents with very long tables spanning many pages could take a long time to create because we considered the whole table to work out row and column sizes. A patch was submitted some time ago to fix this controlled by a flag in the rl_config file, but this was set 'off' for compatibility. Users are often not aware of this and we haven't found any real-world cases where the new layout technique works badly, so we are turning this behaviour on.
  • New support for QR barcodes - try our demo!
  • New code samples, demonstrating easy PDF generation using RML from within the most popular web application frameworks, including Django, PHP, Ruby on Rails, Microsoft .Net, and TurboGears. Helps non-Python programmers get to grips with creating PDF from their languages and frameworks of choice.
  • New code sample showing how to create dynamic PDF output from database content. This uses a small MySQL dataset but should make sense and be easily portable to other database engines


  • Improvements to stability under Linux as well as Apple OSX and Windows
  • Chart element properties have been simplified by hiding obscure advanced items by default.
  • A large number of new properties have been added to the axes,charts and legends widgets, giving you even finer control over chart appearance. See below for more details

Packaging and deployment

  • Tested with easy_install, pip and buildout on all main platforms. Since this is closed source code, you will need to place your 'rlextra' files in a private repository or pass the distro name on the command line, or contact us for basic auth access.

Open Source - ReportLab Toolkit

Many new features have been added and numerous bugs have been fixed. A scan of the RML features above will give you an idea as most things have their counterpart in the open source package. Thanks to everybody who has contributed to the open-source toolkit in the run-up to the 2.5 release, whether by reporting bugs, sending patches, or contributing to the reportlab-users mailing list. Major contributors are credited in the user documentation.



  • reportlab.graphics.charts.axes

    • ValueAxis
      • avoidBoundSpace - Space to allow above and below
      • abf_ignore_zero - Set to True to make the avoidBoundFrac calculations treat zero as non-special
      • keepTickLabelsInside - Ensure tick labels do not project beyond bounds of axis if true
    • NormalDateXValueAxis
      • specialTickClear - clear rather than delete close ticks when forced first/end dates
    • AdjYValueAxis
      • labelVOffset - add this to the labels
  • reportlab.graphics.charts.barcharts

    • BarChart
      • categoryLabelBarSize - width to leave for a category label to go between categories
      • categoryLabelBarOrder - where any label bar should appear first/last
      • barRecord (advanced) - callable(bar,label=labelText,value=value,kwds) to record bar information
  • reportlab.graphics.charts.legends

    • SubColProperty
      • dx - x offset from default position
      • dy - y offset from default position
    • Legend
      • swdx - x position adjustment for the swatch
      • swdy - y position adjustment for the swatch
  • reportlab.graphics.charts.piecharts

    • Pie
      • wedgeRecord (advanced) - callable(wedge,*args,kwds)
  • reportlab.graphics.charts.utils

    • DrawTimeCollector - generic mechanism for collecting information about nodes at the time they are about to be drawn

Other Improvements

  • Installing the packages in Ubuntu using apt-get or synaptic will now install the compiled c extensions automatically.
  • Tested with easy_install, pip and buildout on all main platforms