Cómo agregar números de página a PDFs usando C#

How to Add Page Numbers in a PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

Los números de página son números secuenciales asignados a cada página individual dentro de un documento PDF. Los números de página son uno de los componentes más importantes en un documento para la navegación. Ayudan a los lectores a localizar páginas específicas y determinar de qué página están leyendo. Además, los números de página permiten una fácil citación y referencia del contenido dentro del documento. Con IronPDF, agregar números de página a tu PDF es un proceso simple.

como-encabezado:2(Inicio rápido: Agrega números de página a PDFs con facilidad)

Agrega números de página a tus documentos PDF de manera sencilla utilizando IronPDF. Con solo unas líneas de código en C#, puedes insertar números de página dinámicos en encabezados o pies de página, personalizar su ubicación y especificar las páginas en las que deberían aparecer. Ya sea que estés manejando PDFs nuevos o existentes, IronPDF proporciona una solución sencilla y flexible para mejorar la navegación y organización de documentos. Sigue la guía para implementar rápidamente la numeración de páginas en tu proyecto.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    new IronPdf.ChromePdfRenderer { RenderingOptions = { HtmlFooter = new IronPdf.HtmlHeaderFooter { HtmlFragment = "<center>{page}of{total-pages}</center>", DrawDividerLine = true } } }
         .RenderHtmlAsPdf("<h1>My multi‑page document</h1><div style='page‑break‑after:always;'></div><h1>Page 2</h1>")
         .SaveAs("numbered‑pages.pdf");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

Flujo de trabajo mínimo (5 pasos)

  1. Descarga la biblioteca PDF para C# desde NuGet
  2. Carga un documento PDF existente o genera uno nuevo
  3. Usa cadenas de marcador de posición {page} y {total-pages} en el Encabezado y Pie de página para insertar números de página
  4. Aplica números de página a páginas o secciones específicas
  5. Revisa el documento PDF resultante


Ejemplo de añadir números de página

Usando cadenas de marcador de posición {page} y {total-pages} con la clase TextHeaderFooter o la clase HtmlHeaderFooter, puedes agregar el número de página actual y el número total de páginas.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-basic.cs
using IronPdf;

// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter()
{
    CenterText = "{page} of {total-pages}"
};

// Create html footer
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

// Render a new PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");

// Add header and footer
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);

pdf.SaveAs("pdfWithPageNumber.pdf");
Imports IronPdf

' Create text header
Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}

' Create html footer
Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

' Render a new PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")

' Add header and footer
pdf.AddTextHeaders(textHeader)
pdf.AddHtmlFooters(htmlFooter)

pdf.SaveAs("pdfWithPageNumber.pdf")
$vbLabelText   $csharpLabel

El PDF de salida del código anterior se muestra a continuación:

También puedes agregar directamente los encabezados y pies de página con las cadenas de marcador de posición de número de página en las opciones de renderizado del ChromePdfRenderer.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-chromerenderer.cs
using IronPdf;

// Add header and footer to rendering options
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
    CenterText = "{page} of {total-pages}"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

string html = @"
    <h1>Hello World!</h1>
<div style='page-break-after: always;'/>
    <h1>2nd Page!</h1>";

// Render new PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

pdf.SaveAs("applyPageNumberWithRenderingOptions.pdf");
Imports IronPdf

' Add header and footer to rendering options
Private renderer As New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

Dim html As String = "
    <h1>Hello World!</h1>
<div style='page-break-after: always;'/>
    <h1>2nd Page!</h1>"

' Render new PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

pdf.SaveAs("applyPageNumberWithRenderingOptions.pdf")
$vbLabelText   $csharpLabel

Añadir números de página a páginas específicas Ejemplo

Con IronPDF, puedes decidir dónde agregar los números de página. Puedes hacer que comiencen en una página determinada o en grupos específicos de páginas, como en las páginas con índices pares.

Preparemos nuestro documento PDF para aplicar los números de página.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-preparation.cs
using IronPdf;
using System.Linq;
using System.Collections.Generic;

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

// Create header
HtmlHeaderFooter header = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

// Render PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(multi_page_html);

// Create a Page Range 0..6
var allPageIndices = Enumerable.Range(0, pdf.PageCount);
Imports IronPdf
Imports System.Linq
Imports System.Collections.Generic

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

' Create header
Private header As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

' Render PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf(multi_page_html)

' Create a Page Range 0..6
Private allPageIndices = Enumerable.Range(0, pdf.PageCount)
$vbLabelText   $csharpLabel

Índices de páginas pares

Tomando como base el ejemplo de código anterior, el siguiente código aplicará números de página exclusivamente a los índices de páginas pares. Dado que estamos filtrando por índices de páginas pares, el PDF resultante aplicará números solo en los números de página impares. Los índices de página comienzan en cero, mientras que los números de página comienzan en uno.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-even-pages.cs
// Get even page indexes (resulting in odd page numbers)
var evenPageIndices = allPageIndices.Where(i => i % 2 == 0);

pdf.AddHtmlHeaders(header, 1, evenPageIndices);
pdf.SaveAs("EvenPages.pdf");
' Get even page indexes (resulting in odd page numbers)
Dim evenPageIndices = allPageIndices.Where(Function(i) i Mod 2 = 0)

pdf.AddHtmlHeaders(header, 1, evenPageIndices)
pdf.SaveAs("EvenPages.pdf")
$vbLabelText   $csharpLabel

Índices de páginas añadidas

Agrega números de página específicamente a las páginas con números de índice impares.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-odd-pages.cs
// Get odd page indexes (resulting in even page numbers)
var oddPageIndexes = allPageIndices.Where(i => i % 2 != 0);

pdf.AddHtmlHeaders(header, 1, oddPageIndexes);
pdf.SaveAs("OddPages.pdf");
' Get odd page indexes (resulting in even page numbers)
Dim oddPageIndexes = allPageIndices.Where(Function(i) i Mod 2 <> 0)

pdf.AddHtmlHeaders(header, 1, oddPageIndexes)
pdf.SaveAs("OddPages.pdf")
$vbLabelText   $csharpLabel

Última página

Agrega un número de página solo a la última página.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-last-page-only.cs
// Last page only
var lastPageIndex = new List<int>() { pdf.PageCount - 1 };

pdf.AddHtmlHeaders(header, 1, lastPageIndex);
pdf.SaveAs("LastPageOnly.pdf");
' Last page only
Dim lastPageIndex = New List(Of Integer)() From {pdf.PageCount - 1}

pdf.AddHtmlHeaders(header, 1, lastPageIndex)
pdf.SaveAs("LastPageOnly.pdf")
$vbLabelText   $csharpLabel

Sólo primera página

Agrega un número de página solo a la primera página.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-first-page-only.cs
// First page only
var firstPageIndex = new List<int>() { 0 };

pdf.AddHtmlHeaders(header, 1, firstPageIndex);
pdf.SaveAs("FirstPageOnly.pdf");
' First page only
Dim firstPageIndex = New List(Of Integer)() From {0}

pdf.AddHtmlHeaders(header, 1, firstPageIndex)
pdf.SaveAs("FirstPageOnly.pdf")
$vbLabelText   $csharpLabel

Omitir primera página

Omite la primera página al aplicar el encabezado.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page.cs
// Skip the first page
var skipFirstPage = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 1, skipFirstPage);
pdf.SaveAs("SkipFirstPage.pdf");
' Skip the first page
Dim skipFirstPage = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 1, skipFirstPage)
pdf.SaveAs("SkipFirstPage.pdf")
$vbLabelText   $csharpLabel

Omitir primera página And Don't Count it

Omite la primera página y comienza la numeración desde la segunda página, considerándola como página 1.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page-and-dont-count-it.cs
// Skip the first page and start numbering the second page as page 1
var skipFirstPageAndDontCountIt = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt);
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf");
' Skip the first page and start numbering the second page as page 1
Dim skipFirstPageAndDontCountIt = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt)
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf")
$vbLabelText   $csharpLabel

Para explorar todas las opciones de metadatos, por favor visita la Guía de encabezados y pies de página de IronPDF.

Preguntas Frecuentes

¿Cómo puedo agregar números de página a un PDF usando C#?

Puedes añadir números de página a un PDF en C# usando la biblioteca IronPDF. Primero, descarga la biblioteca C# PDF desde NuGet. Luego, carga un PDF existente o crea uno nuevo y utiliza las cadenas de marcador de posición {page} y {total-pages} en el encabezado o pie de página para insertar números de página. Finalmente, guarda el PDF actualizado.

¿Puedo personalizar la colocación de los números de página en mi PDF?

Sí, con IronPDF, puedes personalizar la colocación de los números de página en tu PDF. Puedes elegir añadir números de página solo a páginas específicas, como páginas con índice par o impar, o aplicarlos solo a la primera o última página.

¿Cómo añado números de página solo a las páginas pares de un PDF?

Para añadir números de página solo a páginas pares en un PDF usando IronPDF, filtra las páginas por índices pares y configura el encabezado o pie de página con los marcadores de posición para el número de página. El número de página se aplicará entonces a las páginas con números de índice par.

¿Es posible comenzar la numeración de páginas desde la segunda página de un PDF?

Sí, usando IronPDF, puedes omitir la primera página y empezar la numeración desde la segunda página. Para hacer esto, configura el encabezado o pie de página para que se aplique desde la segunda página y usa las cadenas de marcador de posición para manejar la secuencia de numeración.

¿Cómo puedo añadir números de página solo a la última página de un PDF?

Para añadir números de página solo a la última página de un PDF usando IronPDF, puedes configurar el encabezado o pie de página para que se aplique específicamente a la última página. Esto se puede lograr haciendo referencia al índice de la última página y configurando las cadenas de marcador de posición para los números de página.

¿Cuáles son los beneficios de usar cadenas de marcador de posición en la numeración de páginas de PDF?

Las cadenas de marcador de posición como {page} y {total-pages} permiten la inserción dinámica del número de página actual y el número total de páginas. Esto hace que la gestión de la numeración de páginas sea flexible y eficiente, especialmente cuando cambia la estructura del documento. IronPDF utiliza estos marcadores de posición para simplificar el proceso de numeración de páginas.

¿Cómo puedo añadir números de página a un PDF sin afectar la primera página?

Para añadir números de página a un PDF sin afectar la primera página usando IronPDF, configura los encabezados o pies de página para que comiencen desde la segunda página. Este enfoque asegura que la primera página permanezca sin numerar mientras las páginas subsiguientes reciben números de página.

¿Puede IronPDF manejar números de página tanto para contenido HTML como para PDFs existentes?

Sí, IronPDF puede manejar números de página tanto para contenido HTML como para PDFs existentes. Puedes renderizar HTML como PDF y aplicar números de página usando IronPdf.ChromePdfRenderer o modificar un documento PDF existente para incluir números de página en los encabezados y pies de página.

¿IronPDF es totalmente compatible con .NET 10 al agregar números de página?

Sí, IronPDF es totalmente compatible con .NET 10, lo que le permite agregar números de página utilizando encabezados o pies de página y las cadenas de marcador de posición {page} y {total-pages} en proyectos .NET 10 tal como en versiones anteriores de .NET.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más
Revisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente Principal de Programas - Equipo de la Comunidad .NET
Jeff también es Gerente Principal de Programas para los equipos de .NET y Visual Studio. Es el productor ejecutivo de la serie de conferencias virtuales .NET Conf y anfitrión de 'Fritz and Friends', una transmisión en vivo para desarrolladores que se emite dos veces a la semana donde habla sobre tecnología y escribe código junto con la audiencia. Jeff escribe talleres, presentaciones, y planifica contenido para los eventos de desarrolladores más importantes de Microsoft, incluyendo Microsoft Build, Microsoft Ignite, .NET Conf y la Cumbre de Microsoft MVP.
¿Listo para empezar?
Nuget Descargas 16,154,058 | Versión: 2025.11 recién lanzado