All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.sf.jasperreports.components.barcode4j.package-info Maven / Gradle / Ivy

/*
 * JasperReports - Free Java Reporting Library.
 * Copyright (C) 2001 - 2019 TIBCO Software Inc. All rights reserved.
 * http://www.jaspersoft.com
 *
 * Unless you have purchased a commercial license agreement from Jaspersoft,
 * the following license terms apply:
 *
 * This program is part of JasperReports.
 *
 * JasperReports is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * JasperReports is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with JasperReports. If not, see .
 */

/**
* Contains classes for the built-in Barcode4J component.
* 
*

The Barcode4J Component

* This component relies on the Barcode4J library (http://barcode4j.sourceforge.net). *
* Unlike the Barbecue barcode component, there is only one component per Barcode4J * barcode type. All the barcode's components derive from a base type which defines its * common attributes. *

* All barcodes in this library include a code expression, which provides the textual data to * be encoded in the barcode, and an optional expression that provides a pattern to be * applied on the message displayed in the barcode. Delayed evaluation of the barcode can * be configured using the two evaluation attributes and works in the same way as for * Barbecue barcodes. *

* Several optional barcode rendering attributes can be set: *
    *
  • orientation - specifies how the barcode and any accompanying text are to be * oriented when rendered. There are 4 possible values: *
      *
    • 0 - indicates that the barcode is to be rendered in the default orientation * (which for linear barcodes is with vertical bars arranged from left to right)
    • *
    • 90 - indicates that the barcode is to be rotated anti-clockwise by 90 degrees
    • *
    • 180 - indicates that the barcode is to be rotated anti-clockwise by 180 degrees
    • *
    • 270 - indicates that the barcode is to be rotated anti-clockwise by 270 degrees
    • *
  • *
  • moduleWidth - specifies the width (in pixels) of the thinnest bar/module.
  • *
  • textPosition - Sets the placement of the human-readable barcode message. It has * three possible values: none - meaning no human-readable message, and * bottom and top. *
    * Note that the message and barcode are oriented together as a unit, so if the orientation * is set to 180 and the text position to top, the code appears reversed and the text * appears upside down beneath the image.
  • *
  • quietZone - Specifies the width of the quiet zone (in pixels).
  • *
  • verticalQuietZone - Specifies the height of the vertical quiet zone (in pixels).
  • *
* Concrete barcode types extend the base type by adding further attributes supported by the specific symboloy: *
    *
  • Codabar barcodes have a wideFactor attribute that specifies the factor between the * width of wide bars and the width of narrow bars.
  • *
  • Code128 barcodes do not have any specific attributes.
  • *
  • EAN128, EAN13, EAN8, UPCA and UPCE barcodes have a checksumMode * attribute which indicates how the check digit is to be handled. The attribute accepts * four values: *
      *
    • add - adds the checksum to the data;
    • *
    • check - indicates that the data should already contain a checksum;
    • *
    • ignore - doesn't expect or add a checksum to the data;
    • *
    • auto - attempts to detect whether a checksum is already present in the * data or one should be added.
    • *
  • *
  • Data Matrix barcodes can be configured to render as a square or rectangle by the * shape attribute.
  • *
  • Code39 barcodes have a checksumMode attribute, a displayChecksum * attribute that controls whether the human-readable message shows the checksum * character, a displayStartStop attribute which decides whether start/stop * characters are to be displayed in the human-readable message, * extendedCharSetEnabled to indicate that the barcode can display characters * from the entire 7-bit ASCII set, intercharGapWidth to control the width between * the characters and a wideFactor attribute.
  • *
  • Interleaved2Of5 barcodes can specify checksumMode, displayChecksum and * wideFactor attributes with the same meanings as in Code39 barcodes.
  • *
  • RoyalMailCustomer and USPSIntelligentMail barcodes have a checksumMode * attribute, an intercharGapWidth attribute, an ascenderHeight attribute which * sets the length of the bar ascender/descender, and a trackHeight attribute which * provides the height of the barcode track.
  • *
  • POSTNET barcodes can specify checksumMode, displayChecksum and * intercharGapWidth attributes, plus shortBarHeight for setting the height of * the short bar, and baselinePosition which can be top or bottom * to indicate how bars should align.
  • *
  • PDF417 barcode can control the number of columns and rows with the * minColumns, maxColumns, minRows, maxRows and * widthToHeightRatio attributes. The error correction level can be set using the * errorCorrectionLevel attribute.
  • *
  • QRCode barcode can control its error correction level using the errorCorrectionLevel attribute.
  • *
* The object model for the barcode components uses * {@link net.sf.jasperreports.components.barcode4j.BarcodeComponent BarcodeComponent} * as base class and concrete classes for each barcode type. *

* When a report that contains barcodes is filled, the data and attributes of the barcode are * collected into an object and passed to an image producer whose responsibility is to create * a renderer for the barcode. The image producer implements the * {@link net.sf.jasperreports.components.barcode4j.BarcodeImageProducer BarcodeImageProducer} * interface. As for Barbecue barcode elements, the resulting images have the size of the * design barcode element and use RetainShape as scale type. *

* Determining which image producer to use for a barcode component element relies on * custom properties defined at the element, report and global levels. The * {@link net.sf.jasperreports.components.barcode4j.BarcodeImageProducer#PROPERTY_IMAGE_PRODUCER net.sf.jasperreports.components.barcode4j.image.producer} property can * have a value of the name of the class that implements the image producer interface or an * alias that has been set for such a class, using a property of the form * {@link net.sf.jasperreports.components.barcode4j.BarcodeImageProducer#PROPERTY_PREFIX_IMAGE_PRODUCER net.sf.jasperreports.components.barcode4j.image.producer.<alias>}. * JasperReports has two barcode image producer implementations: one which renders the * barcode in SVG format and one which renders the barcode as a rasterized image. The * first implementation is registered under the svg alias and is used by default; * the second one has image as alias and can be used by changing the * {@link net.sf.jasperreports.components.barcode4j.BarcodeImageProducer#PROPERTY_PREFIX_IMAGE_PRODUCER net.sf.jasperreports.components.barcode4j.image.producer.<alias>} * property at any level. *

* The SVG barcode image producer uses the Barcode4J API to export the barcode to SVG, * then it creates an SVG renderer based on the Batik SVG library. Hence, this option * introduces a dependency on Batik for viewing or exporting a report that includes * barcodes. *

* The rasterized image producer draws the barcode on a PNG image which can be then * displayed in the generated report. This producer uses further properties, set at the same * levels as the image producer property, to allow the customization of the generated image. *

*/ package net.sf.jasperreports.components.barcode4j;




© 2015 - 2024 Weber Informatics LLC | Privacy Policy