Export HTML Table to PDF using iText7 in ASP.Net Core MVC

Last Reply one month ago By dharmendr

Posted one month ago

How to export HTML table data to pdf file in ASP.Net Core MVC

You are viewing reply posted by: dharmendr one month ago.
Posted one month ago

Hi rani,

Check this example. Now please take its reference and correct your code.

For exporting to pdf you need to install pdfHTML library which is an iText 7 add-on that allows you to easily convert HTML and CSS into standards compliant PDF.

Refer below link.

itext7.pdfhtml

Database

For this example I have used of Northwind database that you can download using the link given below.

Download Northwind Database

Model

public class Customer
{
    public string CustomerID { get; set; }
    public string ContactName { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
}

Controller

public class HomeController : Controller
{
    private DBCtx Context { get; }
    public HomeController(DBCtx _context)
    {
        this.Context = _context;
    }

    public IActionResult Index()
    {
        return View(this.Context.Customers.Take(10).ToList());
    }

    [HttpPost]
    public IActionResult Export(string GridHtml)
    {
        using (MemoryStream stream = new MemoryStream())
        {
            HtmlConverter.ConvertToPdf(GridHtml, stream);
            return File(stream.ToArray(), "application/pdf", "Grid.pdf");
        }
    }
}

View

@addTagHelper*, Microsoft.AspNetCore.Mvc.TagHelpers
@using Export_Table_PDF_Core_MVC.Models
@model IEnumerable<Customer>

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnSubmit").click(function () {
                $("input[name='GridHtml']").val($("#Grid").html());
            });
        });
    </script>
</head>
<body>
    <h4>Customers</h4>
    <hr />
    <div id="Grid">
        <table cellpadding="5" cellspacing="0" style="border: 1px solid #ccc;font-size: 9pt;">
            <tr>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">CustomerID</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">ContactName</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">City</th>
                <th style="background-color: #B8DBFD;border: 1px solid #ccc">Country</th>
            </tr>
            @foreach (Customer customer in Model)
            {
                <tr>
                    <td style="width:120px;border: 1px solid #ccc">@customer.CustomerID</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.ContactName</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.City</td>
                    <td style="width:120px;border: 1px solid #ccc">@customer.Country</td>
                </tr>
            }
        </table>
    </div>
    <br />
    <br />
    <form asp-action="Export" asp-controller="Home" method="post">
        <input type="hidden" name="GridHtml" />
        <input type="submit" id="btnSubmit" value="Export" />
    </form>
</body>
</html>

Screenshots

HTML Table

Exported PDF File