C# Barcode Generator WebService

Introduction

Some days ago, I was asked to find a solution to create a barcode to be printed on documents produced by a web application. After trying to find some components that produced barcodes, I soon realized that their price was very high when dealing with an unlimited number of clients licences. I needed an alphanumeric barcode representation and the preferred barcode representation was Code39.

In order to expose this service to the maximum of clients while delivering a standardized solution, I thought of writing a web service that would generate the barcode dynamically and return it streamlined as an image.

This article describes the solution that I�ve implemented.

The Barcode Generation

Instead of writing a code39 barcode generator that mimics the algorithm for that barcode representation, my idea was to use one of the freely available barcode fonts to produce the barcode (http://www.squaregear.net/fonts/free3of9.shtml).

So my approach was simple:

  1. Load the Barcode Font
  2. Create an image object
  3. Draw a string into that image using a code39 barcode font
  4. Return that image serialized.

Using the Code39 Font...

The way to use a font in windows is simple, all you have to do is install it (by copying it to the c:\WINDOWS\Fonts - under XP) and just use it.

Unfortunately, the ASP.NET graphic context does not allow you to use any font  (free3of9.ttf for example) because .NET GDI only uses/enumerates OpenType fonts. So what you have to do is create a temporary font object.

This method is very straighforward, as you can see in the code sample below:

代码
// Create a private font collectionobjectPrivateFontCollection
pfc=new PrivateFontCollection();
// Load in the temporary barcode
fontpfc.AddFontFile("c:\\barcodefont\\free3of9.ttf");
// Select the font family to useFontFamily
family=new FontFamily("Free 3 of 9",pfc);
// Create the font object with size 30
Font c39Font=new Font(family,30);


 

相关文章: