- How to Create PDF from DIV content in ASP.NET MVC5?
- How to Create and Download PDF?
- Simple programming example
Most of the time as a developer; you need to generate PDF and make them available to download for user. In this article, I will explain how can you print and create a PDF file of div section and show a button to download PDF File.
This tutorial contains following part:
- Add Reference of
itextsharp.xmlworker - View –
Index()view will be used for displaying and printing PDF file. - Controller – I will use
HomeController.csfor writing code.
Step 1: Create a New MVC Project and Add a Reference of itextsharp.xmlworker
Create a new MVC project of any name as you want and follow the steps to add reference for itextsharp.xmlworker assembly.
itextsharp.xmlworker
Step 2: View Page – Index.cshtml
Here, I am using Index.cshtml as view page. You can use any of your view page to print pdf.
@model IEnumerable<CreatePDF_Apps.Models.ProductModel>
@{
ViewBag.Title = "Home Page";
}
<div class="jumbotron">
<h1>CREATE PDF in ASP.Net MVC</h1>
</div>
<div class="row">
<div class="col-md-8">
<div id="PrintPDF">
<h1>This section is going to be printed in PDF</h1>
</div>
<br />
@using (Html.BeginForm("Export", "Home", FormMethod.Post))
{
<input type="hidden" name="ExportData" />
<input type="submit" id="btnSubmit" value="Export" />
}
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$("#btnSubmit").click(function () {
$("input[name='ExportData']").val($("#PrintPDF").html());
});
});
</script>
</div>
</div>
1. Use <div id="PrintPDF"> </div> and all your content is going to be printed in PDF file.
2. Saves content in a hidden field control and used a submit button to download PDF File.
@using (Html.BeginForm("Export", "Home", FormMethod.Post))
{
<input type="hidden" name="ExportData" />
<input type="submit" id="btnSubmit" value="Export" />
}
3. Used JQuery to fill hidden field control with div content.
@using (Html.BeginForm("Export", "Home", FormMethod.Post))
{
<input type="hidden" name="ExportData" />
<input type="submit" id="btnSubmit" value="Export" />
}
Step 3: HomeController.cs
using System.Web.Mvc;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
namespace CreatePDF_Apps.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
[HttpPost]
[ValidateInput(false)]
public FileResult Export(string ExportData)
{
using (MemoryStream stream = new System.IO.MemoryStream())
{
StringReader reader = new StringReader(ExportData);
Document PdfFile = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.GetInstance(PdfFile, stream);
PdfFile.Open();
XMLWorkerHelper.GetInstance().ParseXHtml(writer, PdfFile, reader);
PdfFile.Close();
return File(stream.ToArray(), "application/pdf", "ExportData.pdf");
}
}
}
}
Output
Summary
In this tutorial, I have simply explained how can you print a div in pdf in asp.net mvc5. In the next article, I will explain how to create a pdf from database table.