Articles
FAQs
Login
How to take print-outs in ASP.net 2.0
By Kalit Sikka
Access over 40 UI widgets with everything from interactive menus to rich charts.
How to take print-outs in ASP.net 2.0
public
class
WebPrinting
{
/************************************************
* Topic : How to take print-outs in ASP.net 2.0
* Author : kalit sikka
* For : http://eggheadcafe.com
* **********************************************/
protected
StringReader stringToPrint;
protected
Font printFont;
#region
constructor
public
WebPrinting()
{
}
#endregion
/// <summary>
/// To Create page for priting
/// </summary>
/// <param name="printerName">PrinterName</param>
/// <param name="pageTitle">PageTitle</param>
public
void
PageCreate(
string
printerName,
string
pageTitle)
{
StringBuilder sb =
new
StringBuilder();
string
qs =
""
;
try
{
// start creating page with title and date/time
sb.Append(pageTitle +
"\n\n"
);
sb.Append(
"DateTime: "
+ DateTime.Now.ToString()+
"\n\n"
);
string
fieldValue;
// iterate submitted form fields, also gets field name
foreach
(
string
fieldName
in
HttpContext.Current.Request.Form )
{
// exclude viewstate and submit button
if
(fieldName ==
"__VIEWSTATE"
|| fieldName ==
"Submit"
){}
else
{
// get the field value
fieldValue = HttpContext.Current.Request.Form[fieldName] ;
// builds the querystring for results.aspx
qs = qs +
"&"
+ fieldName +
"="
+ fieldValue;
// adds the field name and value to the page
// breaks the field value into 50 character segments so it will fit on the paper
// this example only accounts for fields of l50 characters or less
// issue: breaks in the middle of words instead of at spaces
if
(fieldValue.Length > 100)
{
sb.Append(fieldName +
": "
+ fieldValue.Substring(0,50) +
"\n"
);
sb.Append(
" "
+ fieldValue.Substring(50,50) +
"\n"
);
sb.Append(
" "
+ fieldValue.Substring(100,fieldValue.Length - 100) +
"\n"
);
}
else
if
(fieldValue.Length > 50)
{
sb.Append(fieldName +
": "
+ fieldValue.Substring(0,50) +
"\n"
);
sb.Append(
" "
+ fieldValue.Substring(50,fieldValue.Length - 50) +
"\n"
);
}
else
{
sb.Append(fieldName +
": "
+ fieldValue +
"\n"
);
}
}
}
// place stringbuilder in string reader
stringToPrint =
new
StringReader(sb.ToString());
// set font and size here
printFont =
new
Font(
"Arial"
, 12);
PrintDocument doc =
new
PrintDocument();
// set the printer name
doc.PrinterSettings.PrinterName = printerName;
// add print page event handler
doc.PrintPage +=
new
PrintPageEventHandler(
this
.PagePrint);
// print the page
doc.Print();
// adds status to querystring
qs =
"Results.aspx?"
+ qs.Substring(1,qs.Length-1) +
"&Status=Success"
;
}
catch
{
qs =
"Results.aspx?Status=Failed"
;
}
finally
{
stringToPrint.Close() ;
}
// redirects to result.aspx
HttpContext.Current.Response.Redirect(qs);
}
/// <summary>
/// Print the page method
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private
void
PagePrint(
object
sender, PrintPageEventArgs e)
{
float
linesPerPage = 0 ;
float
linePosition = 0 ;
int
lineCount = 0 ;
float
leftMargin = e.MarginBounds.Left;
float
topMargin = e.MarginBounds.Top;
String line=
null
;
// gets the number of lines per page
linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics) ;
// iterate lines in string
while
(lineCount < linesPerPage && ((line=stringToPrint.ReadLine()) !=
null
))
{
// set line postion from top margin
linePosition = topMargin + (lineCount * printFont.GetHeight(e.Graphics));
// print line
e.Graphics.DrawString (line, printFont, Brushes.Black, leftMargin,linePosition,
new
StringFormat());
lineCount++;
}
// are there more lines?
if
(line !=
null
)
e.HasMorePages =
true
;
else
e.HasMorePages =
false
;
}
}
}
Test.aspx:
<%@ Page Language=
"C#"
%>
<%@ outputcache location=
"None"
%>
<script runat=
"server"
>
void
Submit_Click(
object
sender, EventArgs e) {
CsXml.FormPrint.WebPrinting wp =
new
CsXml.FormPrint.WebPrinting();
wp.PageCreate(
"HP 1200"
,
"TEST FORM"
);
}
</script>
<html>
<head>
<title>Test Form</title>
</head>
<body>
<form runat=
"server"
>
<table>
<tbody>
<tr>
<td colspan=
"2"
>
<strong>Test Form</strong></td>
</tr>
<tr>
<td>
First Name</td>
<td>
<asp:TextBox id=
"FirstName"
runat=
"server"
></asp:TextBox>
</td>
</tr>
<tr>
<td>
Last Name</td>
<td>
<asp:TextBox id=
"LastName"
runat=
"server"
></asp:TextBox>
</td>
</tr>
<tr>
<td colspan=
"2"
>
<asp:Button id=
"Submit"
onclick=
"Submit_Click"
runat=
"server"
Text=
"Submit"
></asp:Button>
</td>
</tr>
</tbody>
</table>
</form>
</body>
</html>
Popularity
(
1631 Views
)