Barcodes are a easy way to convey information in a machine readable way. With Pentaho Reporting, you can print a large set of barcodes in your reports. Barcodes in Pentaho Reporting are provided by the “simple-barcodes” element. And creating barcodes is as simple as the name of this element promises.
Pentaho Reporting 3.8 uses the Barbecue project as Barcode renderer and supports the following barcode types:
- 2of5
- 2of5-interleaved
- Codabar
- Code39(ext)
- Code128(a,b,c)
- EAN13
- UCC-EAN128
- ISBN
- PostNet
- PDF-417
With Pentaho Reporting 4.0, we also integrate the Barcode4J project (in addition to the existing Barbecue barcodes), and thus add support for the following barcode types:
- EAN8
- EAN128
- UPCE
- DataMatrix
- RoyalMail
- US-Postal-Service IntelligentMail
Think of a barcode element as some sort of fancy text- or number-field. A barcode element prints a single field value and generates a barcode vector image for it. To add a barcode to your report, all you need to do is drag the barcode element from the palette on the left-hand side of the window into the report canvas.
Each barcode has its range of allowed characters. The barcodes EAN, UPCA, ISBN, 2of5 and PostNet only accept numbers. The Code39, Code128 and Codabar barcodes accept a limited set of characters (the letters A-Z, 0-9 and a more or less extensive set of extra characters, all from the lower 128 characters of the ASCII-Charset). And some are free to accept nearly everything as input (PDF-417 and DataMatrix).
Usually, when you print barcodes, your data should already be in a format that can be handled by the barcode you are going to use. All barcoded data is generated by machines for other machines, and the person who generated the data usually (or hopefully) knows the accepted format already.
Like ordinary text-fields, barcode elements either receive a static text in the “value” attribute or a field-name in the “field” attribute.
If the barcode support printing a textual representation of the data, you can enable this via the “barcode-settings::show-text” attribute. This is also the place to fine tune the bar-width or height or to enable the calculation of checksums for the data given.
Styling of barcode elements
Styling the elements is easy. Like the “Sparkline Elements”, barcodes reuse many of the existing style properties.
- text-color: The foreground colour of the barcode. This is the colour the bars are rendered with.
- background-color: The background colour of the barcode. The barcode area will be filled with that colour prior to printing the barcode. This is handy to ensure that the barcode is printed on a white background for maximum contrast.
- font-family, font-size, bold, italics: The text properties define the style and size of the text printed on the barcode. Not all barcodes use text.
- scale: Whether the barcode is scaled according to the element’s size. Some barcodes do not have an intrinsic size and therefore are always scaled.
- keep-aspect-ratio: If the barcode is scaled, this defines whether the ratio between the width and the height remains constant. For some barcodes, this is mandatory to ensure that the code can be scanned properly.
And that’s it. As said: There is no big secret to using barcodes. So happy coding!
Thanks for your article on barcode. It was very helpful. Can you also please guide on how to load images from database in reports and what maven dependencies are required to embed it in J2ee application.
To load images from a database all you should need is to reference the database field as source in the content-field. The reporting engine will then pick up the image data from the resultset and will try to parse it (if it is a JPG, PNG or GIF image).
For a list of maven dependencies, have a look at the OEM-SDK. You will need to add Pentaho’s repository ( http://repoitory.pentaho.org ) to your Maven config to make the resolve successful.
You will find the OEM SDK in my Github stash at https://github.com/tmorgner/pentaho-reporting-oem-sdk
Thomas,
Do you have any step by step videos on how to create a barcode to return data?
This is my first time using this designer. It seems I am at a loss for what I am doing wrong here.
Thanks Thomas, I’m not a super user, but I’m trying use a bar code in the header of a report. The information I’m trying to turn in to a bar code is already on the report. How do I get the bar code to use it?