Export Div Content To PDF Using ITextSharp

In this article you will learn how to export content which is inside in div to pdf using iTextSharp.

This article explains how to export content in a div to a PDF using iTextSharp.

What is ITextSharp

iTextSharp is a free and open source assembly that helps to convert page output or HTML content in A PDF file.

You can download IT from here,

Now add that DLL to the application.

Getting Started

Start Visual Studio and create a new website in ASP.Net and add these 2 DLLs to the solution.

  • Itextsharp.dll
  • itextsharp.pdfa.dll

Now add these namespaces:

  • using iTextSharp.text; 
  • using iTextSharp.text.pdf;
  • using iTextSharp.text.html;
  • using iTextSharp.text.html.simpleparser;
  • using System.Data.SqlClient;
  • using System.Configuration;

This is my div content,

  1. <div id="employeelistDiv" runat="server">  
  2.     <table border="1">  
  3.         <tr>  
  4.             <td colspan="2"> <b>Employee Detail</b> </td>  
  5.         </tr>  
  6.         <tr>  
  7.             <td><b>EmployeeID:</b></td>  
  8.             <td>  
  9.                 <asp:Label ID="lblEmployeeId" runat="server"></asp:Label>  
  10.             </td>  
  11.         </tr>  
  12.         <tr>  
  13.             <td><b>FirstName:</b></td>  
  14.             <td>  
  15.                 <asp:Label ID="lblFirstName" runat="server"></asp:Label>  
  16.             </td>  
  17.         </tr>  
  18.         <tr>  
  19.             <td><b>LastName:</b></td>  
  20.             <td>  
  21.                 <asp:Label ID="lblLastName" runat="server"></asp:Label>  
  22.             </td>  
  23.         </tr>  
  24.         <tr>  
  25.             <td><b>City:</b></td>  
  26.             <td>  
  27.                 <asp:Label ID="lblCity" runat="server"></asp:Label>  
  28.             </td>  
  29.         </tr>  
  30.         <tr>  
  31.             <td><b>Region:</b></td>  
  32.             <td>  
  33.                 <asp:Label ID="lblState" runat="server"></asp:Label>  
  34.             </td>  
  35.         </tr>  
  36.         <tr>  
  37.             <td><b>Postal Code:</b></td>  
  38.             <td>  
  39.                 <asp:Label ID="lblPostalCode" runat="server"></asp:Label>  
  40.             </td>  
  41.         </tr>  
  42.         <tr>  
  43.             <td><b>Country:</b></td>  
  44.             <td>  
  45.                 <asp:Label ID="lblCountry" runat="server"></asp:Label>  
  46.             </td>  
  47.         </tr>  
  48.     </table>  
  49. </div>  
  50. <asp:Button ID="btnExport" runat="server" Text="Export" OnClick="btnExport_Click" />  

Code behind

  1. protected void Page_Load(object sender, EventArgs e) {  
  2.     if (!IsPostBack) {  
  3.         string ConString = ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString;  
  4.         SqlConnection con = new SqlConnection(ConString);  
  5.         SqlCommand cmd = new SqlCommand();  
  6.         cmd.CommandText = "SELECT TOP 1 EmployeeID, LastName, FirstName, Title, BirthDate, City, Region, PostalCode, Country FROM Employees";  
  7.         cmd.Connection = con;  
  8.         con.Open();  
  9.         DataTable dt = new DataTable();  
  10.         dt.Load(cmd.ExecuteReader());  
  11.         if (dt.Rows.Count > 0) {  
  12.             //Bind Datatable to Labels  
  13.             lblEmployeeId.Text = dt.Rows[0]["EmployeeID"].ToString();  
  14.             lblFirstName.Text = dt.Rows[0]["FirstName"].ToString();  
  15.             lblLastName.Text = dt.Rows[0]["LastName"].ToString();  
  16.             lblCity.Text = dt.Rows[0]["City"].ToString();  
  17.             lblState.Text = dt.Rows[0]["Region"].ToString();  
  18.             lblPostalCode.Text = dt.Rows[0]["PostalCode"].ToString();  
  19.             lblCountry.Text = dt.Rows[0]["Country"].ToString();  
  20.         }  
  21.         con.Close();  
  22.     }  
  23. }  
  24. protected void btnExport_Click(object sender, EventArgs e) {  
  25.     Response.ContentType = "application/pdf";  
  26.     Response.AddHeader("content-disposition""attachment;filename=Panel.pdf");  
  27.     Response.Cache.SetCacheability(HttpCacheability.NoCache);  
  28.     StringWriter stringWriter = new StringWriter();  
  29.     HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);  
  30.     employeelistDiv.RenderControl(htmlTextWriter);  
  31.     StringReader stringReader = new StringReader(stringWriter.ToString());  
  32.     Document Doc = new Document(PageSize.A4, 10 f, 10 f, 100 f, 0 f);  
  33.     HTMLWorker htmlparser = new HTMLWorker(Doc);  
  34.     PdfWriter.GetInstance(Doc, Response.OutputStream);  
  35.     Doc.Open();  
  36.     htmlparser.Parse(stringReader);  
  37.     Doc.Close();  
  38.     Response.Write(Doc);  
  39.     Response.End();  
  40. }  
  41. public override void VerifyRenderingInServerForm(Control control) {}  

img1.jpg

Image 1.

img2.jpg

Image 2.

For more information, download the attached sample application.