Cómo añadir números de página en un PDF

por Jordi

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 de un documento para la navegación. Ayudan a los lectores a localizar páginas concretas y determinar en qué página están leyendo. Además, los números de página permiten citar y referenciar fácilmente el contenido del documento. Con IronPDF, añadir números de página a su PDF es un proceso sencillo.


Biblioteca NuGet C# para PDF

Instalar con NuGet

Install-Package IronPdf
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Añadir números de página Ejemplo

Uso de cadenas de marcadores de posición {página} y {total-páginas} con la clase TextHeaderFooter o HtmlHeaderFooter, puede añadir 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;

//  Crear cabecera de texto
TextHeaderFooter textHeader = new TextHeaderFooter()
{
    CenterText = "{page} of {total-pages}"
};

//  Crear pie de página html
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};

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

//  Añadir encabezado y pie de página
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);

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

'  Crear cabecera de texto
Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}

'  Crear pie de página html
Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}

'  Renderizar un nuevo PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")

'  Añadir encabezado y pie de página
pdf.AddTextHeaders(textHeader)
pdf.AddHtmlFooters(htmlFooter)

pdf.SaveAs("pdfWithPageNumber.pdf")
VB   C#

A continuación se muestra el PDF de salida del código anterior:

También puede añadir directamente los encabezados y pies de página con las cadenas de marcadores 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;

//  Añadir cabecera y pie de página a las opciones de representación
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>";

//  Renderizar nuevo PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);

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

'  Añadir cabecera y pie de página a las opciones de representación
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>"

'  Renderizar nuevo PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

pdf.SaveAs("applyPageNumberWithRenderingOptions.pdf")
VB   C#

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

Con IronPDF, puede decidir dónde colocar los números de página. Puede hacer que se inicien en una página determinada o en determinados grupos de páginas, como las páginas 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>";

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

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

//  Crear un intervalo de páginas 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>"

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

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

'  Crear un intervalo de páginas 0..6
Private allPageIndices = Enumerable.Range(0, pdf.PageCount)
VB   C#

Índices de páginas pares

Basándose en el ejemplo de código anterior, el siguiente código aplicará los números de página exclusivamente a los índices de páginas pares. Como estamos filtrando por índices de páginas pares, el PDF resultante sólo se aplicará a los números de página impares. Los índices de página empiezan en cero, mientras que los números de página empiezan en uno.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-even-pages.cs
//  Obtener índices de páginas pares (resultando en números de páginas impares)
var evenPageIndices = allPageIndices.Where(i => i % 2 == 0);

pdf.AddHtmlHeaders(header, 1, evenPageIndices);
pdf.SaveAs("EvenPages.pdf");
'  Obtener índices de páginas pares (resultando en números de páginas impares)
Dim evenPageIndices = allPageIndices.Where(Function(i) i Mod 2 = 0)

pdf.AddHtmlHeaders(header, 1, evenPageIndices)
pdf.SaveAs("EvenPages.pdf")
VB   C#

Índices de páginas impares

Añada números de página específicos a las páginas con números de índice impares.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-odd-pages.cs
//  Obtener índices de páginas impares (resultando en números de páginas pares)
var oddPageIndexes = allPageIndices.Where(i => i % 2 != 0);

pdf.AddHtmlHeaders(header, 1, oddPageIndexes);
pdf.SaveAs("OddPages.pdf");
'  Obtener índices de páginas impares (resultando en números de páginas pares)
Dim oddPageIndexes = allPageIndices.Where(Function(i) i Mod 2 <> 0)

pdf.AddHtmlHeaders(header, 1, oddPageIndexes)
pdf.SaveAs("OddPages.pdf")
VB   C#

Sólo la última página

Añada un número de página sólo a la última página.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-last-page-only.cs
//  Sólo la última página
var lastPageIndex = new List<int>() { pdf.PageCount - 1 };

pdf.AddHtmlHeaders(header, 1, lastPageIndex);
pdf.SaveAs("LastPageOnly.pdf");
'  Sólo la última página
Dim lastPageIndex = New List(Of Integer)() From {pdf.PageCount - 1}

pdf.AddHtmlHeaders(header, 1, lastPageIndex)
pdf.SaveAs("LastPageOnly.pdf")
VB   C#

Sólo primera página

Añada un número de página sólo a la Primera página.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-first-page-only.cs
//  Sólo la primera página
var firstPageIndex = new List<int>() { 0 };

pdf.AddHtmlHeaders(header, 1, firstPageIndex);
pdf.SaveAs("FirstPageOnly.pdf");
'  Sólo la primera página
Dim firstPageIndex = New List(Of Integer)() From {0}

pdf.AddHtmlHeaders(header, 1, firstPageIndex)
pdf.SaveAs("FirstPageOnly.pdf")
VB   C#

Saltar primera página

Omita la primera página al aplicar la cabecera.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page.cs
//  Saltar la primera página
var skipFirstPage = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 1, skipFirstPage);
pdf.SaveAs("SkipFirstPage.pdf");
'  Saltar la primera página
Dim skipFirstPage = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 1, skipFirstPage)
pdf.SaveAs("SkipFirstPage.pdf")
VB   C#

Sáltese la primera página y no la cuente

Sáltese la primera página y empiece a numerar a partir de la segunda, considerándola como la página 1.

:path=/static-assets/pdf/content-code-examples/how-to/page-numbers-skip-first-page-and-dont-count-it.cs
//  Omita la primera página y empiece a numerar la segunda como página 1
var skipFirstPageAndDontCountIt = allPageIndices.Skip(1);

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt);
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf");
'  Omita la primera página y empiece a numerar la segunda como página 1
Dim skipFirstPageAndDontCountIt = allPageIndices.Skip(1)

pdf.AddHtmlHeaders(header, 0, skipFirstPageAndDontCountIt)
pdf.SaveAs("SkipFirstPageAndDontCountIt.pdf")
VB   C#

Para explorar todas las opciones de metadatos, visite la página Añadir encabezados y pies de página guía práctica.