com.lowagie.text.pdf

Class BarcodeDatamatrix

public class BarcodeDatamatrix extends Object

A DataMatrix 2D barcode generator.
Nested Class Summary
static classBarcodeDatamatrix.DmParams
static classBarcodeDatamatrix.Placement
static classBarcodeDatamatrix.ReedSolomon
Field Summary
static BarcodeDatamatrix.DmParams[]dmSizes
static intDM_ASCII
ASCII encodation.
static intDM_AUTO
The best encodation will be used.
static intDM_B256
Binary encodation.
static intDM_C40
C40 encodation.
static intDM_EDIFACT
EDIFACT encodation.
static intDM_ERROR_EXTENSION
An error while parsing an extension.
static intDM_ERROR_INVALID_SQUARE
The dimensions given for the symbol are illegal.
static intDM_ERROR_TEXT_TOO_BIG
The text is too big for the symbology capabilities.
static intDM_EXTENSION
Allows extensions to be embedded at the start of the text.
static intDM_NO_ERROR
No error.
static intDM_RAW
No encodation needed.
static intDM_TEST
Doesn't generate the image but returns all the other information.
static intDM_TEXT
TEXT encodation.
static intDM_X21
X21 encodation.
intextOut
intheight
byte[]image
intoptions
short[]place
intwidth
intws
static Stringx12
Constructor Summary
BarcodeDatamatrix()
Creates an instance of this class.
Method Summary
static intasciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)
static intb256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)
ImagecreateAwtImage(Color foreground, Color background)
Creates a java.awt.Image.
ImagecreateImage()
Gets an Image with the barcode.
static intC40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, boolean c40)
voiddraw(byte[] data, int dataSize, BarcodeDatamatrix.DmParams dm)
static intEdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)
intgenerate(String text)
Creates a barcode.
intgenerate(byte[] text, int textOffset, int textSize)
Creates a barcode.
static intgetEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, boolean firstMatch)
intgetHeight()
Gets the height of the barcode.
byte[]getImage()
Gets the generated image.
static intgetNumber(byte[] text, int ptrIn, int n)
intgetOptions()
Gets the barcode options.
intgetWidth()
Gets the width of the barcode.
intgetWs()
Gets the whitespace border around the barcode.
static booleanisDigit(int c)
static voidmakePadding(byte[] data, int position, int count)
intprocessExtensions(byte[] text, int textOffset, int textSize, byte[] data)
voidsetBit(int x, int y, int xByte)
voidsetHeight(int height)
Sets the height of the barcode.
voidsetOptions(int options)
Sets the options for the barcode generation.
voidsetWidth(int width)
Sets the width of the barcode.
voidsetWs(int ws)
Sets the whitespace border around the barcode.
static intX12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)

Field Detail

dmSizes

private static final BarcodeDatamatrix.DmParams[] dmSizes

DM_ASCII

public static final int DM_ASCII
ASCII encodation.

DM_AUTO

public static final int DM_AUTO
The best encodation will be used.

DM_B256

public static final int DM_B256
Binary encodation.

DM_C40

public static final int DM_C40
C40 encodation.

DM_EDIFACT

public static final int DM_EDIFACT
EDIFACT encodation.

DM_ERROR_EXTENSION

public static final int DM_ERROR_EXTENSION
An error while parsing an extension.

DM_ERROR_INVALID_SQUARE

public static final int DM_ERROR_INVALID_SQUARE
The dimensions given for the symbol are illegal.

DM_ERROR_TEXT_TOO_BIG

public static final int DM_ERROR_TEXT_TOO_BIG
The text is too big for the symbology capabilities.

DM_EXTENSION

public static final int DM_EXTENSION
Allows extensions to be embedded at the start of the text.

DM_NO_ERROR

public static final int DM_NO_ERROR
No error.

DM_RAW

public static final int DM_RAW
No encodation needed. The bytes provided are already encoded.

DM_TEST

public static final int DM_TEST
Doesn't generate the image but returns all the other information.

DM_TEXT

public static final int DM_TEXT
TEXT encodation.

DM_X21

public static final int DM_X21
X21 encodation.

extOut

private int extOut

height

private int height

image

private byte[] image

options

private int options

place

private short[] place

width

private int width

ws

private int ws

x12

private static final String x12

Constructor Detail

BarcodeDatamatrix

public BarcodeDatamatrix()
Creates an instance of this class.

Method Detail

asciiEncodation

private static int asciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)

b256Encodation

private static int b256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)

createAwtImage

public Image createAwtImage(Color foreground, Color background)
Creates a java.awt.Image. A successful call to the method generate() before calling this method is required.

Parameters: foreground the color of the bars background the color of the background

Returns: the image

createImage

public Image createImage()
Gets an Image with the barcode. A successful call to the method generate() before calling this method is required.

Returns: the barcode Image

Throws: BadElementException on error

C40OrTextEncodation

private static int C40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, boolean c40)

draw

private void draw(byte[] data, int dataSize, BarcodeDatamatrix.DmParams dm)

EdifactEncodation

private static int EdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)

generate

public int generate(String text)
Creates a barcode. The String is interpreted with the ISO-8859-1 encoding

Parameters: text the text

Returns: the status of the generation. It can be one of this values:

DM_NO_ERROR - no error.
DM_ERROR_TEXT_TOO_BIG - the text is too big for the symbology capabilities.
DM_ERROR_INVALID_SQUARE - the dimensions given for the symbol are illegal.
DM_ERROR_EXTENSION - an error was while parsing an extension.

Throws: java.io.UnsupportedEncodingException on error

generate

public int generate(byte[] text, int textOffset, int textSize)
Creates a barcode.

Parameters: text the text textOffset the offset to the start of the text textSize the text size

Returns: the status of the generation. It can be one of this values:

DM_NO_ERROR - no error.
DM_ERROR_TEXT_TOO_BIG - the text is too big for the symbology capabilities.
DM_ERROR_INVALID_SQUARE - the dimensions given for the symbol are illegal.
DM_ERROR_EXTENSION - an error was while parsing an extension.

getEncodation

private static int getEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, boolean firstMatch)

getHeight

public int getHeight()
Gets the height of the barcode. Will contain the real height used after a successful call to generate(). This height doesn't include the whitespace border, if any.

Returns: the height of the barcode

getImage

public byte[] getImage()
Gets the generated image. The image is represented as a stream of bytes, each byte representing 8 pixels, 0 for white and 1 for black, with the high-order bit of each byte first. Each row is aligned at byte boundaries. The dimensions of the image are defined by height and width plus 2 * ws.

Returns: the generated image

getNumber

private static int getNumber(byte[] text, int ptrIn, int n)

getOptions

public int getOptions()
Gets the barcode options.

Returns: the barcode options

getWidth

public int getWidth()
Gets the width of the barcode. Will contain the real width used after a successful call to generate(). This width doesn't include the whitespace border, if any.

Returns: the width of the barcode

getWs

public int getWs()
Gets the whitespace border around the barcode.

Returns: the whitespace border around the barcode

isDigit

private static boolean isDigit(int c)

makePadding

private static void makePadding(byte[] data, int position, int count)

processExtensions

private int processExtensions(byte[] text, int textOffset, int textSize, byte[] data)

setBit

private void setBit(int x, int y, int xByte)

setHeight

public void setHeight(int height)
Sets the height of the barcode. If the height is zero it will be calculated. This height doesn't include the whitespace border, if any.

The allowed dimensions are (height, width):

10, 10
12, 12
8, 18
14, 14
8, 32
16, 16
12, 26
18, 18
20, 20
12, 36
22, 22
16, 36
24, 24
26, 26
16, 48
32, 32
36, 36
40, 40
44, 44
48, 48
52, 52
64, 64
72, 72
80, 80
88, 88
96, 96
104, 104
120, 120
132, 132
144, 144

Parameters: height the height of the barcode

setOptions

public void setOptions(int options)
Sets the options for the barcode generation. The options can be:

One of:
DM_AUTO - the best encodation will be used
DM_ASCII - ASCII encodation
DM_C40 - C40 encodation
DM_TEXT - TEXT encodation
DM_B256 - binary encodation
DM_X21 - X21 encodation
DM_EDIFACT - EDIFACT encodation
DM_RAW - no encodation. The bytes provided are already encoded and will be added directly to the barcode, using padding if needed. It assumes that the encodation state is left at ASCII after the last byte.

One of:
DM_EXTENSION - allows extensions to be embedded at the start of the text:

exxxxxx - ECI number xxxxxx
m5 - macro 5
m6 - macro 6
f - FNC1
saabbccccc - Structured Append, aa symbol position (1-16), bb total number of symbols (2-16), ccccc file identification (0-64515)
p - Reader programming
. - extension terminator

Example for a structured append, symbol 2 of 6, with FNC1 and ECI 000005. The actual text is "Hello".

s020600075fe000005.Hello

One of:
DM_TEST - doesn't generate the image but returns all the other information.

Parameters: options the barcode options

setWidth

public void setWidth(int width)
Sets the width of the barcode. If the width is zero it will be calculated. This width doesn't include the whitespace border, if any.

The allowed dimensions are (height, width):

10, 10
12, 12
8, 18
14, 14
8, 32
16, 16
12, 26
18, 18
20, 20
12, 36
22, 22
16, 36
24, 24
26, 26
16, 48
32, 32
36, 36
40, 40
44, 44
48, 48
52, 52
64, 64
72, 72
80, 80
88, 88
96, 96
104, 104
120, 120
132, 132
144, 144

Parameters: width the width of the barcode

setWs

public void setWs(int ws)
Sets the whitespace border around the barcode.

Parameters: ws the whitespace border around the barcode

X12Encodation

private static int X12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)