Introduction

In this example we are exporting Gridview data populated with Sql Server Database to Pdf using iTextSharp.

This is the html source of the page in which i've created a gridview and a Export Button to export Grid View data to Pdf file.

gridviewcontrol.gif

The complete code of Register.aspx.cs Page in Code Behind

using System;
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.Adapters;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data;
using System.Text;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;

public partial class Register : System.Web.UI.Page
{
BAL objBAL = new BAL();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
fillgrid();
}
}
public void fillgrid()
{
DataSet ds = new DataSet();
ds = objBAL.Fill_Grid();//Function defined in BAL Class
grdDetail.DataSource = ds;
grdDetail.DataBind();

}
protected void btnExport_Click(object sender, EventArgs e)
{
const string attachment = "attachment; filename= grdDetail.pdf";

Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/pdf";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ClearContent();

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grdDetail.RenderControl(htw);

StringReader
sr = new StringReader(sw.ToString());

Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);

HTMLWorker htmlparser = new HTMLWorker(pdfDoc);

PdfWriter.GetInstance(pdfDoc, Response.OutputStream);

pdfDoc.Open();
htmlparser.Parse(sr);
pdfDoc.Close();

Response.Write(pdfDoc);
Response.End();
}
public override void VerifyRenderingInServerForm(Control control)
{
}
}

App_Code BAL.cs

using System;
using System.Web;
using System.Collections.Generic;
using System.Linq;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.Adapters;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Data;

public class BAL
{
public BAL()
{
//
// TODO: Add constructor logic here
//
}

#region "variable"

#region "Properties"
#region "Functions"

public DataSet Fill_Grid()
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SELECT * from RegisterInfo", conn);
cmd.CommandType = CommandType.Text;
SqlDataAdapter adap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adap.Fill(ds);
return ds;
}
#endregion
}

Note: If in case code works well but pdf still do not generated. Please put EnableEventValidation="false" in source code of Register.aspx.