Class BarcodeDatamatrix

java.lang.Object
com.itextpdf.text.pdf.BarcodeDatamatrix

public class BarcodeDatamatrix extends Object
A DataMatrix 2D barcode generator.
  • Field Details

    • DM_NO_ERROR

      public static final int DM_NO_ERROR
      No error.
      See Also:
    • DM_ERROR_TEXT_TOO_BIG

      public static final int DM_ERROR_TEXT_TOO_BIG
      The text is too big for the symbology capabilities.
      See Also:
    • DM_ERROR_INVALID_SQUARE

      public static final int DM_ERROR_INVALID_SQUARE
      The dimensions given for the symbol are illegal.
      See Also:
    • DM_ERROR_EXTENSION

      public static final int DM_ERROR_EXTENSION
      An error while parsing an extension.
      See Also:
    • DM_AUTO

      public static final int DM_AUTO
      The best encodation will be used.
      See Also:
    • DM_ASCII

      public static final int DM_ASCII
      ASCII encodation.
      See Also:
    • DM_C40

      public static final int DM_C40
      C40 encodation.
      See Also:
    • DM_TEXT

      public static final int DM_TEXT
      TEXT encodation.
      See Also:
    • DM_B256

      public static final int DM_B256
      Binary encodation.
      See Also:
    • DM_X12

      public static final int DM_X12
      X12 encodation.
      See Also:
    • DM_X21

      @Deprecated public static final int DM_X21
      Deprecated.
      Use BarcodeDataMatrix#DM_X12 instead.
      X12 encodation.
      See Also:
    • DM_EDIFACT

      public static final int DM_EDIFACT
      EDIFACT encodation.
      See Also:
    • DM_RAW

      public static final int DM_RAW
      No encodation needed. The bytes provided are already encoded.
      See Also:
    • DM_EXTENSION

      public static final int DM_EXTENSION
      Allows extensions to be embedded at the start of the text.
      See Also:
    • DM_TEST

      public static final int DM_TEST
      Doesn't generate the image but returns all the other information.
      See Also:
    • DEFAULT_DATA_MATRIX_ENCODING

      public static final String DEFAULT_DATA_MATRIX_ENCODING
      See Also:
    • LATCH_B256

      private static final byte LATCH_B256
      See Also:
    • LATCH_EDIFACT

      private static final byte LATCH_EDIFACT
      See Also:
    • LATCH_X12

      private static final byte LATCH_X12
      See Also:
    • LATCH_TEXT

      private static final byte LATCH_TEXT
      See Also:
    • LATCH_C40

      private static final byte LATCH_C40
      See Also:
    • UNLATCH

      private static final byte UNLATCH
      See Also:
    • EXTENDED_ASCII

      private static final byte EXTENDED_ASCII
      See Also:
    • PADDING

      private static final byte PADDING
      See Also:
    • encoding

      private String encoding
    • dmSizes

      private static final BarcodeDatamatrix.DmParams[] dmSizes
    • X12

      private static final String X12
      See Also:
    • extOut

      private int extOut
    • place

      private short[] place
    • image

      private byte[] image
    • height

      private int height
    • width

      private int width
    • ws

      private int ws
    • options

      private int options
    • f

      private static int[][] f
    • switchMode

      private static int[][] switchMode
    • forceSquareSize

      private boolean forceSquareSize
  • Constructor Details

  • Method Details

    • setBit

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

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

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

      private static boolean isDigit(int c)
    • asciiEncodation

      private static int asciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset)
    • b256Encodation

      private static int b256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset)
    • randomizationAlgorithm255

      private static void randomizationAlgorithm255(byte[] data, int j)
    • X12Encodation

      private static int X12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset)
    • EdifactEncodation

      private static int EdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, int symbolIndex, int prevEnc, int origDataOffset, boolean sizeFixed)
    • C40OrTextEncodation

      private static int C40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, boolean c40, int symbolIndex, int prevEnc, int origDataOffset)
    • minValueInColumn

      private static int minValueInColumn(int[][] array, int column)
    • valuePositionInColumn

      private static int valuePositionInColumn(int[][] array, int column, int value)
    • solveFAndSwitchMode

      private static void solveFAndSwitchMode(int[] forMin, int mode, int currIndex)
    • getEncodation

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

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

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

      public int generate(String text) throws UnsupportedEncodingException
      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:
      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.

    • createImage

      public Image createImage() throws BadElementException
      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
    • 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
    • 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
    • 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
    • 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
    • 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
    • getWs

      public int getWs()
      Gets the whitespace border around the barcode.
      Returns:
      the whitespace border around the barcode
    • setWs

      public void setWs(int ws)
      Sets the whitespace border around the barcode.
      Parameters:
      ws - the whitespace border around the barcode
    • getOptions

      public int getOptions()
      Gets the barcode options.
      Returns:
      the barcode options
    • 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
    • setForceSquareSize

      public void setForceSquareSize(boolean forceSquareSize)
    • placeBarcode

      public void placeBarcode(PdfContentByte cb, BaseColor foreground, float moduleHeight, float moduleWidth)
    • 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