TEST

Blog Pages

Wednesday, August 25, 2010

Convert Html to Pdf using iTextSharp

This is iTestSharp 4.1.2 version and in Asp.net(C#)

Add the iTestSharp dll by adding it as Add Reference into your project and then you create a aspx,ascx page and write the below code into a function and call it from any event or add this function name into page_load event.


using System;
using System.IO;
using System.Configuration;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Collections;
using iTextSharp.text;
using System.Data;
using iTextSharp.text.html;
using iTextSharp.text.pdf;
using System.Web;

private void GeneratePdf()

{

Console.WriteLine("Report");

MemoryStream m = new MemoryStream();

//Response.ContentType = "application/pdf";

//Response.AddHeader("content-disposition", "attachment;filename=VisualROOF Inspection.pdf");

//Response.Cache.SetCacheability(HttpCacheability.NoCache);

// step 1: creation of a document-object

Document document = new Document();


try
{
// step 2

// we create a writer that listens to the document

// and directs a PDF-stream to a file

//PdfWriter writer = PdfWriter.GetInstance(document, Response.OutputStream); PdfWriter writer = PdfWriter.GetInstance(document, m);

writer.CloseStream = false;
// step 3:

// we Add a Footer that will show up on PAGE 1

Paragraph para = new Paragraph("©2009 NRCIA",FontFactory.GetFont(FontFactory.TIMES_ROMAN, 10, iTextSharp.text.Font.NORMAL,new Color(102,45,25)));

para.Add(Environment.NewLine);

para.Font =FontFactory.GetFont(FontFactory.HELVETICA, 8, iTextSharp.text.Font.NORMAL,new Color(237,28,36));

para.Add("This document is not a certification");

HeaderFooter footer = new HeaderFooter(para, false);

footer.Alignment = Element.ALIGN_CENTER;

document.Footer = footer;
// we open the document

document.Open();
// we rotate the page and add background image, starting from PAGE 2 document.SetPageSize(PageSize.A4.Rotate());

document.SetMargins(10f,10f,10f,10f);
// step 4: we Add content to the document

// PAGE 1

//add image into pdf

Image pdfImage = Image.GetInstance(Server.MapPath("/images/reports/inspection/InspectionReportImage.jpg"));

pdfImage.ScaleToFit(3500, 845);

pdfImage.Alignment = iTextSharp.text.Image.UNDERLYING; pdfImage.SetAbsolutePosition(2, -5);

document.Add(pdfImage);
// Empty table for spacing

PdfPTable emptytable = new PdfPTable(3);

emptytable.TotalWidth = 560f;

emptytable.HorizontalAlignment = Element.ALIGN_CENTER;

emptytable.LockedWidth = true;

PdfPCell cell1 = new PdfPCell();

cell1.Padding = 60;

cell1.Colspan = 3;

cell1.Border = 0;

emptytable.AddCell(cell1);

document.Add(emptytable);

///actual table for data

/// PdfPTable table = new PdfPTable(3);

table.TotalWidth = 400f;

table.HorizontalAlignment = Element.ALIGN_CENTER;

table.LockedWidth = true;

float[] widths = new float[] { 30f, 50f,50f };

//set the column widths

table.SetWidths(widths);

// Report No header name for cell
PdfPCell cell = new PdfPCell(new Phrase("Report No:", new Font(fBoldHeading, 10, 0, new Color(102, 45, 25))));

cell.HorizontalAlignment = 0; //0=Left, 1=Centre, 2=Right

cell.Border = 0;

table.AddCell(cell);
// header Prepared Exclusively for cell

cell = new PdfPCell(new Phrase("Prepared Exclusively for:", new Font(fBoldHeading, 10, 0, new Color(102, 45, 25))));

cell.HorizontalAlignment =1; //0=Left, 1=Centre, 2=Right

cell.Border = 0;

table.AddCell(cell);
cell = new PdfPCell(new Phrase(ReportNo, new Font(fBoldHeading, 10, 0, new Color(0, 0, 0))));

cell.HorizontalAlignment = 0; //0=Left, 1=Centre, 2=Right

cell.Border = 0;

table.AddCell(cell);
// Prepared Exclusively Value for cell

cell = new PdfPCell(new Phrase(objInspMgt.PreparedFor, new Font(fBoldHeading, 10, 0, new Color(0, 0, 0))));

cell.HorizontalAlignment = 1; //0=Left, 1=Centre, 2=Right

cell.Border = 0;

table.AddCell(cell);
//Add table to Document for First Page

document.Add(table);
//we remove the footer and new footer for page 2

document.ResetFooter();

// we reset the page numbering

//document.ResetPageCount();
// we Add a Footer that will show up on PAGE 2

Phrase para1 = new Phrase("©2009 This document is not a certification.", FontFactory.GetFont(FontFactory.TIMES_ROMAN, 8, iTextSharp.text.Font.NORMAL, new Color(237, 28, 36)));

string spce = " ";

footer = new HeaderFooter(para1, false);

footer.Alignment = Element.ALIGN_CENTER;

footer.Border = Rectangle.TOP_BORDER;

footer.BorderWidthTop = 2;

footer.BorderColorTop = new Color(58, 38, 5);

footer.Bottom = 20f;

document.Footer = footer;
// set page size for all pages

document.SetPageSize(PageSize.A4);

document.SetMargins(10f, 10f, 0f, 10f);
// we trigger a page break Table OF CONTENT

document.NewPage();

// we Add some more content

}
catch (DocumentException de)
{
Console.Error.WriteLine(de.Message);
}
catch (IOException ioe)
{
Console.Error.WriteLine(ioe.Message);
}
// step 5: we close the document

document.Close();

// step 6: Write pdf bytes to outputstream

//Response.Write(document);

//Response.End();

Response.ContentType = "application/pdf";

Response.OutputStream.Write(m.GetBuffer(), 0, m.GetBuffer().Length); Response.OutputStream.Flush();

Response.OutputStream.Close();

m.Close();

}