com.lowagie.text.pdf
Class BarcodePDF417

java.lang.Object
  extended by com.lowagie.text.pdf.BarcodePDF417

public class BarcodePDF417
extends Object

Generates the 2D barcode PDF417. Supports dimensioning auto-sizing, fixed and variable sizes, automatic and manual error levels, raw codeword input, codeword size optimization and bitmap inversion. The output can be a CCITT G4 Image or a raw bitmap.

Author:
Paulo Soares (psoares@consiste.pt)

Nested Class Summary
protected static class BarcodePDF417.Segment
           
protected static class BarcodePDF417.SegmentList
           
 
Field Summary
protected static int ABSOLUTE_MAX_TEXT_SIZE
           
protected static int AL
           
protected static int ALPHA
           
protected static int AS
           
private  float aspectRatio
          Holds value of property aspectRatio.
private  int bitColumns
          Holds value of property bitColumns.
protected  int bitPtr
           
protected static int BYTE_MODE
           
protected static int BYTE_MODE_6
           
protected static int BYTESHIFT
           
private static int[][] CLUSTERS
           
private  int codeColumns
          Holds value of property codeColumns.
private  int codeRows
          Holds value of property codeRows.
private  int[] codewords
          Holds value of property codewords.
protected  int cwPtr
           
private static int[][] ERROR_LEVEL
           
private  int errorLevel
          Holds value of property errorLevel.
protected static int ISBYTE
           
private  int lenCodewords
          Holds value of property lenCodewords.
protected static int LL
           
protected static int LOWER
           
protected static int MACRO_LAST_SEGMENT
           
protected static int MACRO_SEGMENT_ID
           
private  String macroFileId
           
private  int macroIndex
           
private  int macroSegmentCount
           
private  int macroSegmentId
           
protected static int MAX_DATA_CODEWORDS
           
protected static int MIXED
           
private static String MIXED_SET
           
protected static int ML
           
protected static int MOD
           
protected static int NUMERIC_MODE
           
private  int options
          Holds value of property options.
private  byte[] outBits
          Holds value of property outBits.
protected static int PAL
           
static int PDF417_AUTO_ERROR_LEVEL
          The error level correction is set automatically according to ISO 15438 recommendations.
static int PDF417_FIXED_COLUMNS
          The size will be at least codeColumns with a variable number of codeRows.
static int PDF417_FIXED_RECTANGLE
          The size of the barcode will be at least codeColumns*codeRows.
static int PDF417_FIXED_ROWS
          The size will be at least codeRows with a variable number of codeColumns.
static int PDF417_FORCE_BINARY
          One single binary segment is used
static int PDF417_INVERT_BITMAP
          Inverts the output bits of the raw bitmap that is normally bit one for black.
static int PDF417_USE_ASPECT_RATIO
          Auto-size is made based on aspectRatio and yHeight.
static int PDF417_USE_ERROR_LEVEL
          The error level correction is set by the user.
static int PDF417_USE_MACRO
          Use Macro PDF417 Encoding
static int PDF417_USE_RAW_CODEWORDS
          No text interpretation is done and the content of codewords is used directly.
protected static int PL
           
protected static int PS
           
protected static int PUNCTUATION
           
private static String PUNCTUATION_SET
           
protected  BarcodePDF417.SegmentList segmentList
           
protected static int SPACE
           
protected static int START_CODE_SIZE
           
protected static int START_PATTERN
           
protected static int STOP_PATTERN
           
protected static int STOP_SIZE
           
private  byte[] text
          Holds value of property text.
protected static int TEXT_MODE
           
private  float yHeight
          Holds value of property yHeight.
 
Constructor Summary
BarcodePDF417()
          Creates a new BarcodePDF417 with the default settings.
 
Method Summary
private  void append(int in, int len)
           
private  void append(String s)
           
protected  void assemble()
           
private  void basicNumberCompaction(byte[] input, int start, int length)
           
protected  void basicNumberCompaction(int start, int length)
           
(package private)  void breakString()
           
(package private)  void byteCompaction(int start, int length)
           
protected  void byteCompaction6(int start)
           
protected  void calculateErrorCorrection(int dest)
           
protected  boolean checkSegmentType(BarcodePDF417.Segment segment, char type)
           
 Image createAwtImage(Color foreground, Color background)
          Creates a java.awt.Image.
protected  void dumpList()
           
 float getAspectRatio()
          Gets the barcode aspect ratio.
 int getBitColumns()
          Gets the number of X pixels of outBits.
 int getCodeColumns()
          Gets the number of barcode data columns.
 int getCodeRows()
          Gets the number of Y pixels of outBits.
 int[] getCodewords()
          Gets the codeword array.
 int getErrorLevel()
          Gets the error level correction used for the barcode.
 Image getImage()
          Gets an Image with the barcode.
 int getLenCodewords()
          Gets the length of the codewords.
protected  int getMaxSquare()
           
 int getOptions()
          Gets the options to generate the barcode.
 byte[] getOutBits()
          Gets the raw image bits of the barcode.
protected  int getSegmentLength(BarcodePDF417.Segment segment)
           
 byte[] getText()
          Gets the bytes that form the barcode.
private static int getTextTypeAndValue(byte[] input, int maxLength, int idx)
           
protected  int getTextTypeAndValue(int maxLength, int idx)
           
 float getYHeight()
          Gets the Y pixel height relative to X.
private  void macroCodes()
           
protected static int maxPossibleErrorLevel(int remain)
           
private  void numberCompaction(byte[] input, int start, int length)
           
protected  void numberCompaction(int start, int length)
           
protected  void outCodeword(int codeword)
           
protected  void outCodeword17(int codeword)
           
protected  void outCodeword18(int codeword)
           
protected  void outPaintCode()
           
protected  void outStartPattern()
           
protected  void outStopPattern()
           
 void paintCode()
          Paints the barcode.
 void setAspectRatio(float aspectRatio)
          Sets the barcode aspect ratio.
 void setCodeColumns(int codeColumns)
          Sets the number of barcode data columns.
 void setCodeRows(int codeRows)
          Sets the number of barcode rows.
 void setDefaultParameters()
          Set the default settings that correspond to PDF417_USE_ASPECT_RATIO and PDF417_AUTO_ERROR_LEVEL.
 void setErrorLevel(int errorLevel)
          Sets the error level correction for the barcode.
 void setLenCodewords(int lenCodewords)
          Sets the length of the codewords.
 void setMacroFileId(String id)
          Sets the File ID for macro PDF417 encoding
 void setMacroSegmentCount(int cnt)
          Sets the segment count for macro PDF417 encoding
 void setMacroSegmentId(int id)
          Sets the segment id for macro PDF417 encoding
 void setOptions(int options)
          Sets the options to generate the barcode.
 void setText(byte[] text)
          Sets the bytes that form the barcode.
 void setText(String s)
          Sets the text that will form the barcode.
 void setYHeight(float yHeight)
          Sets the Y pixel height relative to X.
private  void textCompaction(byte[] input, int start, int length)
           
protected  void textCompaction(int start, int length)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

PDF417_USE_ASPECT_RATIO

public static final int PDF417_USE_ASPECT_RATIO
Auto-size is made based on aspectRatio and yHeight.

See Also:
Constant Field Values

PDF417_FIXED_RECTANGLE

public static final int PDF417_FIXED_RECTANGLE
The size of the barcode will be at least codeColumns*codeRows.

See Also:
Constant Field Values

PDF417_FIXED_COLUMNS

public static final int PDF417_FIXED_COLUMNS
The size will be at least codeColumns with a variable number of codeRows.

See Also:
Constant Field Values

PDF417_FIXED_ROWS

public static final int PDF417_FIXED_ROWS
The size will be at least codeRows with a variable number of codeColumns.

See Also:
Constant Field Values

PDF417_AUTO_ERROR_LEVEL

public static final int PDF417_AUTO_ERROR_LEVEL
The error level correction is set automatically according to ISO 15438 recommendations.

See Also:
Constant Field Values

PDF417_USE_ERROR_LEVEL

public static final int PDF417_USE_ERROR_LEVEL
The error level correction is set by the user. It can be 0 to 8.

See Also:
Constant Field Values

PDF417_FORCE_BINARY

public static final int PDF417_FORCE_BINARY
One single binary segment is used

See Also:
Constant Field Values

PDF417_USE_RAW_CODEWORDS

public static final int PDF417_USE_RAW_CODEWORDS
No text interpretation is done and the content of codewords is used directly.

See Also:
Constant Field Values

PDF417_INVERT_BITMAP

public static final int PDF417_INVERT_BITMAP
Inverts the output bits of the raw bitmap that is normally bit one for black. It has only effect for the raw bitmap.

See Also:
Constant Field Values

PDF417_USE_MACRO

public static final int PDF417_USE_MACRO
Use Macro PDF417 Encoding

See Also:
setMacroFileId(String), setMacroSegmentId(int), setMacroSegmentCount(int), Constant Field Values

macroSegmentCount

private int macroSegmentCount

macroSegmentId

private int macroSegmentId

macroFileId

private String macroFileId

macroIndex

private int macroIndex

bitPtr

protected int bitPtr

cwPtr

protected int cwPtr

segmentList

protected BarcodePDF417.SegmentList segmentList

START_PATTERN

protected static final int START_PATTERN
See Also:
Constant Field Values

STOP_PATTERN

protected static final int STOP_PATTERN
See Also:
Constant Field Values

START_CODE_SIZE

protected static final int START_CODE_SIZE
See Also:
Constant Field Values

STOP_SIZE

protected static final int STOP_SIZE
See Also:
Constant Field Values

MOD

protected static final int MOD
See Also:
Constant Field Values

ALPHA

protected static final int ALPHA
See Also:
Constant Field Values

LOWER

protected static final int LOWER
See Also:
Constant Field Values

MIXED

protected static final int MIXED
See Also:
Constant Field Values

PUNCTUATION

protected static final int PUNCTUATION
See Also:
Constant Field Values

ISBYTE

protected static final int ISBYTE
See Also:
Constant Field Values

BYTESHIFT

protected static final int BYTESHIFT
See Also:
Constant Field Values

PL

protected static final int PL
See Also:
Constant Field Values

LL

protected static final int LL
See Also:
Constant Field Values

AS

protected static final int AS
See Also:
Constant Field Values

ML

protected static final int ML
See Also:
Constant Field Values

AL

protected static final int AL
See Also:
Constant Field Values

PS

protected static final int PS
See Also:
Constant Field Values

PAL

protected static final int PAL
See Also:
Constant Field Values

SPACE

protected static final int SPACE
See Also:
Constant Field Values

TEXT_MODE

protected static final int TEXT_MODE
See Also:
Constant Field Values

BYTE_MODE_6

protected static final int BYTE_MODE_6
See Also:
Constant Field Values

BYTE_MODE

protected static final int BYTE_MODE
See Also:
Constant Field Values

NUMERIC_MODE

protected static final int NUMERIC_MODE
See Also:
Constant Field Values

ABSOLUTE_MAX_TEXT_SIZE

protected static final int ABSOLUTE_MAX_TEXT_SIZE
See Also:
Constant Field Values

MAX_DATA_CODEWORDS

protected static final int MAX_DATA_CODEWORDS
See Also:
Constant Field Values

MACRO_SEGMENT_ID

protected static final int MACRO_SEGMENT_ID
See Also:
Constant Field Values

MACRO_LAST_SEGMENT

protected static final int MACRO_LAST_SEGMENT
See Also:
Constant Field Values

MIXED_SET

private static final String MIXED_SET
See Also:
Constant Field Values

PUNCTUATION_SET

private static final String PUNCTUATION_SET
See Also:
Constant Field Values

CLUSTERS

private static final int[][] CLUSTERS

ERROR_LEVEL

private static final int[][] ERROR_LEVEL

outBits

private byte[] outBits
Holds value of property outBits.


bitColumns

private int bitColumns
Holds value of property bitColumns.


codeRows

private int codeRows
Holds value of property codeRows.


codeColumns

private int codeColumns
Holds value of property codeColumns.


codewords

private int[] codewords
Holds value of property codewords.


lenCodewords

private int lenCodewords
Holds value of property lenCodewords.


errorLevel

private int errorLevel
Holds value of property errorLevel.


text

private byte[] text
Holds value of property text.


options

private int options
Holds value of property options.


aspectRatio

private float aspectRatio
Holds value of property aspectRatio.


yHeight

private float yHeight
Holds value of property yHeight.

Constructor Detail

BarcodePDF417

public BarcodePDF417()
Creates a new BarcodePDF417 with the default settings.

Method Detail

setMacroSegmentId

public void setMacroSegmentId(int id)
Sets the segment id for macro PDF417 encoding

Parameters:
id - the id (starting at 0)
See Also:
setMacroSegmentCount(int)

setMacroSegmentCount

public void setMacroSegmentCount(int cnt)
Sets the segment count for macro PDF417 encoding

Parameters:
cnt - the number of macro segments
See Also:
setMacroSegmentId(int)

setMacroFileId

public void setMacroFileId(String id)
Sets the File ID for macro PDF417 encoding

Parameters:
id - the file id

checkSegmentType

protected boolean checkSegmentType(BarcodePDF417.Segment segment,
                                   char type)

getSegmentLength

protected int getSegmentLength(BarcodePDF417.Segment segment)

setDefaultParameters

public void setDefaultParameters()
Set the default settings that correspond to PDF417_USE_ASPECT_RATIO and PDF417_AUTO_ERROR_LEVEL.


outCodeword17

protected void outCodeword17(int codeword)

outCodeword18

protected void outCodeword18(int codeword)

outCodeword

protected void outCodeword(int codeword)

outStopPattern

protected void outStopPattern()

outStartPattern

protected void outStartPattern()

outPaintCode

protected void outPaintCode()

calculateErrorCorrection

protected void calculateErrorCorrection(int dest)

getTextTypeAndValue

private static int getTextTypeAndValue(byte[] input,
                                       int maxLength,
                                       int idx)

getTextTypeAndValue

protected int getTextTypeAndValue(int maxLength,
                                  int idx)

textCompaction

private void textCompaction(byte[] input,
                            int start,
                            int length)

textCompaction

protected void textCompaction(int start,
                              int length)

basicNumberCompaction

protected void basicNumberCompaction(int start,
                                     int length)

basicNumberCompaction

private void basicNumberCompaction(byte[] input,
                                   int start,
                                   int length)

numberCompaction

private void numberCompaction(byte[] input,
                              int start,
                              int length)

numberCompaction

protected void numberCompaction(int start,
                                int length)

byteCompaction6

protected void byteCompaction6(int start)

byteCompaction

void byteCompaction(int start,
                    int length)

breakString

void breakString()

assemble

protected void assemble()

macroCodes

private void macroCodes()

append

private void append(int in,
                    int len)

append

private void append(String s)

maxPossibleErrorLevel

protected static int maxPossibleErrorLevel(int remain)

dumpList

protected void dumpList()

getMaxSquare

protected int getMaxSquare()

paintCode

public void paintCode()
Paints the barcode. If no exception was thrown a valid barcode is available.


getImage

public Image getImage()
               throws BadElementException
Gets an Image with the barcode. The image will have to be scaled in the Y direction by yHeightfor the barcode to have the right printing aspect.

Returns:
the barcode Image
Throws:
BadElementException - on error

createAwtImage

public Image createAwtImage(Color foreground,
                            Color background)
Creates a java.awt.Image.

Parameters:
foreground - the color of the bars
background - the color of the background
Returns:
the image

getOutBits

public byte[] getOutBits()
Gets the raw image bits of the barcode. The image will have to be scaled in the Y direction by yHeight.

Returns:
The raw barcode image

getBitColumns

public int getBitColumns()
Gets the number of X pixels of outBits.

Returns:
the number of X pixels of outBits

getCodeRows

public int getCodeRows()
Gets the number of Y pixels of outBits. It is also the number of rows in the barcode.

Returns:
the number of Y pixels of outBits

setCodeRows

public void setCodeRows(int codeRows)
Sets the number of barcode rows. This number may be changed to keep the barcode valid.

Parameters:
codeRows - the number of barcode rows

getCodeColumns

public int getCodeColumns()
Gets the number of barcode data columns.

Returns:
he number of barcode data columns

setCodeColumns

public void setCodeColumns(int codeColumns)
Sets the number of barcode data columns. This number may be changed to keep the barcode valid.

Parameters:
codeColumns - the number of barcode data columns

getCodewords

public int[] getCodewords()
Gets the codeword array. This array is always 928 elements long. It can be written to if the option PDF417_USE_RAW_CODEWORDS is set.

Returns:
the codeword array

getLenCodewords

public int getLenCodewords()
Gets the length of the codewords.

Returns:
the length of the codewords

setLenCodewords

public void setLenCodewords(int lenCodewords)
Sets the length of the codewords.

Parameters:
lenCodewords - the length of the codewords

getErrorLevel

public int getErrorLevel()
Gets the error level correction used for the barcode. It may different from the previously set value.

Returns:
the error level correction used for the barcode

setErrorLevel

public void setErrorLevel(int errorLevel)
Sets the error level correction for the barcode.

Parameters:
errorLevel - the error level correction for the barcode

getText

public byte[] getText()
Gets the bytes that form the barcode. This bytes should be interpreted in the codepage Cp437.

Returns:
the bytes that form the barcode

setText

public void setText(byte[] text)
Sets the bytes that form the barcode. This bytes should be interpreted in the codepage Cp437.

Parameters:
text - the bytes that form the barcode

setText

public void setText(String s)
Sets the text that will form the barcode. This text is converted to bytes using the encoding Cp437.

Parameters:
s - the text that will form the barcode

getOptions

public int getOptions()
Gets the options to generate the barcode.

Returns:
the options to generate the barcode

setOptions

public void setOptions(int options)
Sets the options to generate the barcode. This can be all the PDF417_* constants.

Parameters:
options - the options to generate the barcode

getAspectRatio

public float getAspectRatio()
Gets the barcode aspect ratio.

Returns:
the barcode aspect ratio

setAspectRatio

public void setAspectRatio(float aspectRatio)
Sets the barcode aspect ratio. A ratio or 0.5 will make the barcode width twice as large as the height.

Parameters:
aspectRatio - the barcode aspect ratio

getYHeight

public float getYHeight()
Gets the Y pixel height relative to X.

Returns:
the Y pixel height relative to X

setYHeight

public void setYHeight(float yHeight)
Sets the Y pixel height relative to X. It is usually 3.

Parameters:
yHeight - the Y pixel height relative to X

Hosted by Hostbasket