Bar Code Recognition Specifics
- 5 minutes to read
This document describes the main specifics of barcode recognition and how to resolve the most frequently encountered issues when working with bar codes.
Choose an Appropriate Bar Code Type
Appropriate barcode type (symbology) selection depends on your specific business requirements and the applied industrial standards.
Insert the Function Code One Character (FNC1) or the Application Identifier into a Bar Code
Some encodings enable you to insert a special FNC1 character for separating application identifiers from the rest of the barcode.
According to the GS1 specification, the FNC1 character is always inserted at the first position of the encoded data. Other identifiers can be inserted manually using the default “#“ character.
Although you can use any ASCII character as the FNC1 placeholder, it will not be a part of the encoded data as it does not have any direct ASCII representation.
For the Code 128 symbology, only FNC1 characters are currently supported. At present, there is no way to define FNC2 - 4 characters for this barcode in DevExpress products.
For the list of the available application identifiers, refer to the official documentation at www.gs1.org.
Specify the Bar Code Resolution on Export to Third-Party Formats
At present, only export to PDF preserves the original barcode in its vector form. Export to other formats will keep only the rasterized version of a barcode (with the default DPI set to 96).
For XLSX and XLS export, the output resolution can be set up manually using the PageByPageExportOptionsBase.RasterizationResolution property.
Use Bar Codes in Point-of-Sale (POS) Systems
DevExpress Reporting is built on top of the .NET Framework, which does not provide out-of-the-box support for any matrix and thermal printers.
To access the internal printer fonts or achieve the fastest printing speed possible, use the native approach suggested by the printer manufacturer. Typically, a manufacturer would provide a special series of control commands that should be directly sent to a printer’s port. In some cases, the printer may also come with a proprietary graphical Report Designer.
Bar Code Validation
After specifying barcode settings, you can make sure that the resulting barcode will be properly rendered in a document by calling the Validate method of a corresponding class:
When validation fails (indicating that the barcode is not rendered), the control displays an error message corresponding to one of the PreviewStringId enumeration values.
This section includes solutions to the most common issues that you may encounter during bar code creation.
The barcode is too “dense”
The more information you wish to encode, the more bars should be drawn and the larger the barcode should become.
The XRBarCode.Module property specifies the width of the narrowest bar in a barcode. Although you can set this property to a very small Double value, the actual value is determined by the maximum resolution of your barcode printer device. Alternatively, consider using the XRBarCode.AutoModule option to automatically calculate the optimal bar size based on the current barcode dimensions.
When bar codes are “dense” and you are manually specifying the Module value, make sure that multiplying this value by the barcode printer resolution results in an integer number. Otherwise, rounding errors may occur on calculating the resulting bar width.
For example, when the Module is set to 0.015 inches and the printer resolution is 300 DPI, their product equals 4.5, which may be rounded to 4 or 5 pixels for different bars and result in barcode recognition errors. In this case, the Module property should be set to 0.01333 (to make the bar width equal to 4 pixels) or to 0.01667 (to make the bar width equal to 5 pixels).
The barcode is correctly displayed on the preview page but it is not scanned
Make sure that your scanner has been correctly set up to be able to recognize a specific kind of a barcode. If you are not certain about how to operate the scanner properly, please refer to its product manual.
Avoid scanning bar codes from the monitor screen (e.g., using an application installed on your smartphone), because the screen DPI may not be sufficient to effectively recognize each particular bar.
The barcode is correctly displayed on the preview page but it is scanned incorrectly
The cause for this problem may be an encoding issue specific to the “binary” input mode.
By default, the .NET Framework and all String objects leverage the UTF-16 encoding (see Character Encoding in the .NET Framework). However, your scanner device may use a different encoding model or even a codepage (i.e., a specific table that maps abstract values to real human-understandable characters). For additional information on this subject, please refer to the specification of your scanner device.
The “There are invalid characters in the text” error occurs
To avoid this error, remove characters that are not supported by the barcode symbology.
- Set the barcode’s CompactionMode property to Binary (Byte for QR Code).
- Assign the text to the barcode’s Text property.
The assigned text is converted into a sequence of bytes in UTF-8 and this sequence is used to encode the barcode.
You can also convert the text into a sequence of bytes manually and then assign the sequence to the barcode’s BinaryData property to use this sequence to encode the barcode.