Add Page Numbering in HTML

Winnovative HTML to PDF Converter allows you add HTML in header and footer. The HTML you add in header and footer as WinnovativeHtmlToPdfVariableElement objects can contain the &p; place holder for current PDF page number and the &P; place holder for the total number of pages of the PDF document.

Code Sample - Add Page Numbering in HTML

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;

using System.Drawing;

// Use Winnovative Namespace
using Winnovative;

namespace WnvHtmlToPdfDemo.Controllers.PDF_Creator.Headers_and_Footers
{
    public class PDF_Creator_Page_Numbers_in_HTMLController : Controller
    {
        [HttpPost]
        public ActionResult CreatePdf(IFormCollection collection)
        {
            // Create a PDF document
            Document pdfDocument = new Document();

            // Set license key received after purchase to use the converter in licensed mode
            // Leave it not set to use the converter in demo mode
            pdfDocument.LicenseKey = "fvDh8eDx4fHg4P/h8eLg/+Dj/+jo6Og=";

            // Add a PDF page to PDF document
            PdfPage pdfPage = pdfDocument.AddPage();

            try
            {
                // Create the document footer template
                pdfDocument.AddFooterTemplate(50);

                // ----- Add HTML with Page Numbering to Footer -----

                // Create a variable HTML element with page numbering
                string htmlStringWithPageNumbers = collection["htmlWithPageNumbersTextBox"];
                string baseUrl = collection["baseUrlTextBox"];
                HtmlToPdfVariableElement footerHtmlWithPageNumbers = new HtmlToPdfVariableElement(htmlStringWithPageNumbers, baseUrl);

                // Set the HTML element to fit the container height
                footerHtmlWithPageNumbers.FitHeight = true;

                // Add variable HTML element with page numbering to footer
                pdfDocument.Footer.AddElement(footerHtmlWithPageNumbers);

                // Optionally draw a line at the top of the footer
                if (collection["drawFooterLineCheckBox"].Count > 0)
                {
                    float footerWidth = pdfDocument.Footer.Width;

                    // Create a line element for the top of the footer
                    LineElement footerLine = new LineElement(0, 0, footerWidth, 0);

                    // Set line color
                    footerLine.ForeColor = Color.Gray;

                    // Add line element to the bottom of the footer
                    pdfDocument.Footer.AddElement(footerLine);
                }

                // Create a HTML to PDF element to add to document
                HtmlToPdfElement htmlToPdfElement = new HtmlToPdfElement(0, 0, collection["urlTextBox"]);

                // Optionally set a delay before conversion to allow asynchonous scripts to finish
                htmlToPdfElement.ConversionDelay = 2;

                // Optionally add a space between footer and the page body
                // Leave this option not set for no spacing
                htmlToPdfElement.BottomSpacing = float.Parse(collection["footerSpacingTextBox"]);

                // Add the HTML to PDF element to document
                // This will raise the PrepareRenderPdfPageEvent event where the header and footer visibilit per page can be changed
                pdfPage.AddElement(htmlToPdfElement);

                // Save the PDF document in a memory buffer
                byte[] outPdfBuffer = pdfDocument.Save();

                // Send the PDF file to browser
                FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
                fileResult.FileDownloadName = "Page_Numbers_in_HTML.pdf";

                return fileResult;
            }
            finally
            {
                // Close the PDF document
                pdfDocument.Close();
            }            
        }
    }
}

HTML with Page Numbering Place Holders to Use in HtmlToPdfVariable Element

XML
<!DOCTYPE html>
<html>
<head>
    <title>Add Page Numbering in HTML</title>
</head>
<body style="font-family: 'Times New Roman'; font-size: 14px">
    <table style="width: 100%">
        <tr>
            <td style="font-weight: bold; color: navy">HTML with Page Numbering</td>
            <td rowspan="2"><a href="http://www.winnovative-software.com">
                <img alt="Logo Image" style="width: 200px" src="img/logo.jpg" /></a></td>
            <td rowspan="2" style="width: 5px"></td>
        </tr>
        <tr>
            <!-- Add Page Numbering in HTML using &p; and &P -->
            <td style="width: 90%">Page <span style="color: navy; font-weight: bold">&p;</span> of <span style="font-size: 16px; color: green; font-weight: bold">&P;</span> pages
            </td>
        </tr>
    </table>
</body>
</html>