COMPARACIóN DE PRODUCTOS

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

Actualizado 3 de abril, 2024
Compartir:

Introducción

"Portable Document Format", o PDF, es un formato de archivo creado por Adobe. Los PDF son muy útiles para presentar trabajos que necesitan un formato para el texto y las fotos. En el mundo actual, los archivos PDF son esenciales y se utilizan para la creación de documentos y la facturación en todos los sectores empresariales. Gracias a las diversas bibliotecas PDF que existen actualmente en el mercado, crear archivos PDF se ha convertido en algo prácticamente instintivo. Para elegir la biblioteca PDF adecuada para usted, es crucial sopesar las ventajas y características de cada una antes de utilizar una para su proyecto.

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

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

  1. Cree un nuevo proyecto C# utilizando cualquier IDE.
  2. Crear un nuevo objeto PDF.
  3. Añadir números de página al pie de página HTML.
  4. Crear un PDF a partir de material HTML.
  5. Guarde un archivo PDF en su ordenador.

Qué es IronPDF

IronPDF es un sólido marco PDF .NET que los desarrolladores utilizan para producir, visualizar y editar archivos PDF con facilidad. IronPDF es una sofisticada herramienta que funciona internamente con un motor de cromo. Puede convertir archivos HTML5, JavaScript, CSS e imágenes a PDF, añadir encabezados y pies de página personalizados y producir PDF exactamente como aparecen en un navegador. IronPDF admite muchos formatos en línea y en red, como HTML, ASPX, Razor View y MVC.

Características de IronPDF

  • utilizando código .NET C# para crear, leer y, simplemente, editar archivos PDF.
  • El proceso de crear PDFs a partir de un enlace URL de un sitio web mientras se gestionan User-Agents, Proxies, Cookies, cabeceras HTTP y variables de formulario para permitir el inicio de sesión utilizando formularios de inicio de sesión HTML.
  • el proceso de eliminar imágenes de archivos PDF ya existentes.
  • Incluye los elementos de un PDF: tabla, texto, fotos, marcadores, marcas de agua, encabezados, pies de página y otros.
  • Capacidad para separar y combinar páginas de numerosos documentos PDF con facilidad.

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

Instalación de IronPDF

Dentro de las herramientas de Visual Studio, seleccione el gestor de paquetes NuGet y encontrará la interfaz de línea de comandos de Visual en Herramientas. El siguiente comando debe introducirse en la pestaña del terminal de gestión de paquetes.

Install-Package IronPdf

O podemos utilizar el método del gestor de paquetes. La instalación del paquete directamente en la solución es posible con la opción NuGet Package Manager de Visual Studio. Existe un cuadro de búsqueda para localizar paquetes en el sitio web de NuGet. Solo tenemos que buscar "IronPDF" en el gestor de paquetes, como ilustra la captura de pantalla siguiente:

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

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

Ahora que el paquete se ha descargado e instalado, puede utilizarse en el proyecto actual.

Qué es iTextSharp

iTextSharp es una biblioteca flexible para producir y modificar documentos PDF en C#. Ofrece varias funciones, como encriptación, fusión de PDF, extracción de texto e imágenes y mucho más. iTextSharp es una herramienta eficaz para numerosas tareas, incluida la adición de números de página a los PDF.

Características de iTextSharp

  • La biblioteca iText dispone de una API para generar documentos PDF.
  • Tanto las cadenas HTML como las XML pueden convertirse en archivos PDF con el programa iText.
  • Podemos añadir marcadores, números de página y marcadores a nuestros documentos PDF utilizando la biblioteca iText.
  • También podemos dividir un documento PDF en varios PDF o fusionar varios documentos PDF en uno solo utilizando la biblioteca iText.
  • Podemos modificar formularios PDF con iText.

Instalar iTextSharp

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

Si elige la interfaz Visual Command-Line, deberá instalar los siguientes paquetes:

Install-Package iTextSharp

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

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

Añadir números de página a archivos PDF es muy sencillo gracias a la completa biblioteca de IronPDF. Para ilustrarlo, véase el código siguiente.

using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    //  Añadir pie de página
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
using IronPdf;
static void main(string [] args)
{ 
    var renderer = new IronPdf.HtmlToPdf();
    private string header = "<h1>Hello Ironpdf!<h1>";
    PdfDocument pdf = renderer.RenderHtmlAsPdf(header);
    HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
    {
        HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
    };
    //  Añadir pie de página
    pdf.AddHtmlFooters(htmlFooter);
    pdf.SaveAs("output.pdf");
}
Imports IronPdf
Shared Sub main(ByVal args() As String)
	Dim renderer = New IronPdf.HtmlToPdf()
	private String header = "<h1>Hello Ironpdf!<h1>"
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(header)
	Dim htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}
	'  Añadir pie de página
	pdf.AddHtmlFooters(htmlFooter)
	pdf.SaveAs("output.pdf")
End Sub
VB   C#

En primer lugar, definimos el texto HTML que debe convertirse en PDF. Este contenido HTML puede consistir en un único párrafo HTML o en 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 PDF. Los números de página se representan como marcadores de posición, o el {página} de {total-páginas} __en la parte de pie de página de este texto HTML.

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

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

Para obtener más información sobre el código IronPDF, consulte aquí.

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

En primer lugar, vamos a utilizar iTextSharp para generar un nuevo documento PDF. He aquí una ilustración básica de cómo crear 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)
        {
            //  Crear un nuevo documento PDF
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));
            //  Adjuntar evento de número de página a PDF writer
            writer.PageEvent = new PageNumberEventHandler();
            //  Cerrar el documento
            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);
            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);
            table.WriteSelectedRows(0, -1, 150, 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)
        {
            //  Crear un nuevo documento PDF
            Document doc = new Document();
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
            doc.Open();
            doc.Add(new Paragraph("Hello, world!"));
            //  Adjuntar evento de número de página a PDF writer
            writer.PageEvent = new PageNumberEventHandler();
            //  Cerrar el documento
            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);
            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);
            table.WriteSelectedRows(0, -1, 150, 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)
			'  Crear un nuevo documento PDF
			Dim doc As New Document()
			Dim writer As PdfWriter = PdfWriter.GetInstance(document, New FileStream("output.pdf", FileMode.Create))
			doc.Open()
			doc.Add(New Paragraph("Hello, world!"))
			'  Adjuntar evento de número de página a PDF writer
			writer.PageEvent = New PageNumberEventHandler()
			'  Cerrar el documento
			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)
			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)
			table.WriteSelectedRows(0, -1, 150, 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
VB   C#

En primer lugar, vamos a crear un nuevo objeto para Document y PdfWriter que nos permita crear un archivo PDF vacío. Puede incluir texto, fotos, tablas y otros tipos de material en el documento PDF. Utilicemos el nuevo párrafo para añadir un texto de ejemplo a modo de demostración. El paso importante ahora es añadir números de página al documento PDF. Para ello utilizaremos los eventos de página de iTextSharp. Para poder anular métodos que son llamados cuando ocurren eventos específicos durante el proceso de generación de PDF, primero construyamos una clase que herede de la clase PdfPageEventHelper.

La función OnEndPage se sobrescribe en esta clase para añadir una tabla que tenga una única celda que contenga el número de página actual. Por último, antes de cerrar el documento, necesitamos conectar una instancia de nuestra clase PageNumberEventHandler al objeto PdfWriter. Con esta configuración, la función OnEndPage de la clase PageNumberEventHandler será llamada cada vez que se añada una nueva página al documento PDF, añadiendo el número de página en la parte inferior de cada página. También podemos utilizar un documento PDF existente para añadir números de página.

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

Conclusión

En resumen, IronPDF La especialización, facilidad de uso y perfecta integración con entornos .NET de iTextSharp la sitúan como la mejor opción para escenarios que requieran la conversión de HTML a PDF y funcionalidades relacionadas, aunque iTextSharp sigue siendo un fuerte competidor en el panorama de las bibliotecas de manipulación de PDF en C#. Con IronPDF, puede crear facturas, informes y documentos producidos dinámicamente a partir de contenido HTML con la facilidad, eficacia y adaptabilidad necesarias para triunfar en el entorno de desarrollo moderno.

La edición Lite de IronPDF incluye una licencia permanente, opciones de actualización y un año de mantenimiento del software. El periodo de prueba con marca de agua permite a los usuarios evaluar el producto en la práctica. Visite la licencia página. Ir a sitio web para obtener más información sobre Iron Software.

< ANTERIOR
Herramientas de elaboración de informes en C# (comparación de funciones)
SIGUIENTE >
Cómo leer documentos PDF en C# con iTextSharp:

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 9,974,197 Ver licencias >
123