ReportLab Software Installation Guide

This page is for users and evaluators of our commercial software. It should help you select the right installer and get up and running as quickly as possible. For details on what's in the latest release, you should start here instead.

Disclaimer

We regard our software as a framework for Enterprise use. In general it is used and delivered as part of an overall solution or supplied with the necessary expert services assistance. Different customers will need different parts of the framework, which have very different 'entry points' and canonical examples. In addition, we find ourselves dealing with C++, Java, Perl or Visual Basic programmers with different skills and experience. So, there is more than one way to do it, and more than one way to document it, and people starting without a clear goal in mind or guidance may find things unclear. For this reason among others the downloads themselves are password-protected. If you would like to evaluate our commercial tools, contact us on this address

Our framework is written in Python, with key portions rewritten in C (or Java) for speed. We do not aim to teach Python system administration (which is well-documented, similar to Java and fairly easy).

Supported versions

We support Python versions 2.3, 2.4 and 2.5. For new installations we recommend Python 2.5, and we are introducing Python 2.5 features in parts of our framework for future releases. Slightly older versions of our library are available which work well with 1.5.2 up to 2.2, but only on request.

The software will work on any POSIX-compliant operating system with a C compiler (i.e. Windows, Mac OS, Unix and Linux), and we test regularly on FreeBSD and Solaris. However the only OS for which we maintain an out-of-the-box installer is Windows.

We have also provided a Java version (built using Jython) which offers 100% identical output across our test suite running on a JVM. This uses Jython 2.1. However, this does not offer the same performance and is currently regarded as experimental. (We hope to do the same for .NET soon!)

Available installers

Windows Installer

This is the easiest way to get started if you are on Windows. You will need to install Python itself and (strongly recommended) the Python Windows extensions first. We currently recommend Python 2.5 but 2.4 and 2.3 are also supported. The steps are:

  1. Install latest Python (e.g. Python 2.5.1.msi) for Windows from here (off site, currently v2.5.1).
  2. Install Python Windows Extensions from here (off site, currently Build 210; make sure it matches your Python version).
  3. Test Pythonwin by using Start | Programs | Python 2.5 | Pythonwin. If it starts up, fine; you can shut it down again. If you see an error related to "MFC71.DLL" — if so, you need to download that Microsoft-provided file from here. This library must be downloaded separately for license-related reasons, but is used in many applications built with Microsoft tools and may be on your system already.
  4. Install latest ReportLabJumboInstaller from the devnet directory. These have names like ReportLabJumboInstaller-2.1.1-py25.exe
  5. (Optional) If you are using Diagra to support data-aware charts from versions before Jan 2006 you need to install the mx.ODBC database adaptor from eGenix ; we no longer include this in our installer. Install their base and commercial packages, in that order, for your Python version by following links in this sentence. This is commercial software (approx USD 95/ EUR 75 / GPB 60 per seat) and you will need to buy desktop licenses from eGenix if you go beyond the initial trial. The most recent versions of our library use an open source ODBC connector and can support MySQL directly, removing this dependency..

This installer will deliver our libraries, the Python Imaging Library (PIL) and Python Mega Widgets (Pmw) (on which we depend), as well as all needed DLLs, n one step. Experienced Python developers will find this table useful, which shows what goes where.

WhatWhere
reportlab package C:\Python25\reportlab
rlextra package C:\Python25\rlextra
DLLs C:\Python25\lib\site-packages\ (_rl_accel.pyd, _renderPM.pyd, pyRXP.pyd)
PIL Python Imaging Library v 1.1.6 (unmodified) in site-packages, with _imaging.pyd contained
Docs All auto-generated by our tools on your machine. Each in its product directory (e.g. rlextra/rml2pdc/docs, rlextra/pageCatcher/docs, reportlab/docs/userguide/) but accessible from one set of links on the Start Menu
GUIs The start menu entry for ReportLab includes a link to the RML demo GUI (rmlgui.exe in C:\python25), and to Diagra editor (rlextra/graphics/guiedit.pyc). The demo GUI is of limited real-world value.

Once finished, you should have a ReportLab link on your Start Menu which points you at the documentation, like this:

Cross-platform sourcepackage

Users on Unix (including Mac OS X), or wanting control over the distribution, will need to install the packages themselves. We do not provide standard installs due to the huge variation of platforms, components already installed, and corporate deployment requirements; we assume that people can access a Windows machine for initial evaluation. The instructions which follow will require either some familiarity with Python or a degree of persistence :-)

Whichever applies, our rl_check.py script will be a useful companion which you can run to check off each step as you have done it. Place this in a temporary location.

If you don't already have Python installed, do that first from www.python.org! This section explains a 'normal' installation and assumes you (a) have the python executable on your path, and (b) know where you site-packages directory is.

  1. Install Python if you don't have it already. If you don't, then install the latest Mac version. Pre-built installers may be available for Mac OS X (2.2 is standard) and most Linux distros.
  2. Get our rl_check.py script. Run it to check you don't already have old or partial versions of the reportlab tools around and to see what we are aiming for.
  3. Install The ReportLab Toolkit from source. This is available from http://www.reportlab.org/download.html and from the devnet download area and will always be identical. For release builds, the files will be named e.g. ReportLab_2_1.tgz. This will unzip (or un-tar-gz) to contain a directory 'Reportlab_2_1', which contains a manifest and the reportlab package directory. Either move the directory named 'reportlab' to a location on your Python path, or place a .pth file on your Python path to point to it. Note that the directory CONTAINING reportlab must be on the Python path, not the reportlab directory itself. After doing this, rl_check.py should report that it can find reportlab.
  4. Compile the reportlab package by cd'ing to the directory and doing 'python PYLIB/compileall.py REPORTLAB' where you should replace PYLIB with the path to your Python standard library, and REPORTLAB with the path to your installed reportlab package.
  5. Download the ReportLab commercial libraries (named e.g. rlextra_1_21_py24.tgz). Follow the same procedure described in the previous two steps to install the package. Note that the 'rlextra' package differs from the 'reportlab' package in that some of the code is only provided in bytecode-compiled form, as an intellectual property protection measure. As a result, you need the rlextra distribution that matches your Python version. Compilation (see previous step) is still required, since most files are provided as source code. After installation, rl_check.py should report that it can find rlextra.
  6. The rlextra package also contains a 'bin' directory containing executables named 'rml2pdf', 'pagecatcher' and 'preppy'. You should copy these three scripts to a permanent location on your system, grant them the executable permission, and ensure they can be found by your system (by configuring the PATH environment variable to contain an entry for the directory in which the scripts are located).
  7. Download the standard Type 1 PDF fonts and unzip them into the directory named 'fonts' that lives in the 'reportlab' package directory that you installed. For licensing reasons we don't bundle these with the software.
  8. Download the _rl_accel module. This is a C extension which makes our libraries go a lot faster. This should be considered part of the standard build, unless there's a serious reason not to use it. Unpack the .tar.gz package. The .tar.gz package contains a single directory. That directory contains a directory 'rl_accel', which contains a script named setup.py. As root, execute 'python setup.py install' in the directory containing setup.py. This should create an extension module _rl_accel.so and copy it to your site-packages directory.
  9. Download the _renderPM module. Follow the same installation instructions as for _rl_accel (the only difference is that the directory containing the setup.py script is named 'renderPM'). This is our graphics rendering engine used for making bitmap images - not needed for pure PDF generation but considered part of the standard build.
  10. Download the pyRXP module. Follow the same installation instructions as for _rl_accel (the only difference is that the directory containing the setup.py script is named 'pyRXP'). This is a very fast validating XML parser used by RML. (RML can fall back onto slower code in its absence but behaviour for entities, whitespace and non-ascii characters may vary; pyRXP is mandated for commercial installations).
  11. Download and install the Python Imaging Library if you do not have it already (1.1.3 or higher, 1.1.6 recommended).
  12. If you want to use the Diagra graphical drawing editor, install Python Mega Widgets 0.99 or higher.

To run the tests:

  1. Change directory to the directory created by unpacking the reportlab open source toolkit distribution.
  2. cd reportlab/test
    python runAll.py
    cd ../graphics
    python renderPM.py
    
  3. Change directory to the directory created by unpacking the rlextra distribution.
  4. cd rlextra/rml2pdf/test
    python testall.py
    
  5. Change directory to the directory created by unpacking the renderPM distribution.
  6. cd renderPM
    python test_renderPM.py
    
  7. Change directory to the directory created by unpacking the pyRXP distribution.
  8. cd pyRXP/test
    python testRXPbasic.py
    

Daily Builds

Daily builds are also available in the Devnet area and work exactly as in the previous section. These are provided as a courtesy to registered customers and allow us to get new features out for testing rapidly to those customers requesting them.

Minimal runtime for server deployment or embedding

We also make available a minimal package (e.g. rlruntime_1_21_py24.zip, rlruntime-daily-py24.zip). This contains just the elements needed for RML, PageCatcher, PDFEncrypt and so on to run, in bytecode-compiled form. This is intended for compact deployment on servers. If you have installed the extension modules, and are using Python 2.3 or higher (which allows zipfile deployment), you can simply place this on your Python path; if prior to Python 2.3 you'll need to unzip it and place contents on the Python path.

Feedback

We hope to refine the installation process with better installers and 'getting started' documentation over time. Please let us know how we can improve this information.