Sunday, March 27, 2011

Create PDF from DataTable in Asp.net

In this article ,i am explaining you how to create pdf file from datatable.i am passing a datatable in this function and code to convert this in pdf file.

I am using iTextSharp you can download it from internet. it is free.
you need to create a simple asp.net page and get data from database.Then pass it to ExportToPDF method.We can set PDF page margins, change page orientation (portrait, landscape), customize headers and footers add page numbers and more.Do some R & D with iTextSharp.


 public void ExportToPdf(DataTable myDataTable)  
{
Document pdfDoc = new Document(PageSize.A4, 10, 10, 10, 10);
try
{
PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);
pdfDoc.Open();
Chunk c = new Chunk("" + System.Web.HttpContext.Current.Session["CompanyName"] + "", FontFactory.GetFont("Verdana", 11));
Paragraph p = new Paragraph();
p.Alignment = Element.ALIGN_CENTER;
p.Add(c);
pdfDoc.Add(p);
string clientLogo = System.Web.HttpContext.Current.Session["CompanyName"].ToString();
clientLogo = clientLogo.Replace(" ", "");
string clogo = clientLogo + ".jpg";
string imageFilePath = System.Web.HttpContext.Current.Server.MapPath("../ClientLogo/" + clogo + "");
iTextSharp.text.Image jpg = iTextSharp.text.Image.GetInstance(imageFilePath);
//Resize image depend upon your need
jpg.ScaleToFit(80f, 60f);
//Give space before image
jpg.SpacingBefore = 0f;
//Give some space after the image
jpg.SpacingAfter = 1f;
jpg.Alignment = Element.HEADER;
pdfDoc.Add(jpg);
Font font8 = FontFactory.GetFont("ARIAL", 7);
DataTable dt = myDataTable;
if (dt != null)
{
//Craete instance of the pdf table and set the number of column in that table
PdfPTable PdfTable = new PdfPTable(dt.Columns.Count);
PdfPCell PdfPCell = null;
for (int rows = 0; rows < dt.Rows.Count; rows++)
{
for (int column = 0; column < dt.Columns.Count; column++)
{
PdfPCell = new PdfPCell(new Phrase(new Chunk(dt.Rows[rows][column].ToString(), font8)));
PdfTable.AddCell(PdfPCell);
}
}
//PdfTable.SpacingBefore = 15f; // Give some space after the text or it may overlap the table
pdfDoc.Add(PdfTable); // add pdf table to the document
}
pdfDoc.Close();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment; filename= SampleExport.pdf");
System.Web.HttpContext.Current.Response.Write(pdfDoc);
Response.Flush();
Response.End();
//HttpContext.Current.ApplicationInstance.CompleteRequest();
}
catch (DocumentException de)
{
System.Web.HttpContext.Current.Response.Write(de.Message);
}
catch (IOException ioEx)
{
System.Web.HttpContext.Current.Response.Write(ioEx.Message);
}
catch (Exception ex)
{
System.Web.HttpContext.Current.Response.Write(ex.Message);
}
}

Thanks & Regards
Santosh Singh

18 comments:

  1. Hi azeem i found the article very useful for me can u help me how to add header and footer with page numbers in ur code.
    thanks in advance.

    ReplyDelete
  2. Thanks sir, it is really very useful article.

    ReplyDelete
  3. Thanks so much, its very useful.

    ReplyDelete
  4. good article, good job...
    http://dotnet-qa.blogspot.in/

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. Amazing. Thank you so much!

    If anyone else has tried other examples and keep getting the error about "Input string was not in a correct format." when calling "htmlparser.Parse(sr);". Then use this method instead. Works Brilliantly!

    ReplyDelete
  7. Thank you so much!

    ReplyDelete
  8. where i should put this code? under button_click event or page_load event.
    i tried with button but it says [ Object reference not set to an instance of an object ]

    ReplyDelete
  9. Hi,

    I tried the sample code in my project. It didn't gave me error on the code but suddenly popup up exception in jquery. No details of that exception either. The pdf also didn't showed up.

    Can canbody help?

    ReplyDelete
  10. Generating a PDF from a DataTable in ASP.NET requires libraries like iTextSharp or PdfSharp. What Encryption Military Transforming tabular data into a structured PDF document offers dynamic reporting capabilities.

    ReplyDelete