Saltar al pie de página
USANDO IRONPDF

Cómo Añadir Números de Página en PDF usando C#

"Formato de Documento Portable" o PDF, es un formato de archivo creado por Adobe. Los archivos PDF son útiles al presentar documentos que necesitan tener su texto y fotos formateados. En el mundo actual, los archivos PDF son esenciales y se utilizan para la creación de documentos y facturación en todos los sectores corporativos. Gracias a las varias bibliotecas de PDF que hay ahora en el mercado, crear PDFs se ha vuelto prácticamente instintivo. Para elegir la biblioteca de PDF apropiada para usted, es crucial sopesar los beneficios y características de cada una antes de utilizarla para su proyecto.

En este artículo, vamos a ver cómo añadir números de página en PDF usando iTextSharp C#. Además, compararemos iTextSharp con IronPDF.

Cómo añadir números de página en PDF con iTextSharp C#

  1. Cree un nuevo proyecto C# usando cualquier IDE.
  2. Cree un nuevo objeto PDF.
  3. Agregue números de página al pie de página en HTML.
  4. Crear un PDF a partir de material HTML.
  5. Guardar un archivo PDF en tu computadora.

Qué es IronPDF

IronPDF es un robusto Framework .NET para PDF que los desarrolladores utilizan para producir, ver y editar PDFs con facilidad. IronPDF es una herramienta sofisticada que se ejecuta internamente en un motor de cromo. Puede convertir HTML5, JavaScript, CSS y archivos de imágenes a PDF, agregar encabezados y pies de página personalizados y producir PDFs exactamente como aparecen en un navegador. IronPDF soporta muchos formatos en línea y netos, incluidos HTML, ASPX, Razor View y MVC.

Características de IronPDF

  • Utilizando código .NET C# para crear, leer y editar archivos PDF fácilmente.
  • El proceso de crear PDFs desde un enlace de URL de sitio web mientras se gestionan Agentes de Usuario, Proxies, Cookies, cabeceras HTTP y variables de formulario para habilitar el inicio de sesión utilizando formularios de inicio de sesión en HTML.
  • Eliminar imágenes de archivos PDF ya existentes.
  • Incluir elementos de un PDF: tabla, texto, fotos, marcadores, marcas de agua, encabezados, pies de página y otros.
  • La capacidad de separar y combinar páginas de numerosos documentos PDF con facilidad.

Para saber más sobre la documentación de IronPDF, consulta aquí.

Instalación de IronPDF

Dentro de las herramientas de Visual Studio, selecciona el Administrador de paquetes NuGet, y puedes encontrar la interfaz de línea de comandos visual bajo Herramientas. El siguiente comando debe ingresarse en la pestaña del terminal de gestión de paquetes.

Install-Package IronPdf

O podemos usar el método del administrador de paquetes. Instalar el paquete directamente en la solución es posible con la opción del Administrador de Paquetes NuGet de Visual Studio. Hay un cuadro de búsqueda disponible para localizar paquetes en el sitio web de NuGet. Solo necesitamos buscar "IronPDF" en el administrador de paquetes, como ilustra la captura de pantalla a continuación:

Cómo Añadir Números de Página en PDF usando iTextSharp en C#: Figura 1 - Instalación de IronPDF desde el administrador de paquetes

La lista de resultados de búsqueda relevantes se muestra arriba. Para que el paquete se instale en su sistema, realice las selecciones necesarias.

Ahora que el paquete ha sido descargado e instalado, puede ser utilizado en el proyecto actual.

Qué es iTextSharp

iTextSharp es una biblioteca flexible para producir y modificar documentos PDF en C#. Ofrece varias características, como cifrado, combinación de PDF, extracción de texto e imágenes, y mucho más. iTextSharp es una herramienta eficiente para numerosas tareas, incluido agregar números de página a PDFs.

Características de iTextSharp

  • Una API para generar documentos PDF está disponible a través de la biblioteca iText.
  • Tanto cadenas HTML como XML pueden analizarse en archivos PDF utilizando el programa iText.
  • Podemos añadir marcadores, números de página y marcadores a nuestros documentos PDF usando la biblioteca iText.
  • También podemos dividir un documento PDF en numerosos PDFs o fusionar múltiples documentos PDF en un solo PDF usando la biblioteca iText.
  • Podemos modificar formularios PDF con iText.

Instalar iTextSharp

Usa el administrador de paquetes NuGet para buscar iText. Las instalaciones de iText7 e iText.pdfhtml son necesarias ya que las funcionalidades de iText están divididas en varios paquetes.

Si elige la interfaz de línea de comandos visual, los siguientes paquetes deben ser instalados:

Install-Package iTextSharp

Dado que iText 7 es la versión más reciente, es la que estamos empleando en nuestra solución.

Añadir números de página con IronPDF

Agregar números de página a archivos PDF es simple gracias a la completa biblioteca de IronPDF. Para ilustrar, vea el código a continuación.

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a new HtmlToPdf renderer instance
        var renderer = new HtmlToPdf();

        // Define the HTML content with a header
        string header = "<h1>Hello IronPDF!</h1>";

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(header);

        // Define the HTML footer with page numbers
        HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
        };

        // Add footer to the PDF
        pdf.AddHtmlFooters(htmlFooter);

        // Save the PDF document to a file
        pdf.SaveAs("output.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        // Create a new HtmlToPdf renderer instance
        var renderer = new HtmlToPdf();

        // Define the HTML content with a header
        string header = "<h1>Hello IronPDF!</h1>";

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(header);

        // Define the HTML footer with page numbers
        HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"
        };

        // Add footer to the PDF
        pdf.AddHtmlFooters(htmlFooter);

        // Save the PDF document to a file
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create a new HtmlToPdf renderer instance
		Dim renderer = New HtmlToPdf()

		' Define the HTML content with a header
		Dim header As String = "<h1>Hello IronPDF!</h1>"

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)

		' Define the HTML footer with page numbers
		Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}</i></center>"}

		' Add footer to the PDF
		pdf.AddHtmlFooters(htmlFooter)

		' Save the PDF document to a file
		pdf.SaveAs("output.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Primero, definimos el texto HTML que debe convertirse en un PDF. Este contenido HTML puede consistir en un solo párrafo HTML o una página HTML completa. A continuación, creamos una instancia de la clase HtmlToPdf, que ofrece la función de conversión de HTML a PDF RenderHtmlAsPdf.

El contenido HTML se pasa como argumento a la función RenderHtmlAsPdf. Especificamos el material HTML que debe convertirse en un PDF. Los números de página se representan como marcadores de posición, o el {page} de {total-pages} en la parte del pie de página de este texto HTML.

El documento PDF creado es devuelto por este método como un objeto PdfDocument. Usando el método SaveAs, guardamos el documento PDF en un archivo con el nombre 'output.pdf'. Alternativamente, podemos usar la función OpenInDefaultPDFViewer para abrir el documento PDF creado con el lector de PDF predeterminado del sistema. También podemos usar el método anterior para agregar números de página a un archivo PDF existente.

Cómo agregar números de página en PDF usando iTextSharp en C#: Figura 2 - IronPDF: PDF generado con números de página

Para aprender más sobre el código de IronPDF, consulta aquí.

Añadir números de página con iTextSharp

Primero, usemos iTextSharp para generar un nuevo documento PDF. Aquí hay una ilustración básica de cómo hacer un nuevo documento PDF con un número de página:

using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));

            // Open the document to add content
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));

            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();

            // Close the document
            doc.Close();
        }
    }

    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }

        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);

            // Create a table to hold the page number
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;

            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);

            // Write the table at the bottom of the page
            table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
        }

        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Create a new PDF document
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream("output.pdf", FileMode.Create));

            // Open the document to add content
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));

            // Attach page number event to PDF writer
            writer.PageEvent = new PageNumberEventHandler();

            // Close the document
            doc.Close();
        }
    }

    public class PageNumberEventHandler : PdfPageEventHelper
    {
        public override void OnOpenDocument(PdfWriter writer, Document document)
        {
            base.OnOpenDocument(writer, document);
        }

        public override void OnEndPage(PdfWriter writer, Document document)
        {
            base.OnEndPage(writer, document);

            // Create a table to hold the page number
            PdfPTable table = new PdfPTable(1);
            table.TotalWidth = 300f;
            table.HorizontalAlignment = Element.ALIGN_CENTER;

            PdfPCell cell = new PdfPCell(new Phrase($"Page {writer.PageNumber}"));
            cell.Border = 0;
            table.AddCell(cell);

            // Write the table at the bottom of the page
            table.WriteSelectedRows(0, -1, 150f, document.Bottom, writer.DirectContent);
        }

        public override void OnCloseDocument(PdfWriter writer, Document document)
        {
            base.OnCloseDocument(writer, document);
        }
    }
}
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Namespace ConsoleApp1
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Create a new PDF document
			Dim doc As New Document()
			Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("output.pdf", FileMode.Create))

			' Open the document to add content
			doc.Open()
			doc.Add(New Paragraph("Hello, world!"))

			' Attach page number event to PDF writer
			writer.PageEvent = New PageNumberEventHandler()

			' Close the document
			doc.Close()
		End Sub
	End Class

	Public Class PageNumberEventHandler
		Inherits PdfPageEventHelper

		Public Overrides Sub OnOpenDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnOpenDocument(writer, document)
		End Sub

		Public Overrides Sub OnEndPage(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnEndPage(writer, document)

			' Create a table to hold the page number
			Dim table As New PdfPTable(1)
			table.TotalWidth = 300F
			table.HorizontalAlignment = Element.ALIGN_CENTER

			Dim cell As New PdfPCell(New Phrase($"Page {writer.PageNumber}"))
			cell.Border = 0
			table.AddCell(cell)

			' Write the table at the bottom of the page
			table.WriteSelectedRows(0, -1, 150F, document.Bottom, writer.DirectContent)
		End Sub

		Public Overrides Sub OnCloseDocument(ByVal writer As PdfWriter, ByVal document As Document)
			MyBase.OnCloseDocument(writer, document)
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Primero, creamos un nuevo objeto para Document y PdfWriter, lo que nos permite crear un archivo PDF vacío. Puedes incluir texto, fotos, tablas y otros tipos de material en tu documento PDF. Usemos un Paragraph para agregar algo de texto de ejemplo para fines de demostración. El paso importante ahora es agregar números de página al documento PDF. Usaremos los eventos de página de iTextSharp para esto. Comenzamos definiendo una clase que hereda de la clase PdfPageEventHelper para poder sobrescribir métodos que se llaman cuando ocurren eventos específicos durante el proceso de generación del PDF.

La función OnEndPage se sobrescribe en esta clase para agregar una tabla que tiene una sola celda que contiene el número de página actual. Por último, antes de cerrar el documento, debemos conectar una instancia de nuestra clase PageNumberEventHandler al objeto PdfWriter. Con esta configuración, la función OnEndPage de la clase PageNumberEventHandler se llamará cada vez que se agregue una nueva página al documento PDF, agregando el número de página en la parte inferior de cada página. También podemos usar un documento PDF existente para agregar números de página.

Cómo Añadir Números de Página en PDF usando iTextSharp en C#: Figura 3 - iTextSharp: PDF generado con números de página

Conclusión

En resumen, la especialización, la facilidad de uso y la integración continua de IronPDF con entornos .NET lo posicionan como la mejor opción para escenarios que requieren conversión de HTML a PDF y funcionalidades relacionadas, a pesar de que iTextSharp sigue siendo un fuerte competidor en el ámbito de librerías de manipulación de PDF en C#. Con IronPDF, puedes crear facturas, informes y documentos producidos dinámicamente a partir de contenido HTML con la facilidad, efectividad y adaptabilidad requeridas para tener éxito en el entorno de desarrollo moderno.

Una licencia permanente, opciones de actualización y un año de mantenimiento de software están todos incluidos en la edición Lite de IronPDF. El período de prueba con marca de agua permite a los usuarios evaluar el producto en entornos prácticos. Visita la página de licencia para más detalles. Visita este sitio web para obtener más información sobre Iron Software.

Preguntas Frecuentes

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

Puedes agregar números de página a un PDF usando IronPDF definiendo contenido HTML con marcadores de posición para el número de página y utilizando el método AddHtmlFooters para aplicarlo como pie de página en tu PDF.

¿Cuáles son los beneficios de usar IronPDF para la manipulación de PDF?

IronPDF ofrece capacidades sólidas del marco PDF.NET, compatible con HTML5, JavaScript, CSS y conversiones de imagen a PDF, lo que facilita la manipulación de PDFs con encabezados y pies de página personalizados.

¿Cómo se compara iTextSharp con IronPDF para agregar números de página?

iTextSharp utiliza la clase PdfPageEventHelper para manejar los números de página, mientras que IronPDF proporciona un enfoque más simple que permite definir pies de página HTML con marcadores de posición para números de página.

¿Puedo manipular archivos PDF existentes para agregar números de página?

Sí, usando IronPDF, puedes agregar números de página a archivos PDF existentes renderizando pies de página HTML con marcadores de posición para números de página y combinándolos con el documento original.

¿Cuál es el método preferido para convertir HTML a PDF?

IronPDF es preferido para la conversión de HTML a PDF debido a su integración perfecta con entornos .NET y su capacidad para manejar HTML5, JavaScript y CSS.

¿Cuáles son los pasos de instalación para usar IronPDF en un proyecto C#?

Puedes instalar IronPDF en un proyecto C# utilizando el Administrador de Paquetes NuGet en Visual Studio buscando 'IronPDF' y agregándolo a tu proyecto.

¿Cómo garantizo que mis PDFs tengan números de página precisos usando C#?

Usando IronPDF, asegura que tus números de página sean precisos definiendo una plantilla HTML con marcadores de posición para los números de página y aplicándola consistentemente en todas las páginas del PDF.

¿Hay opciones de licencia disponibles para IronPDF?

IronPDF ofrece una edición 'Lite' con una licencia permanente, opciones de actualización y un año de mantenimiento de software, junto con un período de prueba con marca de agua para evaluación.

¿Dónde puedo encontrar ejemplos detallados y documentación para usar IronPDF?

Se puede encontrar documentación completa y ejemplos para usar IronPDF en su sitio web oficial en ironpdf.com.

¿IronPDF es totalmente compatible con .NET 10 y puedo usar funciones de numeración de páginas en un proyecto .NET 10?

Sí, IronPDF es compatible con .NET 10 y todas sus funciones, incluida la numeración de páginas a través de marcadores de posición en encabezados o pies de página, funcionan de inmediato en proyectos .NET 10 sin ninguna configuración especial ni soluciones alternativas.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más