TechTalk by Aravinda

Share This Using Popular Bookmarking Services

Bar Code Printing

Bar Code Printing

 

Load the Barcode Font ( you can download from any website)

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

 

See the sample below to print bar codes.

 

The Barcode Generation

You can write a code39 barcode generator that mimics the algorithm for the barcode representation

Or  use one of the freely available barcode fonts to produce the barcode (http://www.squaregear.net/fonts/free3of9.shtml).

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 collection
 
objectPrivateFontCollection pfc=new
                PrivateFontCollection();
 
 
 
// Load in the temporary barcode
    font
 
pfc.AddFontFile("c:\\barcodefont\\free3of9.ttf");
 
 
 
// Select the font family to use
 
FontFamily family=new
                FontFamily("Free 3 of 9",pfc);
 
 
 
// Create the font object with size
    30
 
Font c39Font=new
                Font(family,30);

With this easy way, you get a font object mapped to the barcode font so that you can create the barcode.

Creating the Barcode Image Container

The image creation is very simple. .NET classes allow you to generate images on the fly. So, in order to create a image large enough to accommodate the barcode, first you need to determine the size that will be occupied by the code string drawing, using the barcode font.

You can do it using the MeasureStringmethod:

 
// Create a temporary bitmap...
 
Bitmap tmpBitmap = 
            newBitmap(1,1,PixelFormat.Format32bppArgb);
 
objGraphics = Graphics.FromImage(tmpBitmap);
 
// measure the barcode size...
 
SizeF barCodeSize=objGraphics.MeasureString(barCodeString,c39Font);

The returned type barCodeSizehas the width, and the height that will be occupied by the code string drawing.

Draw the Barcode

So now we need to draw the barcode. We will use the code39 barcode font object instantiated earlier.

Assuming the the barcode variable holds the barcode string, the required code is:

 
// Draw the barcode
 
objGraphics.DrawString(barCode, Code39Font, newsolidBrush(Color.Black),0,0);

Please note that usualy the code39 barcodes are represented concatenating  the char (*) at the beginning and end of the barcode string…meaning that code 123456 has to be written as *123456*. But I will leave that to your experience.

Serialize/Deserialize the Image

In order to return the image from the web service method, you now have to serialize the image, meaning that your web method has to return an array of bytes.

This way, you have to create a stream from the bitmap image, and return it as an array of bytes. Once again, the .NET framework makes it easy for us do perform that task:

 
// Create stream....
 
MemoryStream ms = 
            newMemoryStream();
 
 
 
// save the image to the stream
 
objBitmap.Save(ms ,ImageFormat.Png);
 
 
 
//return an array of bytes....
 
returnms.GetBuffer();

On the other end (the client side) when you are consuming the web service, you need to be able to deserialize the array of bytes back to the image:

 
Byte[] imgBarcode;
 
 
 
// Call the webservice to create
    the barcode...
 
 
 
// Create a stream....
 
MemoryStream memStream = 
        newMemoryStream(imgBarcode);
 
 
 
// Recreate the image from the stream
            Bitmap bmp=new Bitmap(memStream);

A final note about the sample code attached…

After creating the barcode web app that will be your webservice, you need to configure the web.config file in order to specify where your barcode font is located. Search for the following section and make your changes accordingly.

 
 
    <appSettings>
 
 
       <add key="BarCodeFontFile" value="c:\temp\font\FREE3OF9.TTF" />
 
 
       <add key="BarCodeFontFamily" value="Free 3 of 9" />    
       
 
 
    </appSettings>
Site Map | Printable View | © 2008 - 2012 www.aravinda.in | Powered by mojoPortal | HTML 5 | CSS | Design by jQueryUI