Sudharsan .p

Sudharsan .p

  • NA
  • 10
  • 5.4k

export html file to pdf

Jun 10 2014 3:36 AM
this code show gridview only 
how show hello.html  also in pdf



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

public partial class _Default : System.Web.UI.Page
{
    private SqlConnection con;
    private SqlCommand com;
    private string constr, query;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {


        }
    }

    public override void VerifyRenderingInServerForm(Control control)
    {
        //required to avoid the runtime error "
        //Control 'GridView1' of type 'GridView' must be placed inside a form tag with runat=server."
    }


    //constr = ConfigurationManager.ConnectionStrings["getconn"].ToString();
    //con = new SqlConnection(constr);
    //con.Open();




    //strHtml = strHtml.Replace("\r\n", "");

    protected void Button1_Click(object sender, EventArgs e)
    {

        string strHtml = string.Empty;
        string htmlFileName = Server.MapPath("~") + "\\files\\" + "hello.html";
        FileStream fsHTMLDocument = new FileStream(htmlFileName, FileMode.Open, FileAccess.Read);
        StreamReader srHTMLDocument = new StreamReader(fsHTMLDocument);
        OpenFile(htmlFileName);
        strHtml = srHTMLDocument.ReadToEnd();
        srHTMLDocument.Close();
        string path = Server.MapPath("PDF-file");
        Response.ContentType = "application/pdf";
        string filename = Request.PhysicalApplicationPath + "content-disposition" + "attachment;filename=ProjectDetails.pdf";
        ExportGridToword(strHtml, filename);
    }
    private void ExportGridToword(string HtmlStream, string FileName)
    {
        object TargetFile = FileName;
        string ModifiedFileName = string.Empty;
        string FinalFileName = string.Empty;


        string path = Server.MapPath("PDF-file");


        Response.ContentType = "application/pdf";

        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        this.Page.RenderControl(hw);
        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);
        TestPDF.HtmlToPdfBuilder builder = new TestPDF.HtmlToPdfBuilder(iTextSharp.text.PageSize.A4);
        TestPDF.HtmlPdfPage first = builder.AddPage();
        first.AppendHtml(HtmlStream);
        byte[] file = builder.RenderPdf();
        File.WriteAllBytes(TargetFile.ToString(), file);

        iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(TargetFile.ToString());
        ModifiedFileName = TargetFile.ToString();
        ModifiedFileName = ModifiedFileName.Insert(ModifiedFileName.Length - 4, "1");
        string password = "password";
        iTextSharp.text.pdf.PdfEncryptor.Encrypt(reader, new FileStream(ModifiedFileName, FileMode.Append), iTextSharp.text.pdf.PdfWriter.STRENGTH128BITS, password, "", iTextSharp.text.pdf.PdfWriter.AllowPrinting);
        reader.Close();
        if (File.Exists(TargetFile.ToString()))
            File.Delete(TargetFile.ToString());
        FinalFileName = ModifiedFileName.Remove(ModifiedFileName.Length - 5, 1);
        File.Copy(ModifiedFileName, FinalFileName);
        if (File.Exists(ModifiedFileName))
            File.Delete(ModifiedFileName);
        pdfDoc.Open();

        htmlparser.Parse(sr);
        //   pdfDoc.AppendHtml(HtmlStream);
        pdfDoc.Close();
        Response.Write(pdfDoc);
        Response.End();
        GridView1.AllowPaging = true;
        GridView1.DataBind();
    }

}


Answers (5)