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:
- Load the Barcode Font
- Create an image object
- Draw a string into that image using a code39 barcode font
- 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);