Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
"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.
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.
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í.
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:
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.
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.
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 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>"
};
// Add footer
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>"
};
// Add footer
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>"}
' Add footer
pdf.AddHtmlFooters(htmlFooter)
pdf.SaveAs("output.pdf")
End Sub
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.
Para obtener más información sobre el código IronPDF, consulte aquí.
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)
{
// Create a new PDF document
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
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);
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)
{
// Create a new PDF document
Document doc = new Document();
PdfWriter writer = PdfWriter.GetInstance(document, new FileStream("output.pdf", FileMode.Create));
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);
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)
' Create a new PDF document
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!"))
' 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)
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
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.
En resumen, IronPDFLa 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.
9 productos API .NET para sus documentos de oficina