Winnovative HTML to PDF Converter allows you add HTML in header and footer. The HTML you add in header and footer as WinnovativeClientHtmlToPdfVariableElement 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Hosting;
// Use Winnovative Namespace
using WinnovativeClient;
namespace WnvHtmlToPdfDemo.Controllers.HTML_to_PDF.Headers_and_Footers
{
public class Page_Numbers_in_HTMLController : Controller
{
[HttpPost]
public ActionResult ConvertHtmlToPdf(IFormCollection collection)
{
// Get the server options
string serverIP = collection["textBoxServerIP"];
uint serverPort = uint.Parse(collection["textBoxServerPort"]);
string servicePassword = collection["textBoxServicePassword"];
bool useServicePassword = servicePassword.Length > 0;
bool useTcpService = collection["ServerType"] == "radioButtonUseTcpService";
string webServiceUrl = collection["textBoxWebServiceUrl"];
// Create the HTML to PDF converter object
HtmlToPdfConverter htmlToPdfConverter = null;
if (useTcpService)
htmlToPdfConverter = new HtmlToPdfConverter(serverIP, serverPort);
else
htmlToPdfConverter = new HtmlToPdfConverter(true, webServiceUrl);
// Set optional service password
if (useServicePassword)
htmlToPdfConverter.ServicePassword = servicePassword;
// Set license key received after purchase to use the converter in licensed mode
// Leave it not set to use the converter in demo mode
htmlToPdfConverter.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c=";
// Set an adddional delay in seconds to wait for JavaScript or AJAX calls after page load completed
// Set this property to 0 if you don't need to wait for such asynchcronous operations to finish
htmlToPdfConverter.ConversionDelay = 2;
// Enable footer in the generated PDF document
htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
// Optionally add a space between footer and the page body
// Leave this option not set for no spacing
htmlToPdfConverter.PdfDocumentOptions.BottomSpacing = float.Parse(collection["footerSpacingTextBox"]);
// Set the footer height in points
htmlToPdfConverter.PdfFooterOptions.FooterHeight = 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
htmlToPdfConverter.PdfFooterOptions.AddElement(footerHtmlWithPageNumbers);
// Optionally draw a line at the top of the footer
if (collection["drawFooterLineCheckBox"].Count > 0)
{
// Calculate the footer width based on PDF page size and margins
float footerWidth = htmlToPdfConverter.PdfDocumentOptions.PdfPageSize.Width -
htmlToPdfConverter.PdfDocumentOptions.LeftMargin - htmlToPdfConverter.PdfDocumentOptions.RightMargin;
// Create a line element for the top of the footer
LineElement footerLine = new LineElement(0, 0, footerWidth, 0);
// Set line color
footerLine.ForeColor = RgbColor.Gray;
// Add line element to the bottom of the footer
htmlToPdfConverter.PdfFooterOptions.AddElement(footerLine);
}
// Convert the HTML page to a PDF document in a memory buffer
byte[] outPdfBuffer = htmlToPdfConverter.ConvertUrl(collection["urlTextBox"]);
// Send the PDF file to browser
FileResult fileResult = new FileContentResult(outPdfBuffer, "application/pdf");
fileResult.FileDownloadName = "Page_Numbers_in_HTML.pdf";
return fileResult;
}
}
}<!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>