In previous article I explained display data In webgrid and delete multiple rows by using checkboxes. Now i will explain how to download that data in a pdf file.

So first check previous article and add Action Link in list.cshtml for Create PDF.
webgrid in mvc
  1. Create PDF : @Html.ActionLink("Create PDF", "CreatePdf", "Home")
Go to Solution Explorer > Right Click on References > Manage NuGet Packages...> Search with itextsharp text > Install this 2 dll.

NuGet Manager


iTextSharp
Now Add CreatePdf Action into Home Controller and also add following namespace.
  1. using iTextSharp.text;
  2. using iTextSharp.text.pdf;
  3. using System.IO;
  4. using System.Web.Helpers;
Now Add CreatePdf Action code.
  1. public FileStreamResult CreatePdf()
  2. {
  3. List all = new List();
  4. all = db.Employees.ToList();
  5. WebGrid grid = new WebGrid(source: all, canPage: false, canSort: false);
  6. string gridHtml = grid.GetHtml(
  7. columns: grid.Columns(
  8. grid.Column("Id", "EmployeeId"),
  9. grid.Column("Name", "Employee Name"),
  10. grid.Column("City", "City"),
  11. grid.Column("MobileNo", "Mobile No")
  12. )
  13. ).ToString();
  14. string exportData = String.Format("{0}{1}", "", gridHtml);
  15. var bytes = System.Text.Encoding.UTF8.GetBytes(exportData);
  16. using (var input = new MemoryStream(bytes))
  17. {
  18. var output = new MemoryStream();
  19. var document = new iTextSharp.text.Document(PageSize.A4, 50, 50, 50, 50);
  20. var writer = PdfWriter.GetInstance(document, output);
  21. writer.CloseStream = false;
  22. document.Open();
  23. var xmlWorker = iTextSharp.tool.xml.XMLWorkerHelper.GetInstance();
  24. xmlWorker.ParseXHtml(writer, document, input, System.Text.Encoding.UTF8);
  25. document.Close();
  26. output.Position = 0;
  27. return new FileStreamResult(output, "application/pdf");
  28. }
  29. }
RUN APPLICATION(CTTL + F5).
Create Pdf in mvc
Click on Create PDF. and get PDF.

pdf in mvc