Skip to main content
Help us improve Python packaging – donate today!

Barcode rendering for Python 2 and 3 supporting QRcode, Aztec, PDF417, I25, Code128, Code39 and many more types.

Project Description

A cleverly named, but very simple python barcode renderer wrapping the BWIPP library and ghostscript command line tool, Python 2.7 and 3.3+ compatible.


Install from pip:

pip install treepoem

You’ll also need Ghostscript installed. On Ubuntu/Debian this can be installed with:

apt-get install ghostscript

On Mac OS X use:

brew install ghostscript

Otherwise refer to your distribution’s package manager, though it’s likely to be called ghostscript too.


generate_barcode(barcode_type, data, options)

Generates a barcode and returns it as a PIL image file object (specifically, a PIL.EpsImagePlugin.EpsImageFile).

barcode_type is the name of the barcode type to generate (see below).

data is the string of data to embed in the barcode - the amount that can be embedded varies by type.

options is a dictionary of strings-to-strings of extra options to be passed to BWIPP, as per its docs.

For example, this generates a QR code image, and saves it to a file using standard PIL

>>> import treepoem
>>> image = treepoem.generate_barcode(
...     barcode_type='qrcode',  # One of the BWIPP supported codes.
...     data='barcode payload',
...     options={},
... )


This is a set of the ~100 names of the barcode types that the vendored version of BWIPP supports. If you’re looking for whether a specific type is supported, check here.

The library is tested with these specific, common types:

What’s so clever about the name?


Bark ode.

Tree poem.


1.3.2 (2017-10-22)

  • Upgrade BWIPP from 2017-07-10 to 2017-10-19. This has a few bug fixes. You can read its changelog in the vendored copy in the treepoem repo.

1.3.1 (2017-08-24)

  • Upgrade BWIPP from 2017-06-20 to 2017-07-10. This has a few bug fixes. You can read its changelog in the vendored copy in the treepoem repo.

1.3.0 (2017-06-21)

  • Upgrade BWIPP from 2015-11-24 to 2017-06-20. This has a number of bug fixes, and supports more barcode types. It has also changed the pixel-for-pixel output of some formats, although they still encode the same information - notably QR codes, which are tested in treepoem’s test suite. You can read its changelog in the vendored copy in the treepoem repo.

1.2.0 (2017-06-21)

  • Add treepoem.barcode_types, a set of all the names of supported barcode types, and error if asked to generate a barcode of an unknown type.

1.1.0 (2017-04-13)

  • Support Windows.

1.0.1 (2016-03-30)

  • Add the missing BWIPP files.

1.0.0 (2016-03-23)

  • Use $PATH to find gs binary.
  • Rename PostscriptError to TreepoemError.
  • Add basic
  • Setup Travis CI build.
  • Setup Tox

Release history Release notifications

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
treepoem-1.3.2-py2.py3-none-any.whl (347.4 kB) Copy SHA256 hash SHA256 Wheel 2.7 Oct 22, 2017
treepoem-1.3.2.tar.gz (345.9 kB) Copy SHA256 hash SHA256 Source None Oct 22, 2017

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page