EVO HTML to PDF Converter allows you to apply headers and footers on the external documents added before or after the conversion result. You can control the visibility of the header and footer in first page of the external PDF document using the parameters of the DocumentInsertDocument(Int32, String, Boolean, Boolean, Boolean) and DocumentAppendDocument(String, Boolean, Boolean, Boolean) methods.
Code Sample - Add Header and Footer In External PDF Documents
C#
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 EVO PDF Namespace using EvoPdfClient; namespace EvoHtmlToPdfDemo.Controllers.PDF_Creator.Headers_and_Footers { public class PDF_Creator_Header_Footer_In_External_PDFController : Controller { IFormCollection formCollection; private readonly Microsoft.AspNetCore.Hosting.IWebHostEnvironment m_hostingEnvironment; public PDF_Creator_Header_Footer_In_External_PDFController(IWebHostEnvironment hostingEnvironment) { m_hostingEnvironment = hostingEnvironment; } [HttpPost] public ActionResult CreatePdf(IFormCollection collection) { formCollection = 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 a PDF document Document pdfDocument = null; if (useTcpService) pdfDocument = new Document(serverIP, serverPort); else pdfDocument = new Document(true, webServiceUrl); // Set optional service password if (useServicePassword) pdfDocument.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 pdfDocument.LicenseKey = "4W9+bn19bn5ue2B+bn1/YH98YHd3d3c="; // Add a PDF page to PDF document PdfPage pdfPage = pdfDocument.AddPage(); // Add a default document header AddHeader(pdfDocument, true); // Add a default document footer AddFooter(pdfDocument, true, true); // 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; // Add HTML to PDF element to document pdfPage.AddElement(htmlToPdfElement); // Insert an external PDF document in the beginning of the final PDF document string pdfFileBefore = m_hostingEnvironment.ContentRootPath + "/wwwroot" + "/DemoAppFiles/Input/PDF_Files/Merge_Before_Conversion.pdf"; pdfDocument.InsertDocument(0, pdfFileBefore, collection["addHeaderFooterInInsertedPdfCheckBox"].Count > 0, collection["showHeaderInFirstPageCheckBox"].Count > 0, collection["showFooterInFirstPageCheckBox"].Count > 0); // Append an external PDF document at the end of the final PDF document string pdfFileAfter = m_hostingEnvironment.ContentRootPath + "/wwwroot" + "/DemoAppFiles/Input/PDF_Files/Merge_After_Conversion.pdf"; pdfDocument.AppendDocument(pdfFileAfter, collection["addHeaderFooterInAppendedPdfCheckBox"].Count > 0, true, true); // 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 = "Header_Footer_in_External_PDF.pdf"; return fileResult; } /// <summary> /// Add a header to document /// </summary> /// <param name="pdfDocument">The PDF document object</param> /// <param name="drawHeaderLine">A flag indicating if a line should be drawn at the bottom of the header</param> private void AddHeader(Document pdfDocument, bool drawHeaderLine) { string headerHtmlString = System.IO.File.ReadAllText(m_hostingEnvironment.ContentRootPath + "/wwwroot" + "/DemoAppFiles/Input/HTML_Files/Header_HTML.html"); string headerBaseUrl = "http://www.evopdf.com/demo/DemoAppFiles/Input/HTML_Files/"; // Create the document footer template pdfDocument.AddHeaderTemplate(60); // Create a HTML element to be added in header HtmlToPdfElement headerHtml = new HtmlToPdfElement(headerHtmlString, headerBaseUrl); // Set the HTML element to fit the container height headerHtml.FitHeight = true; // Add HTML element to header pdfDocument.Header.AddElement(headerHtml); if (drawHeaderLine) { float headerWidth = pdfDocument.GetPage(0).PageSize.Width; float headerHeight = pdfDocument.Header.Height; // Create a line element for the bottom of the header LineElement headerLine = new LineElement(0, headerHeight - 1, headerWidth, headerHeight - 1); // Set line color headerLine.ForeColor = RgbColor.Gray; // Add line element to the bottom of the header pdfDocument.Header.AddElement(headerLine); } } /// <summary> /// Add a footer to document /// </summary> /// <param name="pdfDocument">The PDF document object</param> /// <param name="addPageNumbers">A flag indicating if the page numbering is present in footer</param> /// <param name="drawFooterLine">A flag indicating if a line should be drawn at the top of the footer</param> private void AddFooter(Document pdfDocument, bool addPageNumbers, bool drawFooterLine) { string footerHtmlString = System.IO.File.ReadAllText(m_hostingEnvironment.ContentRootPath + "/wwwroot" + "/DemoAppFiles/Input/HTML_Files/Footer_HTML.html"); string footerBaseUrl = "http://www.evopdf.com/demo/DemoAppFiles/Input/HTML_Files/"; // Create the document footer template pdfDocument.AddFooterTemplate(60); // Set footer background color RectangleElement backColorRectangle = new RectangleElement(0, 0, pdfDocument.Footer.Width, pdfDocument.Footer.Height); backColorRectangle.BackColor = RgbColor.WhiteSmoke; pdfDocument.Footer.AddElement(backColorRectangle); // Create a HTML element to be added in footer HtmlToPdfElement footerHtml = new HtmlToPdfElement(footerHtmlString, footerBaseUrl); // Set the HTML element to fit the container height footerHtml.FitHeight = true; // Add HTML element to footer pdfDocument.Footer.AddElement(footerHtml); // Add page numbering if (addPageNumbers) { // Create a text element with page numbering place holders &p; and & P; TextElement footerText = new TextElement(0, 30, "Page &p; of &P; ", new PdfFont("Times New Roman", 10, true)); // Align the text at the right of the footer footerText.TextAlign = HorizontalTextAlign.Right; // Set page numbering text color footerText.ForeColor = RgbColor.Navy; // Embed the text element font in PDF footerText.EmbedSysFont = true; // Add the text element to footer pdfDocument.Footer.AddElement(footerText); } if (drawFooterLine) { float footerWidth = pdfDocument.GetPage(0).PageSize.Width; // 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 pdfDocument.Footer.AddElement(footerLine); } } } }