Export to Pdf using iTextSharp in Share Point

Leave a Comment
Hi All,

below example is used to export the HTML to PDF. In my case i am preparing one dynamic string builder which have fully loaded content and exporting the same to Pdf by using the iTextSharp.

You need to add the iTextSharp.dll to your solution and add Namespace to your webpart.

using iTextSharp;
using iTextSharp.text;
using iTextSharp.text.html;
using iTextSharp.text.html.simpleparser;
using iTextSharp.text.pdf;

       public void ExportPdf()
        {
            try
            {
                iTextSharp.text.Rectangle rect = PageSize.A4;
                Document pdfDocument = new Document(rect, 10f, 10f, 50f, 0f);
                MemoryStream ms = new MemoryStream();
                PdfWriter writer = PdfWriter.GetInstance(pdfDocument, ms);
                pdfDocument.Open();

                // Add Heading for the PDF

                pdfDocument.Add(new iTextSharp.text.Phrase("Title of the PDF" + "\n\n",
                iTextSharp.text.FontFactory.GetFont("Arial", 12, iTextSharp.text.Font.BOLD)));
                HTMLWorker htmlWorker = new HTMLWorker(pdfDocument);

                // Assign the styles for the html
                StyleSheet styles = new StyleSheet();
                styles.LoadTagStyle("th", "size", "12px");
                styles.LoadTagStyle("th", "text-align","center");
                styles.LoadTagStyle("th", "face", "Arial");
                styles.LoadTagStyle("span", "size", "8px");
                styles.LoadTagStyle("span", "face", "Arial");
                styles.LoadTagStyle("td", "size", "8px");
                styles.LoadTagStyle("td", "face", "Arial");
                styles.LoadTagStyle("p", "size", "8px");
                styles.LoadTagStyle("p", "face", "Arial");               
                styles.LoadTagStyle(HtmlTags.TABLE, HtmlTags.ALIGN, HtmlTags.ALIGN_TOP);
                styles.LoadTagStyle(HtmlTags.TABLE, HtmlTags.BORDERWIDTH, "0.3");
                styles.LoadTagStyle("th", HtmlTags.ALIGN, HtmlTags.ALIGN_CENTER);
                htmlWorker.SetStyleSheet(styles);
                byte[] byteArray = Encoding.UTF8.GetBytes(html.ToString());

                MemoryStream stream = new MemoryStream(byteArray);
                StreamReader reader = new StreamReader(stream);
                float pageWidth = rect.Width;
                // foreach (IElement element in ie)
                foreach (IElement element in HTMLWorker.ParseToList(reader, styles))
                {
                    PdfPTable table = element as PdfPTable;
                    pdfDocument.Add(element);
                }
                pdfDocument.NewPage();
                pdfDocument.Close();
                HttpContext.Current.Response.ContentType = "application/pdf";
                string fileName = ProjectName + ".pdf";
                HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename= " + fileName + "");
                HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
                HttpContext.Current.Response.OutputStream.Write(ms.GetBuffer(), 0, ms.GetBuffer().Length);
                HttpContext.Current.Response.OutputStream.Flush();
            }
            catch (Exception ex)
            {
                //Exception Handling
            }
        }

Related Post

0 comments:

Post a Comment