What's New in ReportLab PLUS 2.7

released 4th April 2013

This release, 2.7, is the last major one to support Python 2.5 and 2.6 (and also works on 2.7).  It contains a small number of fixes and additions since our last release in September 2012.  You may think of it as a 'long term stable' branch - if key bugs emerge we will issue 2.7.1, 2.7.2 releases and so on. 

General Changes

We have our eye on a number of key goals, namely introducing Python 3 support and modernising the ReportLab code base. As a first step down this road, this release will introduce a few structural changes to our packages in addition to functional features.

ReportLab is now on Bitbucket

The definitive repository for our open souce library, reportlab, is now a mercurial repository hosted on Bitbucket. This provides a public issue tracker and wiki, and will hopefully encourage more people to contribute to the open source code.

Preppy is now an external dependency

For those using our templating language, preppy, the code is now in a totally separate repository, again hosted on Bitbucket.  It is also released on PyPI so you can do easy_install preppy or pip install preppy.  Docs are rewritten, much more helpful, and up on http://preppy.readthedocs.org/

Practically, this change will mean that instead of importing it like this..

from rlextra.preppy import preppy

..you will need to use..

import preppy

rlextra structural changes

Our commercial python package, rlextra, has also been migrated to a private mercurial repository. Practically, this will have no impact on our users as it will still be accessible from our devnet page as packaged builds.  However, the directory structure inside has changed to split off the demos and documentation from the code.  rlextra depends on reportlab, preppy and pyRXP, all of which can be installed with pip or easy_install; and if you want to place the rlextra-*.tar.gz on an internal URL, you can use the same tools to install it on servers. 

For companies working closely with us and needing frequent access to builds, we can provide direct access to the repo.

New ReportLab PLUS Features

Diagra / Drawing Editor

  • Allow for adding / editing simple doc strings, to allow chart galleries to be well documented and still editable in the GUI
  • New feature to skip columns in data with Null values rather than raising an error and halting the job
  • New feature to specify a (regex based) pattern to skip unwanted lines in CSV files.  This can be used to skip over records which should not result in charts.
  • A Simplify on Save feature automatically cleans up the chart modules on save, removing redundant or duplicated text.  This prevents the clutter that tended to accumulate in chart modules over months or years of edits.
  • Added explicit support for extra font paths in the GUI, so you can tell it where your custom fonts live.

Report Markup Language (RML)

  • The list tags, <ul> and <ol>, were undocumented in the last release but can now be considered final.  There is more documentation, especially in test_046_lists.rml.  The default bullet character for <ul> is now a proper small bullet, rather than a large circle.
  • Fixed some Table Of Contents layout issues with the ability to do trailing dots in Asian languages.


  • Minor bug fix when reading in pages with page annotations

Open Source - ReportLab Toolkit

Charts / graphics

  • Added SimpleTimeSeriesPlot
  • added _computeMaxSpace
  • added in lineStyle (for bars)
  • improved SVG rendering
  • Pie Chart now has an 'innerRadiusFraction' to allow doughnut-like appearance for 2d charts  (it has no effect with 3d charts).  The separate 'doughnut' chart lacks many pie chart features and should only be used if you wanted multiple nested doughnuts. 
  • Bug fixes:
    • piecharts.py: fix Pie3d __init__ to call its superclass
    • linecharts.py: fix swatch creation
    • fixed y axis in the simple time series plot


  • Fixes to testshapes & pdfform resetting
  • colors.py
  • various minor fixes


  • Defined a small bullet rather than a big circle as the default for unordered lists
  • fixed attribute spelling bug
  • fixed CJK + endDots


Many thanks to Andrew Cutler, Dinu Gherman, Matthias Kirst and Stephan Richter for their contributions.