Monday, September 19, 2011

Convert html to pdf using i text sharp

First u download the i text sharp dll from internet

and then





namespace

using System.Data;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html;
using System.Collections;
using System.Text;
using System.Net;
using System.IO;
using System.Configuration;



//------- Function for generate pdf ---
    private void newpdf()
    {
        Document doc = new Document(PageSize.A4);
        DataTable dtPDFfile = new DataTable();
        DataTable dt = new DataTable();

            dt.Columns.Add("link", typeof(System.String));
            dt.Columns.Add("Property_name", typeof(System.String));
            dt.Columns.Add("Street_address", typeof(System.String));
            dt.Columns.Add("walia", typeof(System.String));




            for (Int32 i = 0; i < 30; i++)
            {

                DataRow dr = dt.NewRow();
                dr["link"] = "text5";
                dr["Property_name"] = "walia";
                dr["Street_address"] = "sachin";
                dr["walia"] = "sachin";
                dt.Rows.Add(dr);

            }

        //PdfWriter.GetInstance(document, new FileStream(Server.MapPath(".") + "/pdf/test" + guid + ".pdf", FileMode.Create));
        // string strPath = ConfigurationManager.AppSettings["Pdfpath"].ToString();



            string strPath = Server.MapPath("test.pdf");
        dtPDFfile = dt;

        if (dtPDFfile.Rows.Count > 0)
        {
            CreatePdfReport(dtPDFfile, "", strPath, "sachin");
        }
    }
 //---------------------
 public void CreatePdfReport(DataTable dt, string headerText, string filepath, string filename)
    {

        HttpContext.Current.Response.ContentType = "Application/pdf";
        Document document = new Document(PageSize.A4.Rotate(), 50, 50, 50, 50);
        int numColumns = 0;
        if (dt.Columns.Count > 0)
        {
            numColumns = dt.Columns.Count;
        }
        PdfPTable datatable = new PdfPTable(numColumns);
        //string strPathImage = DateTime.Now.Year.ToString() + "" + DateTime.Now.Month.ToString() + "" + DateTime.Now.Day.ToString() + "" + DateTime.Now.Hour.ToString() + "" + DateTime.Now.Minute.ToString() + "" + DateTime.Now.Second.ToString() + "Image." + strExtension;
        // set image path for header image 
        //PdfWriter.GetInstance(document, new FileStream(Environment.GetFolderPath
        //(Environment.SpecialFolder.Desktop) + "\\TimeScheduler"+DateTime.Now.Year.ToString() + "" + DateTime.Now.Month.ToString() + "" + DateTime.Now.Day.ToString() + "" + DateTime.Now.Hour.ToString() + "" + DateTime.Now.Minute.ToString() + "" + DateTime.Now.Second.ToString() +".pdf", FileMode.Create));
        string imagepath = Server.MapPath("logo.gif");
        PdfWriter.GetInstance(document, new FileStream(filepath + "timescheduler.pdf", FileMode.Create, FileAccess.ReadWrite));
        //PdfWriter.GetInstance(document, new FileStream(filepath, FileMode.Create));
        document.Open();
        // set header image
        iTextSharp.text.Image image = iTextSharp.text.Image.GetInstance(imagepath);
        image.Alignment = iTextSharp.text.Image.ALIGN_CENTER;
        //PdfPCell cell = new PdfPCell(image);
        //image.HorizontalAlignment = PdfPCell.ALIGN_MIDDLE;
        // set spacing betwwen table and header image         
        image.SpacingAfter = 20f;
        //image.SpacingBefore = 10f;
        image.ScalePercent(80f);
        document.Add(image);
        Phrase headerPhrase = new Phrase(headerText, FontFactory.GetFont("Verdana", 28));
        HeaderFooter header = new HeaderFooter(headerPhrase, false);
        header.Border = Rectangle.NO_BORDER;
        header.Alignment = Element.ALIGN_CENTER;
        document.Header = header;
        document.Add(headerPhrase);
        HeaderFooter footer = new HeaderFooter(new Phrase("Page "), true);
        footer.Border = Rectangle.NO_BORDER;
        footer.Alignment = Element.ALIGN_CENTER;
        document.Footer = footer;
        float[] columnWidths = { 18, 40, 40, 40 };

        datatable.SetWidths(columnWidths);
        datatable.DefaultCell.Padding = 4;
        datatable.WidthPercentage = 100; // percentage
        datatable.DefaultCell.HorizontalAlignment = Element.ALIGN_LEFT;
        datatable.DefaultCell.BorderWidth = 1;
        datatable.DefaultCell.GrayFill = 0.7f;
        datatable.SpacingBefore = 50f;



        foreach (DataColumn column in dt.Columns)
        {
            string columnName = column.ColumnName;
            Phrase phrase = new Phrase(columnName, FontFactory.GetFont("Tahoma", 20, Font.BOLD));
            datatable.DefaultCell.GrayFill = 0.9f;
            datatable.AddCell(phrase);
        }

        datatable.HeaderRows = 1;

        foreach (DataRow row in dt.Rows)
        {
            foreach (DataColumn column in dt.Columns)
            {
                string columnName = column.ColumnName;
                Phrase phrase = new Phrase(row[columnName].ToString(), FontFactory.GetFont("Arial", 18));
                datatable.DefaultCell.GrayFill = 10f;
                datatable.AddCell(phrase);
            }

        }
        document.Add(datatable);
        document.Close();
        HttpContext.Current.Response.ContentType = "Application/pdf";
        HttpContext.Current.Response.WriteFile(filepath + "timescheduler.pdf");
        HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".pdf");
        HttpContext.Current.Response.TransmitFile(filepath + "timescheduler.pdf");
        HttpContext.Current.Response.End();

    }



No comments:

Post a Comment