Data Matrix Barcodes in Crystal Reports

Data Matrix 2D Barcodes in Crystal Reports

  • This tutorial shows how to add Data Matrix barcodes to your Crystal Reports.

Step 1. Add a new formula

  • In the Field Explorer, right click Formula Fields and click New...

  • Enter a name for the new formula.

Step 2. Verify the Data Matrix functions

  • Ensure the functions are installed. May be listed under one of these two locations:
    Functions > Additional Functions > Visual Basic UFLs (u2lcom.dll)
    Functions > Additional Functions > COM and .NET UFLs (u212com.dll)
  • If missing, install the User Function Library

Step 3. Copy the formula text

Copy the contents of this text into the Formula Editor.:


// This is the text you wish to encode. Replace "HELLO" with your own data.
  // For example: stringVar barcodeInput := {my_data_table.item_text}; 
  // If your data is a number or date, it must be converted to string using the ToText() function.
  // For example: stringVar barcodeInput := ToText( {my_data_table.item_text}, 0, ""); 
stringVar barcodeInput:=  "HELLO"; 

  // Minimum size of Data Matrix symbol.. Valid sizes are 1-30. 
  // Square sizes are 1-24 (size 1 equals 10x10 modules per side and size 24 equals 144x44).
  // Non-Square sizes are 25-30 (size 25 equals 8x18 modules, and size 30 equals 16x48).
  // Note: Size of symbol will automatically increase if too small for the data.
numberVar symbolSize := 1;              
  // Encoding mode for this Data Matrix symbol. Describes how to best encode the supplied text 
  // to achieve smallest symbol size.
  // Possible values are: Auto, Ascii, C40, Text, X12, Edifact, Base256
stringVar dataMatrixEncoding := "Auto";

  // Allows input of special characters in format ^000 where 000 is decimal ASCII code. 
  // For example, ABC^009123^013^010 encodes "ABC[TAB]123[CARRIAGE RETURN][LINE FEED]".
  // To encode the actual caret ^, enter it twice: ^^
  // To encode FNC1, enter: ^F1
booleanVar allowSpecialChars := true; 

  // Determines whether the symbol is a regular DataMatrix or a GS1-DataMatrix barcode.
  // Set IsGS1 to false to create "regular" DataMatrix barcodes (default).
  // Set IsGS1 to true to create GS1-DataMatrix barcodes.
  // GS1-DataMatrix barcodes require input to be in the format: "(NN)XXXXXX(NN)XXXXXXXXX",
  // where NN is a 2, 3, or 4-digit AI and XXXXXX is alphanumeric data to be encoded.
booleanVar isGs1 := false;            

  // Thickness of quiet zone (space around barcode), in number of modules.
  // Note: Minimum quiet zone is 1 module. If you add a border (borderWidth > 0), ensure quietZoneWidth is 1 or larger.
  // Default value is 0 (no quiet zone).
numberVar quietZoneWidth := 0;       

  // Thickness of border around barcode, in number of modules.
  // If using a border, ensure quietZoneWidth is 1 or larger.
numberVar borderWidth := 0;            

  // Character encoding of higher ASCII values (above 127). 
  // For example: UTF-8 | ISO-8859-1 | ISO-8859-3 | ISO-2022-JP-2 
stringVar characterEncoding := "UTF-8";

stringVar fullBarcode := "";
numberVar i := 0;

Do (
  stringVar result := DataMatrixEncode(i, barcodeInput, symbolSize, dataMatrixEncoding, allowSpecialChars, 
                                            isGs1, quietZoneWidth, borderWidth, characterEncoding);
  fullBarcode := fullBarcode + result;
  i := i + 1;
While result <> "";



Step 4. Edit the formula

Replace "Hello..." with your own data field.

Click Save and Close.

Step 5. Add a barcode to the report

  • Drag the formula from Field Explorer to the report

Step 6. Edit the text field

  • Change the font to: BCW_DM

NOTE:  For smaller barcodes, you can set the point size as low as 2pt

  • Right-click and select Format Field...

  • Select Can Grow on the Common tab

The report is now ready

  • Click on Preview to see or print it.