com.lowagie.text.pdf

## Class BarcodeDatamatrix

- java.lang.Object
- - com.lowagie.text.pdf.BarcodeDatamatrix

-     public class BarcodeDatamatrix
      extends java.lang.Object

  A DataMatrix 2D barcode generator.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `private static class` | `BarcodeDatamatrix.DmParams`
    `(package private) static class` | `BarcodeDatamatrix.Placement`
    `(package private) static class` | `BarcodeDatamatrix.ReedSolomon`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DM_ASCII` ASCII encodation.
    `static int` | `DM_AUTO` The best encodation will be used.
    `static int` | `DM_B256` Binary encodation.
    `static int` | `DM_C40` C40 encodation.
    `static int` | `DM_EDIFACT` EDIFACT encodation.
    `static int` | `DM_ERROR_EXTENSION` An error while parsing an extension.
    `static int` | `DM_ERROR_INVALID_SQUARE` The dimensions given for the symbol are illegal.
    `static int` | `DM_ERROR_TEXT_TOO_BIG` The text is too big for the symbology capabilities.
    `static int` | `DM_EXTENSION` Allows extensions to be embedded at the start of the text.
    `static int` | `DM_NO_ERROR` No error.
    `static int` | `DM_RAW` No encodation needed.
    `static int` | `DM_TEST` Doesn't generate the image but returns all the other information.
    `static int` | `DM_TEXT` TEXT encodation.
    `static int` | `DM_X21` X21 encodation.
    `private static BarcodeDatamatrix.DmParams[]` | `dmSizes`
    `private int` | `extOut`
    `private int` | `height`
    `private byte[]` | `image`
    `private int` | `options`
    `private short[]` | `place`
    `private int` | `width`
    `private int` | `ws`
    `private static java.lang.String` | `x12`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BarcodeDatamatrix()` Creates an instance of this class.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `private static int` | `asciiEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)`
    `private static int` | `b256Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)`
    `private static int` | `C40OrTextEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength, boolean c40)`
    `java.awt.Image` | `createAwtImage(java.awt.Color foreground, java.awt.Color background)` Creates a `java.awt.Image`.
    `Image` | `createImage()` Gets an `Image` with the barcode.
    `private void` | `draw(byte[] data, int dataSize, BarcodeDatamatrix.DmParams dm)`
    `private static int` | `EdifactEncodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)`
    `int` | `generate(byte[] text, int textOffset, int textSize)` Creates a barcode.
    `int` | `generate(java.lang.String text)` Creates a barcode.
    `private static int` | `getEncodation(byte[] text, int textOffset, int textSize, byte[] data, int dataOffset, int dataSize, int options, boolean firstMatch)`
    `int` | `getHeight()` Gets the height of the barcode.
    `byte[]` | `getImage()` Gets the generated image.
    `private static int` | `getNumber(byte[] text, int ptrIn, int n)`
    `int` | `getOptions()` Gets the barcode options.
    `int` | `getWidth()` Gets the width of the barcode.
    `int` | `getWs()` Gets the whitespace border around the barcode.
    `private static boolean` | `isDigit(int c)`
    `private static void` | `makePadding(byte[] data, int position, int count)`
    `private int` | `processExtensions(byte[] text, int textOffset, int textSize, byte[] data)`
    `private void` | `setBit(int x, int y, int xByte)`
    `void` | `setHeight(int height)` Sets the height of the barcode.
    `void` | `setOptions(int options)` Sets the options for the barcode generation.
    `void` | `setWidth(int width)` Sets the width of the barcode.
    `void` | `setWs(int ws)` Sets the whitespace border around the barcode.
    `private static int` | `X12Encodation(byte[] text, int textOffset, int textLength, byte[] data, int dataOffset, int dataLength)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### DM_NO_ERROR

          public static final int DM_NO_ERROR

      No error.
      See Also:
        Constant Field Values

    - #### 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:
        Constant Field Values

    - #### DM_ERROR_INVALID_SQUARE

          public static final int DM_ERROR_INVALID_SQUARE

      The dimensions given for the symbol are illegal.
      See Also:
        Constant Field Values

    - #### DM_ERROR_EXTENSION

          public static final int DM_ERROR_EXTENSION

      An error while parsing an extension.
      See Also:
        Constant Field Values

    - #### DM_AUTO

          public static final int DM_AUTO

      The best encodation will be used.
      See Also:
        Constant Field Values

    - #### DM_ASCII

          public static final int DM_ASCII

      ASCII encodation.
      See Also:
        Constant Field Values

    - #### DM_C40

          public static final int DM_C40

      C40 encodation.
      See Also:
        Constant Field Values

    - #### DM_TEXT

          public static final int DM_TEXT

      TEXT encodation.
      See Also:
        Constant Field Values

    - #### DM_B256

          public static final int DM_B256

      Binary encodation.
      See Also:
        Constant Field Values

    - #### DM_X21

          public static final int DM_X21

      X21 encodation.
      See Also:
        Constant Field Values

    - #### DM_EDIFACT

          public static final int DM_EDIFACT

      EDIFACT encodation.
      See Also:
        Constant Field Values

    - #### DM_RAW

          public static final int DM_RAW

      No encodation needed. The bytes provided are already encoded.
      See Also:
        Constant Field Values

    - #### DM_EXTENSION

          public static final int DM_EXTENSION

      Allows extensions to be embedded at the start of the text.
      See Also:
        Constant Field Values

    - #### DM_TEST

          public static final int DM_TEST

      Doesn't generate the image but returns all the other information.
      See Also:
        Constant Field Values

    - #### dmSizes

          private static final BarcodeDatamatrix.DmParams[] dmSizes

    - #### x12

          private static final java.lang.String x12

      See Also:
        Constant Field Values

    - #### 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

  - ### Constructor Detail

    - #### BarcodeDatamatrix

          public BarcodeDatamatrix()

      Creates an instance of this class.

  - ### Method Detail

    - #### 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)

    - #### b256Encodation

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

    - #### X12Encodation

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

    - #### EdifactEncodation

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

    - #### C40OrTextEncodation

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

    - #### getEncodation

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

    - #### 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(java.lang.String text)
                       throws java.io.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:
        `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.

    - #### 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

    - #### createAwtImage

          public java.awt.Image createAwtImage(java.awt.Color foreground,
                                      java.awt.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

    - #### 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