IRONSOFTWAREHOME
Add Headers/Footers on Specific Pages
using IronPdf;
using System.Collections.Generic;
using System.Linq;

// Instantiate Renderer
var renderer = new IronPdf.ChromePdfRenderer();

var multi_page_html = @"
    <p> This is 1st Page</p>
        <div style = 'page-break-after: always;' ></div>
        <p> This is 2nd Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 3rd Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 4th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 5th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 6th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 7th Page</p>";

// Create a PDF or Load an existing PDF using IronPdf.PdfDocument.Load()
var pdfdoc = renderer.RenderHtmlAsPdf(multi_page_html);


// Create a Header
var header = new HtmlHeaderFooter();
header.HtmlFragment = "THIS IS HEADER {page} of {total-pages}";

// Create a Page Range  0 .. 7
var allPageIndexes = Enumerable.Range(0, pdfdoc.PageCount);

// Example 1
// Apply header to even page index only. (page number will be odd number because index start at 0 but page number start at 1)
var evenPageIndexes = allPageIndexes.Where(i => i % 2 == 0);
pdfdoc.AddHtmlHeaders(header, 1, evenPageIndexes);
pdfdoc.SaveAs("EvenPages.pdf");

// Example 2
//Apply header to odd page index only. (page number will be even number because index start at 0 but page number start at 1)
var oddPageIndexes = allPageIndexes.Where(i => i % 2 != 0);
pdfdoc.AddHtmlHeaders(header, 1, oddPageIndexes);
pdfdoc.SaveAs("OddPages.pdf");

// Example 3
// Apply header to last page only.
var lastPageIndex = new List<int>() { pdfdoc.PageCount - 1 };
pdfdoc.AddHtmlHeaders(header, 1, lastPageIndex);
pdfdoc.SaveAs("LastPageOnly.pdf");

// Example 4
// Apply header to first page only.
var firstPageIndex = new List<int>() { 0 };
pdfdoc.AddHtmlHeaders(header, 1, firstPageIndex);
pdfdoc.SaveAs("FirstPageOnly.pdf");

// Example 5
// Skip the first page.
var skipFirstPageIndexes5 = allPageIndexes.Skip(1);
pdfdoc.AddHtmlHeaders(header, 1, skipFirstPageIndexes5);
pdfdoc.SaveAs("SkipFirstPage.pdf");

// Example 6
// Skip first page and make second pages label as 1.
var skipFirstPageIndexes6 = allPageIndexes.Skip(1);
pdfdoc.AddHtmlHeaders(header, 0, skipFirstPageIndexes6);
pdfdoc.SaveAs("SkipFirstPageAndDontCountIt.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq

' Instantiate Renderer
Dim renderer = New IronPdf.ChromePdfRenderer()

Dim multi_page_html = "
    <p> This is 1st Page</p>
        <div style = 'page-break-after: always;' ></div>
        <p> This is 2nd Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 3rd Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 4th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 5th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 6th Page</p>
    <div style = 'page-break-after: always;' ></div>
        <p> This is 7th Page</p>"

' Create a PDF or Load an existing PDF using IronPdf.PdfDocument.Load()
Dim pdfdoc = renderer.RenderHtmlAsPdf(multi_page_html)


' Create a Header
Dim header = New HtmlHeaderFooter()
header.HtmlFragment = "THIS IS HEADER {page} of {total-pages}"

' Create a Page Range  0 .. 7
Dim allPageIndexes = Enumerable.Range(0, pdfdoc.PageCount)

' Example 1
' Apply header to even page index only. (page number will be odd number because index start at 0 but page number start at 1)
Dim evenPageIndexes = allPageIndexes.Where(Function(i) i Mod 2 = 0)
pdfdoc.AddHtmlHeaders(header, 1, evenPageIndexes)
pdfdoc.SaveAs("EvenPages.pdf")

' Example 2
' Apply header to odd page index only. (page number will be even number because index start at 0 but page number start at 1)
Dim oddPageIndexes = allPageIndexes.Where(Function(i) i Mod 2 <> 0)
pdfdoc.AddHtmlHeaders(header, 1, oddPageIndexes)
pdfdoc.SaveAs("OddPages.pdf")

' Example 3
' Apply header to last page only.
Dim lastPageIndex = New List(Of Integer)() From {pdfdoc.PageCount - 1}
pdfdoc.AddHtmlHeaders(header, 1, lastPageIndex)
pdfdoc.SaveAs("LastPageOnly.pdf")

' Example 4
' Apply header to first page only.
Dim firstPageIndex = New List(Of Integer)() From {0}
pdfdoc.AddHtmlHeaders(header, 1, firstPageIndex)
pdfdoc.SaveAs("FirstPageOnly.pdf")

' Example 5
' Skip the first page.
Dim skipFirstPageIndexes5 = allPageIndexes.Skip(1)
pdfdoc.AddHtmlHeaders(header, 1, skipFirstPageIndexes5)
pdfdoc.SaveAs("SkipFirstPage.pdf")

' Example 6
' Skip first page and make second pages label as 1.
Dim skipFirstPageIndexes6 = allPageIndexes.Skip(1)
pdfdoc.AddHtmlHeaders(header, 0, skipFirstPageIndexes6)
pdfdoc.SaveAs("SkipFirstPageAndDontCountIt.pdf")
NuGet Download
PM > Install-Package IronPdf
Add Headers/Footers on Specific Pages

Add Headers/Footers on Specific Pages

IronPDF has the ability to add headers and footers to existing PDF files.

We can also use methods of IronPDF to add customized Headers and Footers to old or new PDF documents. To do so, we wait until after the PDF is rendered using the following methods:

  • Add Text Headers Using IronPDF uses IronPdf.PdfDocument.AddTextHeaders(IronPdf.TextHeaderFooter, System.Int32, System.Collections.Generic.IEnumerable<System.Int32>)
  • Add Text Footers Using IronPDF uses IronPdf.PdfDocument.AddTextFooters(IronPdf.TextHeaderFooter, System.Int32, System.Collections.Generic.IEnumerable<System.Int32>)
  • Add HTML Headers Using IronPDF uses IronPdf.PdfDocument.AddHtmlHeaders(IronPdf.HtmlHeaderFooter, System.Int32, System.Collections.Generic.IEnumerable<System.Int32>)
  • Add HTML Footers Using IronPDF uses IronPdf.PdfDocument.AddHtmlFooters(IronPdf.HtmlHeaderFooter, System.Int32, System.Collections.Generic.IEnumerable<System.Int32>)
Explore How-To Guide for Headers & Footers with IronPDF
View on GitHub

Ready to Get Started?

Nuget Downloads 20,878,335Version:2026.9just released

Key in blue circle

Get your free 30-day Trial Key instantly.

Your trial license will be sent to your email address

No limitations. 100% unlocked. No credit card.

bullet_checkedNo credit card or account creation requiredNo limitations. 100% unlocked. No credit card.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Book your free Live Demo
Booking Badge

Trusted by Millions of Engineers Worldwide

Iron Software's customer logos
Get Your No-Obligation Consult
Complete the form below or email sales@ironsoftware.com
Your details will always be kept confidential.
Trusted by Millions of Engineers Worldwide
Iron Software's customer logos
Get your free 30-day Trial Key instantly.
No credit card or account creation required