Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
PDF (Formato de documento portátil) es un formato de documento ampliamente utilizado y popular debido a su capacidad para preservar el formato del documento, la seguridad y la portabilidad.
Los archivos PDF se han convertido en uno de los formatos de documento más utilizados en el mundo, y existen varias bibliotecas para crear y manipular PDF en lenguaje C#.
Edición de archivos PDF también puede ser un reto, pero con la ayuda de bibliotecas como iTextSharp DLL e IronPDF, podrá leer, escribir y editar archivos PDF fácilmente utilizando C#.
En este artículo, compararemos dos bibliotecas populares para la manipulación de PDF en C#: iTextSharp y IronPDF. Discutiremos cómo editar archivos PDF utilizando ambas bibliotecas, y luego exploraremos cómo IronPDF es una opción superior en comparación con iTextSharp, especialmente en términos de impresión de salida, rendimiento y precio.
iTextSharp y IronPDF son dos populares bibliotecas para trabajar con archivos PDF en C#. Ambas bibliotecas ofrecen una amplia gama de características y funcionalidades para crear, editar y manipular documentos PDF.
iTextSharp DLL es una adaptación a C# de la biblioteca iText basada en Java. Proporciona una API sencilla y fácil de usar para crear y manipular documentos PDF. iTextSharp es una biblioteca de código abierto disponible bajo licencia AGPL.
IronPDF es una biblioteca .NET diseñada para crear, editar y manipular archivos PDF utilizando C#. Proporciona una API moderna e intuitiva para trabajar con documentos PDF. IronPDF es una biblioteca comercial que viene con un versión de prueba gratuita y una versión de pago.
Tanto iTextSharp como las bibliotecas IronPDF ofrecen una amplia gama de características y funcionalidades para crear, editar y manipular documentos PDF. Sin embargo, IronPDF tiene varias ventajas sobre iTextSharp, que lo convierten en la opción preferida para trabajar con documentos PDF en C#.
Ahora que hemos discutido las diferencias entre iTextSharp y IronPDF, echemos un vistazo a cómo editar archivos PDF utilizando ambas bibliotecas. Veremos ejemplos de cómo añadir texto, campos de formulario y rellenar formularios en un documento PDF existente utilizando iTextSharp y IronPDF.
Antes de empezar, necesitarás lo siguiente:
Biblioteca iTextSharp instalada en su proyecto.
Para instalar la biblioteca iTextSharp en su proyecto, puede utilizar el gestor de paquetes NuGet. Abra su proyecto de Visual Studio y haga clic con el botón derecho en el nombre del proyecto en el Explorador de soluciones. Seleccione "Gestionar paquetes NuGet" en el menú contextual. En el gestor de paquetes NuGet, busque "iTextSharp" e instale la última versión del paquete.
Para crear un nuevo archivo PDF utilizando iTextSharp, necesitamos crear una nueva instancia de la clase "Document" y pasar un nuevo objeto FileStream
a su constructor. He aquí un ejemplo:
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
En el código anterior, creamos un nuevo archivo PDF llamado "newfile.pdf" y le añadimos un nuevo párrafo.
Para editar un archivo PDF existente utilizando iTextSharp, necesitamos crear un objeto PdfReader
para leer el documento PDF existente y un objeto PdfStamper
para modificarlo. He aquí un ejemplo:
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
'Initialize PDF writer
Dim writer As New PdfWriter("wikipedia.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format")
Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
document.Close()
End Using
End Sub
En el código anterior, abrimos un archivo PDF existente llamado "archivoexistente.pdf" y creamos un nuevo archivo PDF llamado "archivoeditado.pdf". Rellenamos los campos del formulario con datos y añadimos una nueva página al archivo PDF.
La clase PdfStamper
ofrece muchas más opciones para editar archivos PDF existentes, como añadir imágenes, crear anotaciones y cambiar el tamaño de la página.
IronPDF es una potente biblioteca PDF para C# que permite editar documentos PDF. En este tutorial, recorreremos los pasos necesarios para editar un archivo PDF existente utilizando IronPDF. Cubriremos diversos aspectos, como la creación de nuevos documentos PDF, la adición de páginas a un PDF existente, la adición de contenido a un PDF y la cumplimentación de campos de formulario en un PDF. A continuación se muestra un código de ejemplo en C# para ilustrar los distintos pasos.
Antes de empezar, asegúrate de que tienes instalado lo siguiente:
Cree un nuevo proyecto C# en Visual Studio. Elija el tipo de proyecto "Aplicación de consola".
Instale la biblioteca IronPDF instalándola en su proyecto a través del gestor de paquetes NuGet.
Install-Package IronPdf
Para cargar un documento PDF existente, puede utilizar la clase PdfDocument
. A continuación se muestra el ejemplo de código para cargar un documento PDF existente:
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
IRON VB CONVERTER ERROR developers@ironsoftware.com
Para añadir una nueva página a un documento existente, puedes utilizar el método AddPage
de la clase PdfDocument
. A continuación se muestra un ejemplo para añadir una nueva página a los PDF existentes:
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
Dim newPage = pdfDoc.AddPage()
newPage.Size = PageSize.Letter
Utilizando IronPDF, el siguiente código puede generar un archivo PDF directamente desde la dirección de una página web. Además, se proporcionan encabezados y pies de página personalizados.
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
' Create a PDF from any existing web page
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50 'millimetres
Renderer.RenderingOptions.MarginBottom = 50
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.EnableJavaScript = True
Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
PDF.SaveAs("wikipedia.pdf")
End Sub
iTextSharp es una popular biblioteca de código abierto que permite a los desarrolladores crear, manipular y extraer datos de documentos PDF en C#. Es una biblioteca bien documentada y ampliamente utilizada que existe desde hace mucho tiempo. Sin embargo, IronPDF es una biblioteca más reciente y moderna que ofrece características y ventajas adicionales, lo que la convierte en una mejor opción para los desarrolladores.
Una de las áreas en las que IronPDF supera a iTextSharp es en sus capacidades de salida. IronPDF ofrece un soporte superior para la conversión de HTML a PDF, lo que permite a los desarrolladores convertir sin esfuerzo páginas HTML en documentos PDF. Esto es especialmente beneficioso para generar informes o documentos con contenido multimedia enriquecido o interactivo. Además, IronPDF permite un control más preciso del diseño y el formato de las páginas, lo que simplifica la creación de documentos PDF que se ajusten con precisión a la apariencia deseada.
El código que sigue utiliza IronPDF para crear un PDF con entrada HTML.
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
' Render any HTML fragment or document to HTML
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim OutputPath = "ChromePdfRenderer.pdf"
PDF.SaveAs(OutputPath)
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
El siguiente código genera un PDF a partir de texto HTML utilizando iText7.
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
En términos de rendimiento, IronPDF también es un claro ganador. Está diseñado para ser más rápido y eficaz que iTextSharp, lo que permite a los desarrolladores generar PDF más rápidamente y con menos recursos del sistema. Esto es especialmente importante cuando se trata de documentos PDF grandes o complejos, en los que el rendimiento puede convertirse en un factor significativo.
Otro aspecto en el que IronPDF tiene ventaja sobre iTextSharp es el precio. Aunque iTextSharp es de uso gratuito para la mayoría de los fines, requiere una licencia comercial para determinados casos de uso, y las licencias comerciales pueden ser bastante caras. Por otro lado, IronPDF ofrece un modelo de precios más asequible, con una gama de opciones disponibles para adaptarse a diferentes necesidades y presupuestos.
Una de las principales diferencias entre iTextSharp e IronPDF es la licencia y el precio.
iTextSharp está licenciado bajo la licencia AGPL, que permite el uso gratuito para proyectos de código abierto, pero requiere una licencia comercial para su uso comercial. La licencia comercial de iTextSharp está disponible en diferentes niveles, con precios basados en las características y el nivel de soporte requeridos, así como en el número de desarrolladores y servidores de despliegue.
Por otro lado, IronPDF es una biblioteca comercial que ofrece una versión de prueba gratuita para que los desarrolladores la evalúen antes de comprarla. IronPDF ofrece opciones de licencia flexibles, incluidas licencias por desarrollador y por servidor, así como licencias empresariales para grandes organizaciones. Los precios de IronPDF se basan en el número de desarrolladores y las funciones necesarias, con descuentos disponibles para licencias multianuales y por volumen.
Mientras que iTextSharp puede ser más rentable para pequeños proyectos de código abierto, las flexibles opciones de licencia y el soporte comercial de IronPDF lo convierten en una opción más viable para proyectos comerciales y grandes organizaciones.
En conclusión, aunque tanto iTextSharp como IronPDF son librerías capaces de manipular PDF en C#, IronPDF destaca como una opción más versátil y eficiente. Con sus funciones avanzadas, API intuitiva y documentación fácil de usar, IronPDF ofrece una experiencia superior para los desarrolladores. Sus flexibles opciones de licencia y su precio asequible lo hacen más adecuado para proyectos comerciales y grandes organizaciones.
Además, IronPDF presume de un mejor rendimiento técnico con tiempos de renderizado más rápidos, un uso eficiente de la memoria y un manejo optimizado de documentos PDF de gran tamaño. Con Iron Software oferta especial de comprar los cinco productos por el precio de dos licencias, los desarrolladores pueden acceder a un completo conjunto de potentes herramientas y bibliotecas para agilizar su proceso de desarrollo de aplicaciones. Si necesita una biblioteca PDF potente y eficaz para sus proyectos en C#, IronPDF es una buena elección.
9 productos API .NET para sus documentos de oficina