Tuesday, 2 July 2013

Create Simple PDF File Using iTextSharp Library

In this article I will show you how to create a simple PDF file using the iTextsharp library.

iTextSharp

iTextSharp is a library that allows you to create and manipulate PDF documents.

It enables developers looking to enhance web applications and other applications with dynamic PDF document generation and/or manipulation.

Before proceeding you should have the iTextSharp library file.

You can download the iTextSharp.dll from http://itextpdf.com/download.php.
  1. Open VisualStudio and then create a new ASP.NET web application.
  2. Add a reference to the iTextSharp.dll file to your project.
  3. Add the following namespaces before proceeding: 
using System;
using iTextSharp.text.pdf;
using System.IO;
using iTextSharp.text;
using System.Diagnostics;
  1. In the designer, drag and drop two buttons as follows:
    iTextSharp.jpg
     
  2. For the Generate PDF File button, write the following code to generate the PDF file:protected void btnGeneratePDFFile_Click(object sender, EventArgs e)
{
    //Create document
    Document doc = new  Document();
    
//Create PDF Table
    PdfPTable tableLayout = new PdfPTable(4);

    //Create a PDF file in specific path
    PdfWriter.GetInstance(doc, new FileStream(Server.MapPath("Sample-PDF-File.pdf"), FileMode.Create));

    //Open the PDF document
    doc.Open();

    //Add Content to PDF
    doc.Add(Add_Content_To_PDF(tableLayout));

    // Closing the document
    doc.Close();

    btnOpenPDFFile.Enabled = true;
    btnGeneratePDFFile.Enabled = false;
}
private PdfPTable Add_Content_To_PDF(PdfPTable tableLayout)
{
    float[] headers = { 20, 20, 30, 30 };  //Header Widths
    tableLayout.SetWidths(headers);        //Set the pdf headers
    tableLayout.WidthPercentage = 80;       //Set the PDF File witdh percentage

   //Add Title to the PDF file at the top
   tableLayout.AddCell(new PdfPCell(new Phrase("Creating PDF file using iTextsharp"new Font(Font.HELVETICA, 13, 1, new iTextSharp.text.Color(153, 51, 0)))) { Colspan = 4, Border = 0, PaddingBottom = 20, HorizontalAlignment = Element.ALIGN_CENTER });         

   //Add header
   AddCellToHeader(tableLayout, "Cricketer Name");
   AddCellToHeader(tableLayout, "Height");
   AddCellToHeader(tableLayout, "Born On");
   AddCellToHeader(tableLayout, "Parents");           

   //Add body
   AddCellToBody(tableLayout, "Sachin Tendulkar");
   AddCellToBody(tableLayout, "1.65 m");
   AddCellToBody(tableLayout, "April 24, 1973");
   AddCellToBody(tableLayout, "Ramesh Tendulkar, Rajni Tendulkar");

   AddCellToBody(tableLayout, "Mahendra Singh Dhoni");
   AddCellToBody(tableLayout, "1.75 m");
   AddCellToBody(tableLayout, "July 7, 1981");
   AddCellToBody(tableLayout, "Devki Devi, Pan Singh");

   AddCellToBody(tableLayout, "Virender Sehwag");
   AddCellToBody(tableLayout, "1.70 m");
   AddCellToBody(tableLayout, "October 20, 1978");
   AddCellToBody(tableLayout, "Aryavir Sehwag, Vedant Sehwag");

   AddCellToBody(tableLayout, "Virat Kohli");
   AddCellToBody(tableLayout, "1.75 m");
   AddCellToBody(tableLayout, "November 5, 1988");
   AddCellToBody(tableLayout, "Saroj Kohli, Prem Kohli");

   return tableLayout;
}

// Method to add single cell to the header
private static void AddCellToHeader(PdfPTable tableLayout,string cellText)
{          
    tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.HELVETICA, 8, 1, iTextSharp.text.Color.WHITE))) {HorizontalAlignment = Element.ALIGN_CENTER, Padding=5, BackgroundColor =new iTextSharp.text.Color(0, 51, 102) });
}

// Method to add single cell to the body
private static void AddCellToBody(PdfPTable tableLayout, string cellText)
{           
    tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.HELVETICA, 8, 1, iTextSharp.text.Color.BLACK))) { HorizontalAlignment = Element.ALIGN_CENTER,Padding = 5, BackgroundColor = iTextSharp.text.Color.WHITE });
}

Don't be confused by the code above, I am extracting the methods for reusability purposes.

I will explain whats happening in the preceding methods.

btnGeneratePDFFile_Click

In this method I am creating the PDF file in a specific location. Then I am calling the Add_Content_To_PDF method.

Add_Content_To_PDF

In this method I am giving the sizes of the cells as well as PDF file width and then I am adding content to the PDF file usigng the two methods AddCellToHeader and AddCellToBody.

AddCellToHeader

In this mehtod I am adding a single cell to the PDF header with some style.

AddCellToBody

In this mehtod I am adding a single cell to the PDF body with some style. 
  1. Now in the Open PDF button click write the following code to open the PDF that has been created:protected void btnOpenPDFFile_Click(object sender, EventArgs e)
    {
        //Open the PDF file
        Process.Start(Server.MapPath("Sample-PDF-File.pdf"));
        btnGeneratePDFFile.Enabled = true;
        btnOpenPDFFile.Enabled = false;
    }

  2. Save the files and run the project. Click on Generate PDF; your PDF file will be generated. Then click on the Open PDF file, you will get the created PDF. 
  3. If your code is not working download the project from here Download
So in this way we can create a PDF simply by using the iTextSharp library.

No comments: