Friday, 4 March 2016

Create PDF from html with Radio Buttons, Textbox & other controls in

Introduction :
The main focus of the article is to learn how to create PDF from HTML in ASP.NET using C#. We can use iTextSharp for this purpose, but problem occurs when we need to show radio button of webpage on PDF.  iTextSharp has some limitation. It is not easy to achieve this using iTextSharp.
One solution is to use Paid API or Use free community versions of these PDF generator.
In this article I am using Select.PDF to convert ASP.NET webpage to PDF using C#. Community Version of the PDF generator is free and enough to complete our basic needs.

Follow These steps:

Download  Select.HtmlToPdf.dllSelect.Html.dep  from this link:

To install Select.Pdf Html To Pdf Converter for .NET - Community Edition (FREE), run the following command in the Package Manager Console

PM> Install-Package Select.HtmlToPdf

Now Design your application:

Add a form in your application like as given below:

HTML of Sample Webpage:

<html xmlns="">
<head runat="server">
    <form id="form1" runat="server">
        <asp:Panel ID="pnlPerson" runat="server">      
             <div>Generate PDF of HTML in ASP.NET</div>
        <tr><td colspan="4"><strong>1. Select Radio Button from given Below</strong></td></tr>
<td><asp:RadioButton ID="rdb1" Text="Radio1" runat="server" Font-Italic="True" GroupName="1a" /> </td>
<td><asp:RadioButton ID="rdb2" Text="Radio2" runat="server" Font-Italic="True" GroupName="1a" />
<td><asp:RadioButton ID="rdb3" Text="Radio3" runat="server" Font-Italic="True" GroupName="1a" />
<td><asp:RadioButton ID="rdb4" Text="Radio4" runat="server" Font-Italic="True" GroupName="1a" />
 <tr><td colspan="4">&nbsp;</td></tr>
          <tr><td colspan="4"><strong>2 </strong>Enter Data in Following TextBox </td></tr>
          <tr><td colspan="2">
              <asp:TextBox ID="textbox1" runat="server" Width="200px"></asp:TextBox>

            <td colspan="4">
                <p class="MsoNormal">
                    In this article I am using Select.PDF to convert ASP.NET webpage to PDF using C#. Community Version of the PDF generator is free and enough to complete our basic needs.</p>
             <asp:Button ID="btnExport" runat="server" OnClick="btnExport_Click" Text="Export" Width="73px" />

Now write the following code in Code behind:

Add Following Namespace:
using System.Text;
using System.Threading;
using System.IO;
using SelectPdf;

Now write following Code on Button Click Event:

protected void btnExport_Click(object sender, EventArgs e)
        var sb_htmlCode = new StringBuilder();
        pnlPerson.RenderControl(new HtmlTextWriter(new StringWriter(sb_htmlCode)));
        string htmlCode = sb_htmlCode.ToString();

         // read parameters from the webpage
            string htmlString = htmlCode;
            string baseUrl = "";

            string pdf_page_size ="A4";
            PdfPageSize pageSize = (PdfPageSize)Enum.Parse(typeof(PdfPageSize),
                pdf_page_size, true);

            string pdf_orientation = "Portrait";
            PdfPageOrientation pdfOrientation =
                pdf_orientation, true);

            int webPageWidth = 800;
                webPageWidth = Convert.ToInt32(800);
            catch { }

            int webPageHeight = 0;
                webPageHeight = Convert.ToInt32("");
            catch { }

            // instantiate a html to pdf converter object
            HtmlToPdf converter = new HtmlToPdf();

            // set converter options
            converter.Options.PdfPageSize = pageSize;
            converter.Options.PdfPageOrientation = pdfOrientation;
            converter.Options.WebPageWidth = webPageWidth;
            converter.Options.WebPageHeight = webPageHeight;

            // create a new pdf document converting an url
            PdfDocument doc = converter.ConvertHtmlString(htmlString, baseUrl);

            // save pdf document
            doc.Save(Response, false, Server.MapPath("~/output.pdf"));

            // close pdf document


Input Page:
Click Image to Enlarge View

Output PDF:

Click Image to Enlarge View