This article show and learns about how to generate the ticket using c#.net. This describe the how actually ticket (bus ticket) is generate what it will use any how it work
This article presents a solution to solving ticket generation problem using C# and Visual Studio 2010.This application is multipurpose application. This article is use full for many purpose for example city bus ticket generation, store retail ticket generation, in fair for rider tickets etc. This application will solve problem of how to print ticket, how to set margin of text for ticketetc.
Follow the Steps:
Step -1
In this tutorial first you have to add namespace
using System.Drawing.Printing;
now start with fist make object of the print document ‘pd’.this will make one document on which you have to draw or write content
PrintDocument pd = new PrintDocument();
Then you have to make object of the paper size this will take arguments as name, width, height this define the size of your ticket
PaperSize ps = new PaperSize("", 420, 540);
The you have to generate ‘pageprinteventhandler’ this event is use for the add text content and other in to the ticket . You have to write in this event
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
void pd_PrintPage(object sender, PrintPageEventArgs e)
{
‘’ write your code
}
Step - 2
Now write code for what you have to add in ticket
a) First of all make object of the graphics this is for draw the graphics in ticket .
Graphics g = e.Graphics;
b) Now we have to draw the rectangle so we write code soothing like. here ‘DrawRectangle’ take four arguments (color of rectangle, x-axis, y-axis, width, height)
g.DrawRectangle(Pens.Black,5,5,410,530);
c) now we have to add ticket title in to ticket, here we take image for the title so first we have to copy our image into project folder and then give path of this image to our function ‘Drawimage’ function with parameter as(image _path, x-axis, y-axis)
string title = Application.StartupPath+"\\CBT_Title.png";
g.DrawImage(Image.FromFile(title),50,7);
d) now we want to add text to the ticket so fist we make object of the font with parameter (Font_name, Font_size, Font_Style)
and also add we make object of the solid brush this is for the color of the font
Font fBody = new Font("Lucida Console", 15, FontStyle.Bold);
SolidBrush sb = new SolidBrushColor.Black);
e) now we add text to the ticket so we use ‘DrawString()’ function to add string in ticket so we now add “dotted line” to the ticket so code is like and it take arguments (“Your_Text”,font_object, Solid_Object, x-asix, y-axis)
g.DrawString("------------------------------",fBody1,sb, 10, 120);
f) now we add date, time by sing same as above function ‘DrawString’
g.DrawString("Date :", fBody,sb, 10, SPACE); g.DrawString(DateTime.Now.ToShortDateString(), fBody1, sb, 90, SPACE); g.DrawString("Time :", fBody, sb, 10, SPACE+30); g.DrawString(DateTime.Now.ToShortTimeString(), fBody1, sb, 90, SPACE +30)
now we add ticket number which is generate by random number function and add to the ticket and also we have to generate the barcode for the this ticket number
so we have to first add one DLL to our project which is used to generate the barcode code :
Random RandomNumber = new Random();
int no = RandomNumber.Next(1000, 9999);
belove code generate the barcode for the given number with parameter (barcode_type, Barcode_number, barcode_color,color,width,height)
Image imgBarcode = BarcodeLib.Barcode.DoEncode(BarcodeLib.TYPE.CODE128, no.ToString(),true,Color.Black,Color.White,200,60);
g.DrawImage(imgBarcode, 10, SPACE + 240);
Now code for draw the ticket and ticket number
g.DrawString("TicketNo.:", fBody, sb, 10, SPACE+60);
g.DrawString(no.ToString(), fBody1, sb, 150, SPACE + 60);
now we have to draw bus number ,bus route, number of passenger, prize of ticket, total rupee, helpline number, notice
g.DrawString("BusNo.:", fBody, sb, 10, SPACE+90 );
g.DrawString(txtBusNo.Text, fBody1, sb, 100, SPACE + 90);
g.DrawString("Route:", fBody, sb, 10, SPACE+120);
g.DrawString(cbRoute.SelectedItem.ToString(), fBody1, sb, 100, SPACE + 120);
int price = Convert.ToInt32(txtMember.Text) * Convert.ToInt32(txtPrice.Text);
string price1=txtMember.Text +" X "+ txtPrice.Text +" = "+price.ToString();
g.DrawString("Full:", fBody, sb, 10, SPACE+150);
g.DrawString(price1, fBody1, sb, 80, SPACE + 150);
g.DrawString("Rs."+price.ToString()+".00", rs, sb, 10, SPACE + 180);
g.DrawString(TType,fTType, sb, 230, 120);
g.DrawString("HelplineNo.: +91 9999999999", fBody2,sb, 15, 465);
g.DrawString("* NOT TRANSFERABLE", fBody2, sb, 15, 485);
g.Dispose();
finally we have to dispose the graphics object
The Compelete Code
void pd_PrintPage(object sender, PrintPageEventArgs e)
{
int SPACE = 145;
string title = Application.StartupPath+"\\CBT_Title.png";
string barcode = Application.StartupPath + "\\code128bar.jpg";
Graphics g = e.Graphics;
g.DrawRectangle(Pens.Black,5,5,410,530);
string TType = "S";
if (rbReturn.Checked)
{
TType = "R";
}
g.DrawImage(Image.FromFile(title),50,7);
Font fBody = new Font("Lucida Console", 15, FontStyle.Bold);
Font fBody1 = new Font("Lucida Console", 15, FontStyle.Regular);
Font fBody2 = new Font("Lucida Console", 9, FontStyle.Regular);
Font rs = new Font("Stencil", 25, FontStyle.Bold);
Font fTType = new Font("", 150, FontStyle.Bold);
SolidBrush sb = new SolidBrush(Color.Black);
g.DrawString("------------------------------",fBody1,sb, 10, 120);
g.DrawString("Date :", fBody,sb, 10, SPACE);
g.DrawString(DateTime.Now.ToShortDateString(), fBody1, sb, 90, SPACE);
g.DrawString("Time :", fBody, sb, 10, SPACE+30);
g.DrawString(DateTime.Now.ToShortTimeString(), fBody1, sb, 90, SPACE + 30);
Random RandomNumber = new Random();
int no = RandomNumber.Next(1000, 9999);
//System.IO.File.Delete(Application.StartupPath + "\\code128bar.jpg");
Image imgBarcode = BarcodeLib.Barcode.DoEncode(BarcodeLib.TYPE.CODE128, no.ToString(),true,Color.Black,Color.White,200,60);
// imgBarcode.Save(Application.StartupPath + "\\code128bar.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
g.DrawString("TicketNo.:", fBody, sb, 10, SPACE+60);
g.DrawString(no.ToString(), fBody1, sb, 150, SPACE + 60);
g.DrawString("BusNo.:", fBody, sb, 10, SPACE+90 );
g.DrawString(txtBusNo.Text, fBody1, sb, 100, SPACE + 90);
//g.DrawString("DriverName:", fBody, sb, 10, SPACE+120);
//g.DrawString(txtDriveName.Text, fBody1, sb, 153, SPACE + 120);
g.DrawString("Route:", fBody, sb, 10, SPACE+120);
g.DrawString(cbRoute.SelectedItem.ToString(), fBody1, sb, 100, SPACE + 120);
// price Calculation
int price = Convert.ToInt32(txtMember.Text) * Convert.ToInt32(txtPrice.Text);
string price1=txtMember.Text +" X "+ txtPrice.Text +" = "+price.ToString();
g.DrawString("Full:", fBody, sb, 10, SPACE+150);
g.DrawString(price1, fBody1, sb, 80, SPACE + 150);
g.DrawString("Rs."+price.ToString()+".00", rs, sb, 10, SPACE + 180);
g.DrawString(TType,fTType, sb, 230, 120);
//g.DrawImage(Image.FromFile(barcode), 10, SPACE+240);
g.DrawImage(imgBarcode, 10, SPACE + 240);
g.DrawString("HelplineNo.: +91 9999999999", fBody2,sb, 15, 465);
g.DrawString("* NOT TRANSFERABLE", fBody2, sb, 15, 485);
g.Dispose();
}
Step – 3
Now we have to set the margine of the page and then apply the page size to the our document object,then apply print command
pd.PrintController = new StandardPrintController();
pd.DefaultPageSettings.Margins.Left = 0;
pd.DefaultPageSettings.Margins.Right = 0;
pd.DefaultPageSettings.Margins.Top = 0;
pd.DefaultPageSettings.Margins.Bottom = 0;
pd.DefaultPageSettings.PaperSize = ps;
pd.Print();
Cell no: +91-9429579777
The blog was absolutely fantastic! Lot of information about ticket printing Malaysia is helpful in some or the other way. Keep updating the blog, looking forward for more content...Great job, keep it up.
ReplyDeleteI am glad with the information that you provided, this is very useful. Thank you for posting. Such accurate blogs are very hard to find. But I have website with the same content visit to know further details on our Printing Malaysia Services.
ReplyDeleteNo matter the generated barcode in C# is used in which industry, you only need to choose do more with less than the most cost-effective dynamic link library file.
ReplyDelete