Native Crystal Reports User Manual

NOTE: This product supports Crystal version 9 and later. Refer to the Crystal Integration Guide for products that support earlier versions.

Buy License Download Demo

Reports containing this object may only be distributed outside the licensed organization with the purchase of a Developer License to the Native Barcode Generator.

Product Overview

The Native Barcode Generator is an object that may be easily inserted into a Crystal Report to create barcode images. Once installed in a report, no other components or fonts need to be installed to create barcodes; it is the complete barcode generator that stays with the report, even when distributed. *

Demos available:

The demo versions contain static barcode data that may be used to demonstrate it's functionality. While the data cannot be changed, the demo will allow the ability to manipulate the barcode properties to test for specific height requirements. The purchased version is fully-functional and does not require license keys or activation. If the demo is installed, please uninstall it before installing the purchased version.

Barcode Integration Tutorial

Installing the Native Barcode Generator is a fairly simple process. Several generators are created for different barcode types.

  1. Extract the files from the Native Barcode Generator package.
  2. Several generators are created for different barcode types. Open the report that represents the barcode type that is needed.
    Extracted Zip File of reports
    If in doubt, IDAutomation recommends choosing Code 128 Auto, which is in the file named IDAutomation Native - Code 128 Auto.rpt.
  3. Choose View - Design to switch to design mode and locate the Native Barcode Generator object within the details section of the report.
    Locate the barcode object to copy.
    The object is the field in the details area that contains very small text.
  4. Highlight the Native Barcode Generator object and choose Edit - Copy
    Insert Native Barcode Object for Crystal Reports
    or Right-Click on the object and select Copy.
    Right Click and Copy Object
  5. Open the report the barcode is needed for and choose Edit - Paste to paste the Native Barcode Generator object where it is desired.
    • When creating GS1 symbols, the text object related to the Barcode Generator object should also be copied, if it is desired to have the text interpretation appear.
      GS1-128 Text and Barcode Object
  6. Highlight the object and choose Edit - Edit Formula.
    Edit Formula
  7. If more than one barcode will be on the same report it is necessary to rename the formula. In the formula workshop right click on the formula name and choose rename. Add a descriptive name to the end, for example: IDAutomation_C128_CustomerData.
  8. Modify the "DataToEncode =" line of the formula to equal the data that is to be encoded in the barcode.
    Enter formula for datatoencode.
    If an error such as "A string is required" appears, the data will need to be converted to a string with a crystal function. For example: DataToEncode = cStr( {Table1_.FloatValueField},0 )
  9. Optionally, parameters below the "DataToEncode =" line of the formula may be changed as necessary.
    • For linear barcodes only, when changing the "BarHeight =" variable, the size of the object must also be increased so that taller barcodes may be contained. The approximate height is determined by the following formula:
        Height in Inches = (Font Size) * (BarHeight) * 0.015
        Height in CM    = (Font Size) * (BarHeight) * 0.04

      For example, the default BarHeight of 8 equals about 0.3 inches and 1 centimeter.
  10. If it is necessary to change the X dimension or barcode size, highlight the object, choose Format Field and change the font point size according to the chart below. The point size must be small, generally 3 or 4 points. Because the drop-down box does not contain these small sizes, they must be manually typed in. The font selected for the object must be "Courier New" or another mono-spaced Unicode font such as "Consolas" or "Lucida Console".
    This is how to change the size of the barcode field in Crystal Reports.
    Point Size      Notes about point size and symbol distortion
    2 08 Mils (.02cm)
    • When using a 203 or 300 dpi thermal printer the point size should be 2.5 or 5 points.
    • To scan from the screen of a Windows PC, the best sizes to use are 10, 12 or 16 points.
    • If distortion is noticed, slightly adjust the point size up or down in .5 increments until a correct symbol is obtained. If the result is still not be as expected, Barcode Fonts should be used instead.
    • The X dimensions are doubled for 2D matrix symbols such as Data Matrix and QR-Code. For example, a QR-Code printed at 5 points will have an X of 40 Mils.
    • The X dimensions are approximate and may change with different resolutions of printers and screens.
    2.5 10 Mils (.025cm)
    3 12 Mils (.03cm)
    4 16 Mils (.04cm)
    5 20 Mils (.05cm)
    6 24 Mils (.06cm)
    7 28 Mils (.07cm)
    8 32 Mils (.08cm)
    9 36 Mils (.09cm)

  11. Run the report to verify barcodes are being properly created. Ensure the object has been sized properly to contain the entire barcode. If the width of the symbol is larger than the object, white lines and a distorted symbol will appear.
    Truncated barcode object
  12. Print the report to verify that the barcodes are created properly and that they can be scanned with a scanner. If a scanner is needed to verify barcodes, IDAutomation offers several affordable, barcode scanner kits including plug-and-play USB scanners.
  13. It is normal to view some distortion of the symbol on the screen because of low screen resolution. However, the barcodes should be accurate when printed. If it is necessary to generate accurate barcodes for the screen, adjust the point size slightly until the symbol appears without any white lines of distortion.
    Crystal Reports Barcode


Each symbology has its own .rpt code example included in the licensed download zip file. This code should be copied and pasted into the Formula Editor and then modified as needed. Below is a list of the symbologies and the parameters associated:

  • DataToEncode a string of data to encode.
  • BarHeight a numerical value that defines the height of the bars in .015 inch increments.
  • IncludeCheckDigit a True or False value that determines if a check digit will be calculated and included in the barcode.
  • N_Dimension the difference between narrow and wide bars. The default is 2.
  • Segs is the number of segments in DataBar Expanded. A low even number such as 4 or 6 will stack the symbol.
  • CodabarStart & CodabarStop uses letters A, B C or D for start and stop codes.
  • ApplyTilde when True, encodes functions with the ~ character:
    • FNC1 characters may be included with "~202" for Code-128 and with "~1" for Data Matrix or QR Code.
    • ASCII Functions may be encoded with ~??? in Code-128 and PDF417 or with ~d??? in Data Matrix and QR Code where ??? is a three digit ASCII code.
    • MOD Calculations may be performed where ??? is the number of digits before the tilde to include in the calculation:
    • ~m?? calculates a MOD10 check character, commonly used for GS1.
      Example: ~2020000801234999999999~m17 
      Encodes: (00) 008012349999999997
    • ~f?? calculates a MOD43 check character, commonly used for HIBC.
      Example: +A123BJC5D6E71~f14
      Encodes: +A123BJC5D6E71G
    • ~k?? calculates the MOD37-2 check character in brackets for the HRI object, commonly used for ISBT manual entry. This option will not encode the check character within the barcode.
      Example: G123412654321~k13
      Encodes: G123412654321 [L]
2D Specific:
  • processTilde encodes functions with ~d character.
  • PreferredFormat generates the symbol size as defined by the corresponding number as outlined in the rpt file.
  • EncodingMode is the encoding mode (ASCII, BASE256, TEXT, C40).
    • E_BASE256 = 0
    • E_C40 = 1
    • E_TEXT = 2
    • E_ASCII = 3
  • EccLevel is the Error Correction Level.
  • ColumnSpecify is the amount of columns for PDF417.
  • RowSpecify is the amount of rows for PDF417.
  • PDFTruncate is the truncate PDF417.
Symbology Associated .rpt File Parameters (may be modified within the formula)
Code-39 Native - Code 39.rpt DataToEncode, BarHeight, N_Dimension and IncludeCheckDigit
Code 93 Native - Code 93.rpt DataToEncode and BarHeight
Codabar Native - Codabar.rpt DataToEncode, BarHeight, N_Dimension, CodabarStart and CodabarStop
Code-128 Auto Native - Code 128 Auto.rpt DataToEncode, BarHeight and ApplyTilde
Code 128 A Native - Code 128 A.rpt DataToEncode and BarHeight
Code 128 B Native - Code 128 B.rpt DataToEncode and BarHeight
Code 128 C Native - Code 128 C.rpt DataToEncode and BarHeight
GS1 DataBar Native - GS1 DataBar.rpt DataToEncode, BarHeight (Should be either 13, 24 or 34) and Segs
Interleaved 2-of-5 Native - Interleaved 2 of 5.rpt DataToEncode, BarHeight, N_Dimension and IncludeCheckDigit
MSI Native - MSI.rpt DataToEncode, BarHeight, N_Dimension and IncludeCheckDigit
Data Matrix Native - DataMatrix.rpt DataToEncode, processTilde, PreferredFormat and EncodingMode
PDF417 Native - PDF417.rpt DataToEncode, EccLevel, ColumnSpecify, RowSpecify and PDFTruncate
QR-Code Native - QR-Code.rpt DataToEncode, ProcTilde, Version, EncMode and ErrorCorrectionLevel
USPS Intelligent Mail (IMb) Native - USPS IntelligentMail.rpt DataToEncode As String
USPS Postnet Native - Postnet.rpt DataToEncode and IncludeCheckDigit
  • HRI Options - The HRI object may be used with all ApplyTilde options to display GS1 element strings or format text for HIBC or ISBT.
    GS1-128 encoding: ~20201095011010209171719050810ABCD1234
    GS1-128 Example
    GS1-DataMatrix encoding: ~101095011010209171719050810ABCD1234
    GS1-DataMatrix Example

Technical Support

Free product support may be obtained by reviewing the knowledgebase articles that are documented below and by searching resolved public forum threads. Priority phone, email and forum support is also provided within 30 days of purchase. Additional phone, email and forum support is provided with an active Priority Support and Upgrade Subscription.

Popular Forum Post Resolutions:
Common Problems and Solutions:
  • If scanning problems are encountered, verify a printer of 600 DPI or greater is being utilized. A large point size such as 5 points must be used with low-resolution printers. IDAutomation also offers many barcode fonts that print well to low-resolution printers.
  • Ensure the barcode can fit in the object. If the width of the barcode is larger than the object, several white lines will appear.
    Truncated barcode object
  • The font selected for the object should be "Consolas", "Courier New," "Lucida Console" or other mono-spaced Unicode fonts.
    Barcode is created with Unicode Font.
    A proportional font may also be used for some linear barcode types; however, it is not recommended. If a proportional font is used, change MonoSpaceFont = True to MonoSpaceFont = False in the formula.
    The font may be adjusted with more precision, such as with the USPS Intelligent Mail Barcode, within the Format Editor - Font dialog. In most versions of Crystal Reports, this dialog is opened by right-clicking on the field and choosing the Format Field option.
    Setting the font size in the format editor.
  • If several small question marks appear instead of a barcode when creating a PDF for performing other conversions of the report, it is an indication that the component performing the conversion is not Unicode compliant. In this situation, contact the component vendor to obtain an updated or Unicode compliant version.
  • In the event white lines appear in the barcode, highlight the object and choose Format - Field - Paragraph. Adjust the line spacing to the largest size that eliminates white lines in the symbol. Generally, the setting of 0.8 to 0.95 is used for the "Courier New" font.
    Set the line spacing at .08.
  • If a 2D DataMatrix or QRCode symbol is not an accurate square, try using the mono-spaced font "Consolas", a default font on a Windows machine and set the line spacing under the Paragraph tab at .95 or .99 times normal.
    set the line spacing under the Paragraph
  • To remove line spacing in the image of the Data Matrix on the screen, try using the mono-spaced font "Consolas" and set the line spacing at .99 times normal.
  • The Data Matrix and PDF417 Generators provided in the 2D version may generate slowly because of the complex algorithms used in these symbologies. IDAutomation recommends encoding 50 characters or less when using these symbologies. More data may be encoded, although the report may take longer to generate. To quickly generate 2D barcodes in Crystal Reports, use the supplied UFL in the IDAutomation Data Matrix Font and Encoder or the PDF417 Font and Encoder.
  • If an error such as "A string is required" appears, the data will need to be converted to a string with a crystal function.
    For example: DataToEncode = cStr( {Table1_.NumberField1},0 )
  • Crystal Crashes when Running a Report with the QR Code Hybrid: The QRCode Hybrid UFL has been updated to include error logging capability which saves IDAutomation_UFL_Error.log in %temp% if generation errors occur. If this occurs, provide IDAutomation Support the contents of this log file for a solution.

* Due to limitations within Crystal Reports formulas, complex barcode types such as the USPS Intelligent Mail, require the installation of the IDAutomation UFL (version 2015 or later) to perform most of the complex calculations required for proper barcode generation. Installation of this UFL is automatic when running the installer for this product. In addition, a silent installer is provided with all developer licenses of this product to easily install the UFL when distributing reports.