Technical FAQs

Question

I am trying to deploy my ImageGear Pro ActiveX project and am receiving an error stating

The module igPDF18a.ocx failed to load

when registering the igPDF18a.ocx component. Why is this occurring, and how can I register the component correctly?

Answer

To Register your igPDF18a.ocx component you will need to run the following command:

regsvr32 igPDF18a.ocx

If you receive an error stating that the component failed to load, then that likely means that regsvr32 is not finding the necessary dependencies for the PDF component.

The first thing you will want to check is that you have the Microsoft Visual C++ 10.0 CRT (x86) installed on the machine. You can download this from Microsoft’s site here:

https://www.microsoft.com/en-us/download/details.aspx?id=5555

The next thing you will want to check for is the DL100*.dll files. These files should be included in the deployment package generated by the deployment packaging wizard if you included the PDF component when generating the dependencies. These files must be in the same folder as the igPDF18a.ocx component in order to register it.

With those dependencies, you should be able to register the PDF component with regsvr32 without issue.

Get Up and Running Faster with Barcode Xpress

Barcodes remain the basis for product identification and tracking, improving both operational insight and the end-user experience. From common applications in grocery stores to more advanced deployments in warehouses, legal firms, and even post-secondary schools, barcodes are the ubiquitous bridge between digital and physical environments. 

As noted by Forbes, emerging pandemic pressures have precipitated the return of a familiar code framework, the QR code. Now used by retail stores and restaurants to enable touchless product identification and payment, this rapid code renaissance is a stark reminder that codes remain a key driver of long-term operational success. However, not all barcode reader tools are created equal. Some struggle to handle damaged or deformed barcodes, others limit the type and nature of the codes they scan, and many full-featured solutions come with significant complexity around installation, integration, and ease-of-use.

Barcode Xpress offers the best of both worlds. Here’s what developers need to know.


What is Barcode Xpress?

Accusoft’s Barcode Xpress makes it easy for users to read, write, and detect over 30 different barcodes with a single software development kit (SDK). Barcode Xpress supports:

  • 1D Barcodes Including Add-2, Add-5, Code 39, GS1 and UCC
  • 2D BarcodesSuch as Aztec, Data Matrix, PDF417 and QR codes
  • Postal CodesFrom PLANET and PostNet to Royal Mail and the Australia Post 4-State Code
  • Patch Codes Including Patch 1, 2, 3, 4 (Toggle), 6 and Transfer

Barcode Xpress also reports confidence values for detected codes, reads supported barcodes in any orientation in milliseconds, and can intelligently handle poorly-printed, damaged, or badly-scanned barcode images. This SDK is also available in six development environments, including:

  • .NET
  • .NET Core
  • ActiveX
  • Java
  • Linux
  • Node.js

 Basic Barcode Requirements

Deployment environments for Barcode Xpress must leverage one of the following x64 Windows versions:

  • Windows 8.1
  • Windows 10 Version 1607 and later
  • Windows Server 2008 R2 SP1 and later
  • Windows Server 2012, 2016 or 2019

The SDK can also be deployed on x64 Linux operating systems including:

  • Ubuntu 18.04 or 16.04
  • CentOS 8 or 7
  • Debian 9 or 10

When it comes to Barcode Xpress development environments, requirements include Microsoft .NET Core 2.1 or later along with Java Runtime Environment 1.8 or later for License Manager and Server Licensing Utilities, along with Visual Studio 2017 or later (optional).


Ease of Installation

To streamline installation, Barcode Xpress .NET Core can be deployed via NuGet package or using a zip file provided by Accusoft. In both cases, developers require a valid license to use the SDK. Explore the different license types here.

Evaluation licenses allow your team to explore Barcode Xpress features bounded by timeouts and watermarks. Toolkit licenses remove pop-ups, time outs, and watermarks to enable in-depth development, while Runtime licenses are required to distribute your application.


Navigating NuGet

The simplest way to deploy Barcode Xpress is using the NuGet package manager for Microsoft development platform in Visual Studio. All of Accusoft’s NuGet packages can be found at nuget.org. Find the NuGet Barcode Express .NET package here.

To install the NuGet package, follow these steps:

  1. Open the NuGet Package Manager in Visual Studio.
  2. In the newly-opened window, ensure the Package Source is set to nuget.org and select the Barcode Xpress package.
  3. After selection and installation, look for the newly-added assemblies in your References folder.
  4. Add using [namespace] to any CS/VB file you’d like to reference these NuGet libraries.

Need more help? Check out the official NuGet tutorials


 Creating a Command Line

Ready to tackle your first project in Barcode Xpress? Here’s a step-by-step guide to building a complete C# application that analyzes 1D barcodes using Visual Studio.

1.Create a new Console App project in .NET core:

2. Add the Barcode Xpress SDK:

 

3. Add any required Microsoft dlls for the project. In this case, look for System.Drawing.Common at nuget.org, or add them locally if they’re already present as references in your development environment.

 

4. Add using statements to your generated Program.cs:Program.cs

 

using System;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;
namespace MyProject
{
...

5. Create any necessary instances of Accusoft.BarcodeXpressSDK.BarcodeXpress and System.Drawing.BitmapProgram.cs

 


using System;
using System.Drawing;
using Accusoft.BarcodeXpressSdk;
namespace MyProject
{
    class Program
    {
        static void Main(string[] args)
        {
            BarcodeXpress barcodeXpress = new BarcodeXpress();
            System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
        }
    }
}

6. Pass this bitmap to Barcode Xpress and access the returned resultsProgram.cs

 


…
namespace MyProject
{
     class Program
     {
         static void Main(string[] args)
         {
             BarcodeXpress barcodeXpress = new BarcodeXpress();

             System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
          
             Accusoft.BarcodeXpressSdk.Result[] results = barcodeXpress.reader.Analyze(bitmap);
          
             if (results.Length > 0)
             {
                 foreach (Accusoft.BarcodeXpressSdk.Result result in results)
                 {
                     Console.WriteLine("{0} : {1}", result.BarcodeType.ToString(), result.BarcodeValue);
                 }
             }
             else
             {
                 Console.WriteLine("No Barcodes Found.");
             }
         }
     }

7. Finally, clean up your code by using the Dispose() methodProgram.cs


…
namespace MyProject
{
    class Program
    {
         static void Main(string[] args)
         {
             BarcodeXpress barcodeXpress = new BarcodeXpress();

             System.Drawing.Bitmap bitmap = new Bitmap("barcode.bmp");
          
             Accusoft.BarcodeXpressSdk.Result[] results = barcodeXpress.reader.Analyze(bitmap);
          
             if (results.Length > 0)
             {
                 foreach (Accusoft.BarcodeXpressSdk.Result result in results)
                 {
                     Console.WriteLine("{0} : {1}", result.BarcodeType.ToString(), result.BarcodeValue);
                 }
             }
             else
             {
                 Console.WriteLine("No Barcodes Found.");
             }
             barcodeXpress.Dispose();
         }
     }

Ongoing Improvements

Barcode Xpress isn’t a new offering — it’s been part of the Accusoft SDK lineup for more than 15 years. However, John Reynolds, Principal Engineer for Barcode Xpress, recently took a look at the code to improve its functionality. In his whitepaper, Refactoring Legacy Code for Speed in Barcode Xpress, he found that when repeatedly scanning a barcode in a particular direction, the count length of black/white runs in the same direction. 

As a result, continually calculating the mask and data pointers for each coordinate is cumbersome, but also allows for potential shortcuts, such as keeping a running tally of the mask across the image. Applied in depth, this and other code legacy code changes have helped improve 1D barcode analysis times from 5% to 60%, depending on the image.

Barcode Xpress offers comprehensive code recognition that’s easy to implement and customize, while ongoing improvements help streamline SDK deployment, enhance operational speed, and empower software engineers in various markets. Discover the benefits of Barcode Xpress. Download a free trial or try an online demo today.

Question

How do I change between machine print and hand print recognition in the SmartZone v2 SDK?

Answer

Please refer to the specific code samples listed below:

1) If you are using the .NET control the Classifier property is set as follows according to the type of recognition you are performing (MachinePrint or HandPrint).


SmartZone2.Reader.Classifier = Classifier.MachinePrint;
 
SmartZone2.Reader.Classifier = Classifier.HandPrint;
 

2) If you are using the ActiveX control the Classifier property is set as follows according to the type of recognition you are performing (MachinePrint or HandPrint).


SmartZone1.Classifier = SZ_ClassifierMachinePrint

SmartZone1.Classifier = SZ_ClassifierHandPrint

Question

How do I change the classifier to read a specific language in SmartZone v2

Answer

Please refer to the specific code samples below:

1) If you are using the .NET control you set the Language property. For example:


SmartZone2.Reader.CharacterSet.Language = Language.WesternEuropean;

2) If you are using the ActiveX control you set the CharacterSetLanguage property. For example:


SmartZone1.CharacterSetLanguage = SZ_WesternEuropeanLanguages