In this article, we will learn how to use iTextSharp in .NET Core
What is iTextSharp?
iTextSharp is a free and open-source assembly that helps to convert page output or HTML content into a PDF file.
Implementation
- Create New Asp.Net Core MVC Application.
- Install Package iTextSharp.
- Create Class Customer.
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Used_iTextSharper.Models { public class Customer { public int CustomerId { get; set; } public string CustomerName { get; set; } public string Address { get; set; } public string Email { get; set; } public string ZipCode { get; set; } } }
- Write below Code in Controller.
using iTextSharp.text; using iTextSharp.text.pdf; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Used_iTextSharper.Models; namespace Used_iTextSharper.Controllers { public class CustomerController : Controller { public IActionResult Index() { return View(); } public ActionResult Customers() { return View(customerData()); } public FileResult CreatePdf() { MemoryStream workStream = new MemoryStream(); StringBuilder status = new StringBuilder(""); DateTime dTime = DateTime.Now; string strPDFFileName = string.Format("CustomerDetailPdf" + dTime.ToString("yyyyMMdd") + "-" + ".pdf"); Document doc = new Document(); doc.SetMargins(0, 0, 0, 0); PdfPTable tableLayout = new PdfPTable(4); doc.SetMargins(10, 10, 10, 0); PdfWriter.GetInstance(doc, workStream).CloseStream = false; doc.Open(); BaseFont bf = BaseFont.CreateFont(BaseFont.TIMES_ROMAN, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); iTextSharp.text.Font fontInvoice = new iTextSharp.text.Font(bf, 20, iTextSharp.text.Font.NORMAL); Paragraph paragraph = new Paragraph("Customers Detail", fontInvoice); paragraph.Alignment = Element.ALIGN_CENTER; doc.Add(paragraph); Paragraph p3 = new Paragraph(); p3.SpacingAfter = 6; doc.Add(p3); doc.Add(Add_Content_To_PDF(tableLayout)); doc.Close(); byte[] byteInfo = workStream.ToArray(); workStream.Write(byteInfo, 0, byteInfo.Length); workStream.Position = 0; return File(workStream, "application/pdf", strPDFFileName); } protected PdfPTable Add_Content_To_PDF(PdfPTable tableLayout) { float[] headers = { 50, 24, 45, 35 }; //Header Widths tableLayout.SetWidths(headers); //Set the pdf headers tableLayout.WidthPercentage = 100; //Set the PDF File witdh percentage tableLayout.HeaderRows = 1; var count = 1; //Add header AddCellToHeader(tableLayout, "CustomerName"); AddCellToHeader(tableLayout, "Address"); AddCellToHeader(tableLayout, "Email"); AddCellToHeader(tableLayout, "ZipCode"); foreach (var cust in customerData()) { if (count >= 1) { //Add body AddCellToBody(tableLayout, cust.CustomerName.ToString(),count); AddCellToBody(tableLayout, cust.Address.ToString(), count); AddCellToBody(tableLayout, cust.Email.ToString(), count); AddCellToBody(tableLayout, cust.ZipCode.ToString(),count); count++; } } return tableLayout; } private static void AddCellToHeader(PdfPTable tableLayout, string cellText) { tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.FontFamily.HELVETICA, 8, 1, BaseColor.BLACK))) { HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8, BackgroundColor = new iTextSharp.text.BaseColor(255, 255, 255) }); } private static void AddCellToBody(PdfPTable tableLayout, string cellText,int count) { if (count % 2 == 0) { tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.FontFamily.HELVETICA, 8, 1, iTextSharp.text.BaseColor.BLACK))) { HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8, BackgroundColor = new iTextSharp.text.BaseColor(255, 255, 255) }); } else { tableLayout.AddCell(new PdfPCell(new Phrase(cellText, new Font(Font.FontFamily.HELVETICA, 8, 1, iTextSharp.text.BaseColor.BLACK))) { HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8, BackgroundColor = new iTextSharp.text.BaseColor(211, 211, 211) }); } } public List<Customer> customerData() { List<Customer> customers = new List<Customer>() { new Customer(){ CustomerName="Gnanavel Sekar",Address="Surat",Email="GnanavelSekar@gmail.com",ZipCode="395003" }, new Customer(){ CustomerName="Subash S",Address="Ahemdabad",Email="SubashS@gmail.com",ZipCode="395006" }, new Customer(){ CustomerName="Robert A",Address="Surat",Email="RobertA@gmail.com",ZipCode="395005" }, new Customer(){ CustomerName="Ammaiyappan",Address="Vadodara",Email="Ammaiyappan@gmail.com",ZipCode="395004" }, new Customer(){ CustomerName="Huijoyan",Address="Surat",Email="Huijoyan@gmail.com",ZipCode="395008" }, }; return customers; } } }
- Write below Code in view.
@model List<Used_iTextSharper.Models.Customer> <style> .text-align-center { text-align:center; } .text-align-right { text-align:right; } </style> <div class="row"> <div class="col-md-12"> <h5 class="text-align-center">Customers Detail</h5> <table class="table table-bordered table-hover table-striped"> <thead> <tr> <th>CustomerName</th> <th>Address</th> <th>Email</th> <th>ZipCode</th> </tr> </thead> <tbody> @foreach (var item in Model) { <tr> <td>@item.CustomerName</td> <td>@item.Address</td> <td>@item.Email</td> <td>@item.ZipCode</td> </tr> } </tbody> </table> </div> </div> <div class="row"> <div class="col-md-12 text-align-right"> <button class="btn btn-success" type="button">@Html.ActionLink("Create PDF", "CreatePdf", "Customer", null)</button> </div> </div>
- Now Run the Project and See the Output and Download PDF.
Downladed PDF for the Customer Detail.