Package com.itextpdf.barcodes
Class BarcodePDF417
java.lang.Object
com.itextpdf.barcodes.Barcode2D
com.itextpdf.barcodes.BarcodePDF417
PDF417 is a stacked linear barcode format used in a variety of applications such as transport, identification cards, and inventory management. "PDF" stands for Portable Data File. The "417" signifies that each pattern in the code consists of 4 bars and spaces in a pattern that is 17 units (modules) long. It is defined in ISO 15438.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classA container that encapsulates all data needed for a segment.protected static classAn utility class that encapsulates a list of segments. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intprotected static final intprotected static final intprotected static final intprotected intprotected static final intprotected static final intprotected static final intprotected intprotected static final floatprotected static final floatprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intstatic final intThe error level correction is set automatically according to ISO 15438 recommendations.static final intThe size will be at leastcodeColumnswith a variable number ofcodeRows.static final intThe size of the barcode will be at leastcodeColumns*codeRows.static final intThe size will be at leastcodeRowswith a variable number ofcodeColumns.static final intOne single binary segment is usedstatic final intInverts the output bits of the raw bitmap that is normally bit one for black.static final intAuto-size is made based onaspectRatioandyHeight.static final intThe error level correction is set by the user.static final intUse Macro PDF417 Encodingstatic final intNotextinterpretation is done and the content ofcodewordsis used directly.protected static final intprotected static final intprotected static final intprotected BarcodePDF417.SegmentListprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intprotected static final intFields inherited from class com.itextpdf.barcodes.Barcode2D
DEFAULT_MODULE_SIZE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidassemble()Assembles the data of the code words.protected voidbasicNumberCompaction(int start, int length) Compacts the codewords.protected voidbyteCompaction6(int start) Compacts the code wordsprotected voidcalculateErrorCorrection(int dest) Calculates the error correction codewords.protected booleancheckSegmentType(BarcodePDF417.Segment segment, char type) Checks whether the segment is of a certain type.createAwtImage(Color foreground, Color background) Creates ajava.awt.Image.createFormXObject(Color foreground, float moduleWidth, float moduleHeight, PdfDocument document) Creates a PdfFormXObject with the barcode with given module width and module height.createFormXObject(Color foreground, PdfDocument document) Creates a PdfFormXObject with the barcode.protected voiddumpList()Prints the segments to standard output.floatGets the barcode aspect ratio.Gets the maximum area that the barcode and the text, if any, will occupy.intGets the number of X pixels ofoutBits.byte[]getCode()Gets the bytes that form the barcode.intGets the number of barcode data columns.intGets the number of Y pixels ofoutBits.int[]Gets the codeword array.intGets the error level correction used for the barcode.intGets the length of the codewords.protected intCalculates the max square that can contain the barcode.intGets the options to generate the barcode.byte[]Gets the raw image bits of the barcode.protected intgetSegmentLength(BarcodePDF417.Segment segment) Calculates the length of the given segmentprotected intgetTextTypeAndValue(int maxLength, int idx) Gets the text type and value.floatGets the Y pixel height relative to X.protected static intmaxPossibleErrorLevel(int remain) Calculates the highest error level that can be used for the remaining number of data codewords.protected voidnumberCompaction(int start, int length) Compacts the code words.protected voidoutCodeword(int codeword) Utility method that adds a codeword to the barcode.protected voidoutCodeword17(int codeword) Adds the code word to the correct code word to the 17th bit.protected voidoutCodeword18(int codeword) Adds the code word to the correct code word to the 18th bit.protected voidAdds the barcode to the output bits.protected voidAdds the start pattern to the output.protected voidAdds the stop pattern to the output.voidPaints the barcode.placeBarcode(PdfCanvas canvas, Color foreground) Places the barcode in aPdfCanvas.placeBarcode(PdfCanvas canvas, Color foreground, float moduleWidth, float moduleHeight) Places the barcode in aPdfCanvas.voidsetAspectRatio(float aspectRatio) Sets the barcode aspect ratio.voidsetCode(byte[] code) Sets the bytes that form the barcode.voidSets the code that will form the barcode.voidsetCodeColumns(int codeColumns) Sets the number of barcode data columns.voidsetCodeRows(int codeRows) Sets the number of barcode rows.voidSet the default settings that correspond toPDF417_USE_ASPECT_RATIOandPDF417_AUTO_ERROR_LEVEL.voidsetErrorLevel(int errorLevel) Sets the error level correction for the barcode.voidsetLenCodewords(int lenCodewords) Sets the length of the codewords.voidsetMacroFileId(String id) Sets the File ID for macro PDF417 encodingvoidsetMacroSegmentCount(int cnt) Sets the segment count for macro PDF417 encodingvoidsetMacroSegmentId(int id) Sets the segment id for macro PDF417 encodingvoidsetOptions(int options) Sets the options to generate the barcode.voidsetYHeight(float yHeight) Sets the Y pixel height relative to X.protected voidtextCompaction(int start, int length) Compacts the codewords.Methods inherited from class com.itextpdf.barcodes.Barcode2D
createFormXObject
-
Field Details
-
PDF417_USE_ASPECT_RATIO
public static final int PDF417_USE_ASPECT_RATIOAuto-size is made based onaspectRatioandyHeight.- See Also:
-
PDF417_FIXED_RECTANGLE
public static final int PDF417_FIXED_RECTANGLEThe size of the barcode will be at leastcodeColumns*codeRows.- See Also:
-
PDF417_FIXED_COLUMNS
public static final int PDF417_FIXED_COLUMNSThe size will be at leastcodeColumnswith a variable number ofcodeRows.- See Also:
-
PDF417_FIXED_ROWS
public static final int PDF417_FIXED_ROWSThe size will be at leastcodeRowswith a variable number ofcodeColumns.- See Also:
-
PDF417_AUTO_ERROR_LEVEL
public static final int PDF417_AUTO_ERROR_LEVELThe error level correction is set automatically according to ISO 15438 recommendations.- See Also:
-
PDF417_USE_ERROR_LEVEL
public static final int PDF417_USE_ERROR_LEVELThe error level correction is set by the user. It can be 0 to 8.- See Also:
-
PDF417_FORCE_BINARY
public static final int PDF417_FORCE_BINARYOne single binary segment is used- See Also:
-
PDF417_USE_RAW_CODEWORDS
public static final int PDF417_USE_RAW_CODEWORDSNotextinterpretation is done and the content ofcodewordsis used directly.- See Also:
-
PDF417_INVERT_BITMAP
public static final int PDF417_INVERT_BITMAPInverts the output bits of the raw bitmap that is normally bit one for black. It has only effect for the raw bitmap.- See Also:
-
PDF417_USE_MACRO
public static final int PDF417_USE_MACROUse Macro PDF417 Encoding -
START_PATTERN
protected static final int START_PATTERN- See Also:
-
STOP_PATTERN
protected static final int STOP_PATTERN- See Also:
-
START_CODE_SIZE
protected static final int START_CODE_SIZE- See Also:
-
STOP_SIZE
protected static final int STOP_SIZE- See Also:
-
MOD
protected static final int MOD- See Also:
-
ALPHA
protected static final int ALPHA- See Also:
-
LOWER
protected static final int LOWER- See Also:
-
MIXED
protected static final int MIXED- See Also:
-
PUNCTUATION
protected static final int PUNCTUATION- See Also:
-
ISBYTE
protected static final int ISBYTE- See Also:
-
BYTESHIFT
protected static final int BYTESHIFT- See Also:
-
PL
protected static final int PL- See Also:
-
LL
protected static final int LL- See Also:
-
AS
protected static final int AS- See Also:
-
ML
protected static final int ML- See Also:
-
AL
protected static final int AL- See Also:
-
PS
protected static final int PS- See Also:
-
PAL
protected static final int PAL- See Also:
-
SPACE
protected static final int SPACE- See Also:
-
TEXT_MODE
protected static final int TEXT_MODE- See Also:
-
BYTE_MODE_6
protected static final int BYTE_MODE_6- See Also:
-
BYTE_MODE
protected static final int BYTE_MODE- See Also:
-
NUMERIC_MODE
protected static final int NUMERIC_MODE- See Also:
-
ABSOLUTE_MAX_TEXT_SIZE
protected static final int ABSOLUTE_MAX_TEXT_SIZE- See Also:
-
MAX_DATA_CODEWORDS
protected static final int MAX_DATA_CODEWORDS- See Also:
-
MACRO_SEGMENT_ID
protected static final int MACRO_SEGMENT_ID- See Also:
-
MACRO_LAST_SEGMENT
protected static final int MACRO_LAST_SEGMENT- See Also:
-
DEFAUL_MODULE_WIDTH
protected static final float DEFAUL_MODULE_WIDTH- See Also:
-
DEFAUL_MODULE_HEIGHT
protected static final float DEFAUL_MODULE_HEIGHT- See Also:
-
bitPtr
protected int bitPtr -
cwPtr
protected int cwPtr -
segmentList
-
-
Constructor Details
-
BarcodePDF417
public BarcodePDF417()Creates a newBarcodePDF417with the default settings.
-
-
Method Details
-
setMacroSegmentId
public void setMacroSegmentId(int id) Sets the segment id for macro PDF417 encoding- Parameters:
-
id- the id (starting at 0) - See Also:
-
setMacroSegmentCount
public void setMacroSegmentCount(int cnt) Sets the segment count for macro PDF417 encoding- Parameters:
-
cnt- the number of macro segments - See Also:
-
setMacroFileId
Sets the File ID for macro PDF417 encoding- Parameters:
-
id- the file id
-
setDefaultParameters
public void setDefaultParameters()Set the default settings that correspond toPDF417_USE_ASPECT_RATIOandPDF417_AUTO_ERROR_LEVEL. -
getBarcodeSize
Gets the maximum area that the barcode and the text, if any, will occupy. The lower left corner is always (0, 0).- Specified by:
-
getBarcodeSizein classBarcode2D - Returns:
- the size the barcode occupies.
-
placeBarcode
Places the barcode in aPdfCanvas. The barcode is always placed at coordinates (0, 0). Use the translation matrix to move it elsewhere.- Specified by:
-
placeBarcodein classBarcode2D - Parameters:
-
canvas- thePdfCanvaswhere the barcode will be placed -
foreground- the foreground color. It can benull - Returns:
- the dimensions the barcode occupies
-
placeBarcode
public Rectangle placeBarcode(PdfCanvas canvas, Color foreground, float moduleWidth, float moduleHeight) Places the barcode in aPdfCanvas. -
paintCode
public void paintCode()Paints the barcode. If no exception was thrown a valid barcode is available. -
createFormXObject
Creates a PdfFormXObject with the barcode.- Specified by:
-
createFormXObjectin classBarcode2D - Parameters:
-
foreground- the color of the pixels. It can benull -
document- The document - Returns:
- the XObject.
-
createFormXObject
public PdfFormXObject createFormXObject(Color foreground, float moduleWidth, float moduleHeight, PdfDocument document) Creates a PdfFormXObject with the barcode with given module width and module height.- Parameters:
-
foreground- The color of the pixels. It can benull -
moduleWidth- The width of the pixels. -
moduleHeight- The height of the pixels. -
document- The document - Returns:
- the XObject.
-
createAwtImage
Creates ajava.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 byyHeight.- Returns:
- The raw barcode image
-
getBitColumns
public int getBitColumns()Gets the number of X pixels ofoutBits.- Returns:
-
the number of X pixels of
outBits
-
getCodeRows
public int getCodeRows()Gets the number of Y pixels ofoutBits. 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 optionPDF417_USE_RAW_CODEWORDSis 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
-
getCode
public byte[] getCode()Gets the bytes that form the barcode. This bytes should be interpreted in the codepage Cp437.- Returns:
- the bytes that form the barcode
-
setCode
public void setCode(byte[] code) Sets the bytes that form the barcode. This bytes should be interpreted in the codepage Cp437.- Parameters:
-
code- the bytes that form the barcode
-
setCode
Sets the code that will form the barcode. This text is converted to bytes using the encoding Cp437.- Parameters:
-
text- 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 thePDF417_*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
-
outCodeword17
protected void outCodeword17(int codeword) Adds the code word to the correct code word to the 17th bit.- Parameters:
-
codeword- the code word
-
outCodeword18
protected void outCodeword18(int codeword) Adds the code word to the correct code word to the 18th bit.- Parameters:
-
codeword- the code word
-
outCodeword
protected void outCodeword(int codeword) Utility method that adds a codeword to the barcode.- Parameters:
-
codeword- the codeword to add
-
outStopPattern
protected void outStopPattern()Adds the stop pattern to the output. -
outStartPattern
protected void outStartPattern()Adds the start pattern to the output. -
outPaintCode
protected void outPaintCode()Adds the barcode to the output bits. -
calculateErrorCorrection
protected void calculateErrorCorrection(int dest) Calculates the error correction codewords.- Parameters:
-
dest- length of the code words
-
textCompaction
protected void textCompaction(int start, int length) Compacts the codewords.- Parameters:
-
start- the start position -
length- the length
-
basicNumberCompaction
protected void basicNumberCompaction(int start, int length) Compacts the codewords.- Parameters:
-
start- the start position -
length- the length
-
getTextTypeAndValue
protected int getTextTypeAndValue(int maxLength, int idx) Gets the text type and value.- Parameters:
-
maxLength- the maximum length -
idx- the index - Returns:
- the text type and value
-
checkSegmentType
Checks whether the segment is of a certain type.- Parameters:
-
segment- the segment to check -
type- the type to check against - Returns:
- true if the segment is of the specified type
-
getSegmentLength
Calculates the length of the given segment- Parameters:
-
segment- the segment to check - Returns:
- the length of the segment
-
numberCompaction
protected void numberCompaction(int start, int length) Compacts the code words.- Parameters:
-
start- the start position -
length- the length
-
byteCompaction6
protected void byteCompaction6(int start) Compacts the code words- Parameters:
-
start- the start position
-
assemble
protected void assemble()Assembles the data of the code words. -
maxPossibleErrorLevel
protected static int maxPossibleErrorLevel(int remain) Calculates the highest error level that can be used for the remaining number of data codewords.- Parameters:
-
remain- the number of data codewords - Returns:
- the highest error level that can be used
-
dumpList
protected void dumpList()Prints the segments to standard output. -
getMaxSquare
protected int getMaxSquare()Calculates the max square that can contain the barcode. And sets the codeColumns and codeRows variables.- Returns:
- the max square that can contain the barcode
-