Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
PDF son las siglas de "Portable Document Format", un formato de archivo desarrollado por Adobe. Los PDF son útiles para presentar documentos que requieren formatear el texto y las imágenes que contienen. Los archivos PDF desempeñan un papel importante en el mundo moderno y se utilizan en todo tipo de sectores empresariales para fines como la facturación y la generación de documentos. Hoy en día, la generación de PDF es casi intuitiva gracias a las bibliotecas PDF disponibles en el mercado. Cuando decida utilizar una biblioteca PDF para su proyecto, es importante tener en cuenta las características y ventajas de cada una para poder seleccionar la biblioteca que mejor se adapte a usted.
En este artículo, compararemos dos de las bibliotecas PDF .NET más populares, estas son:
iText PDF
Las bibliotecas IronPDF e iText PDF se utilizan para crear, leer y modificar archivos PDF en su aplicación o proyecto Microsoft .NET. Para decidir qué biblioteca es la mejor para su aplicación, vamos a comparar las características de las dos bibliotecas antes de pasar a los costes de rendimiento para convertir y manipular los PDF. Ambas bibliotecas son compatibles con Microsoft .NET Frameworks. También registraremos el tiempo de duración de cada biblioteca para su análisis.
IronPDF es una potente biblioteca PDF .NET utilizada por los desarrolladores para crear, leer y modificar fácilmente archivos PDF. Internamente, IronPDF utiliza un motor Chromium e incluye muchas funciones útiles y potentes, como la conversión de archivos HTML5, JavaScript, CSS e imágenes a PDF, la adición de encabezados y pies de página personalizados y la representación de PDF exactamente como se muestran en un navegador. IronPDF es compatible con varios formatos web y net, como HTML, ASPX, Razor View y MVC. Entre las principales características de IronPDF se incluyen:
iText PDF es una biblioteca Java de código abierto que puede convertir texto en documentos PDF. iText sigue un esquema de software con licencia AGPL. APGL es una licencia de software libre y de código abierto.
En este artículo, vamos a utilizar una aplicación de consola para generar documentos PDF. Para empezar, abra la aplicación Microsoft Visual Studio y seleccione "nuevo proyecto" en el menú de archivos y, a continuación, "Aplicación de consola".
Introduzca un nombre de proyecto y seleccione una ruta de archivo. A continuación, haga clic en el botón Crear. Además, seleccione el .NET Framework deseado, como se muestra en la siguiente captura de pantalla:
Microsoft Visual Studio generará ahora la estructura para la aplicación seleccionada. Si ha seleccionado la consola, Windows, y la aplicación web ahora se abrirá el archivo program.cs donde se puede introducir el código y construir / ejecutar la aplicación.
Seleccione la versión de .NET framework. En este ejemplo, vamos a utilizar .NET 5.0
A continuación, podemos añadir la biblioteca para probar el código.
La biblioteca IronPDF puede descargarse e instalarse de cuatro maneras:
Visual Studio proporciona la opción NuGet Package Manager para instalar el paquete directamente en la solución. La siguiente captura de pantalla muestra cómo abrir el Gestor de paquetes NuGet.
Proporciona un cuadro de búsqueda para encontrar paquetes del sitio web de NuGet. En el gestor de paquetes podemos simplemente buscar "IronPDF", como se muestra en la siguiente captura de pantalla:
En la imagen superior vemos la lista de los resultados de búsqueda relacionados. Seleccione las opciones necesarias para instalar el paquete en su sistema.
En Visual Studio Tool Vaya a Herramientas-> Gestor de paquetes NuGet -> Consola del gestor de paquetes
Introduzca la siguiente línea en la pestaña de la consola del gestor de paquetes:
Install-Package IronPdf
El paquete se descargará y se instalará en el proyecto actual, listo para ser utilizado.
La tercera forma es descargar el paquete NuGet directamente del sitio web.
Haga clic en este enlace para descargar el último paquete directamente desde nuestro sitio web. Tras la descarga, sigue estos pasos para añadir el paquete a tu proyecto:
La biblioteca iText puede descargarse e instalarse de cuatro maneras:
Descarga directa desde el sitio web de iText Source.
Los tres primeros métodos son los mismos para las bibliotecas IronPDF e iText. El único método diferente. Es importante tener en cuenta que al añadir iText a través de Visual Studio, debe instalar dos paquetes.
En primer lugar, busque iText en el gestor de paquetes NuGet. Necesitamos instalar tanto itext7 como iText.pdfhtml. porque estos paquetes tienen sus características divididas en varios paquetes.
Si prefiere la línea de comandos Visual, los paquetes a instalar son los siguientes:
Install-Package itext7
Install-Package itext7.pdfhtml
iText 7 es la última versión, por lo que estamos utilizando esa versión en nuestra solución.
El código fuente estará disponible en GitHub aquí para iText 7.
Podemos conseguir iText 7 aquí.
Puede obtener el código fuente que contiene todos los archivos de clase relacionados con iText 7 e incluirlo en la solución como referencia.
Tanto la biblioteca PDF como el conversor de páginas web a PDF son útiles. Veamos cómo podemos crear un archivo PDF a partir de la URL de una página web.
Podemos crear fácilmente un PDF con IronPDF. Generará un archivo fuente de página web a partir de una URL y lo convertirá en un nuevo documento.
Los siguientes pasos facilitan la creación de un documento PDF.
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
namespace PdfConsoleApp
{
internal class Program
{
public static void Main(string [] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
Pdf.SaveAs("result.pdf");
// or optionally:
var Renderer = new IronPdf.ChromePdfRenderer().
RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf");
}
}
}
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
namespace PdfConsoleApp
{
internal class Program
{
public static void Main(string [] args)
{
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
Pdf.SaveAs("result.pdf");
// or optionally:
var Renderer = new IronPdf.ChromePdfRenderer().
RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf");
}
}
}
Imports System.Diagnostics
Imports System.IO
Imports System.Net
Imports System.Text
Namespace PdfConsoleApp
Friend Class Program
Public Shared Sub Main(ByVal args() As String)
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program")
Pdf.SaveAs("result.pdf")
' or optionally:
Dim Renderer = (New IronPdf.ChromePdfRenderer()).RenderUrlAsPdf("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program").SaveAs("result.pdf")
End Sub
End Class
End Namespace
Más arriba se han incluido dos métodos para convertir la URL de una página web en un documento PDF y guardarlo como en el ejemplo anterior. El primer método consiste en crear un documento mediante la construcción de un documento PDF IronPDF, mientras que el otro método consiste en renderizar la URL y guardarla como PDF en la misma línea. Esto descarga la fuente de la página en un trozo y lo convierte en documentos para acelerar el proceso.
En el ejemplo anterior, utilizamos RenderUrlAsPdf para convertir la página web en un documento. Sólo hay que indicar el enlace y la ubicación de almacenamiento. La conversión a PDF tarda 7,3 segundos en completarse.
iText PDF también nos permite crear un documento PDF. En iText, necesitamos la función WebClient mientras necesitamos generar PDF desde la URL. que nos permite descargar la URL en una cadena y convertirla en un archivo PDF.
En iText, necesitamos diferentes clases para generar un documento PDF. PdfWriter es una clase que nos permite crear un archivo vacío en la ubicación dada y crear un objeto para esa clase. PdfDocument es también una clase que nos ayudará a leer un PDF y escribirlo en un objeto PDF-documento. PageSize es también una clase que nos ayuda a manejar la paginación del documento.
ConverterProperties es una clase que se utiliza para dar formato a la cadena de página web en el documento PDF hay diferentes para establecer el ancho de la página etc.,
HtmlConverter es una clase del namespace iText.Html2pdf. El convertidor HTML es una clase que tiene una función llamada "ConvertTopdf". Esta es una función estática que nos permite escribir la página web descargada en un archivo PDF. Pero, necesitamos pasar el objeto Pdfwriter y ConverterProperties como parámetros al convertidor HTML.
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
internal class Program
{
public static void Main(string [] args)
{
PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
string strdownload = new WebClient().DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
HtmlConverter.ConvertToPdf(strdownload, pdf, properties);
}
}
}
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
internal class Program
{
public static void Main(string [] args)
{
PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
string strdownload = new WebClient().DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program");
HtmlConverter.ConvertToPdf(strdownload, pdf, properties);
}
}
}
Imports iText.Html2pdf
Imports iText.Kernel.Geom
Imports iText.Kernel.Pdf
Imports iText.StyledXmlParser.Css.Media
Namespace PdfConsoleApp
Friend Class Program
Public Shared Sub Main(ByVal args() As String)
Dim writer As New PdfWriter("itext.pdf")
Dim pdf As New PdfDocument(writer)
Dim pageSize As New PageSize(850, 1700)
pdf.SetDefaultPageSize(pageSize)
Dim properties As New ConverterProperties()
Dim mediaDeviceDescription As New MediaDeviceDescription(MediaType.SCREEN)
mediaDeviceDescription.SetWidth(pageSize.GetWidth())
properties.SetMediaDeviceDescription(mediaDeviceDescription)
Dim strdownload As String = (New WebClient()).DownloadString("https://en.wikipedia.org/wiki/%22Hello,_World!%22_program")
HtmlConverter.ConvertToPdf(strdownload, pdf, properties)
End Sub
End Class
End Namespace
Resultado:
Aquí está el PDF generado a partir de IronPDF e iText. El PDF de la izquierda se genera con IronPDF y el de la derecha con iText. A continuación se muestra el tiempo se tarda en generar el PDF.
Los resultados cambiarán en función del ancho de banda de la red.
Tanto IronPDF como iText permiten convertir cadenas HTML en PDF. Ambas bibliotecas ofrecen una forma sencilla de hacerlo.
Podemos transformar la fuente de la página web en un documento con la ayuda de IronPDF. A continuación se muestra un ejemplo de cómo convertir una cadena HTML en un documento. También tiene la capacidad de convertir cualquier elemento de etiqueta en un documento PDF.
var Renderer = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf");
var Renderer = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf");
Dim Renderer = (New IronPdf.ChromePdfRenderer()).RenderHtmlAsPdf("<h1>Hello world!!</h1>").SaveAs("result.pdf")
El ejemplo anterior muestra cómo utilizar RenderHtmlAsPdf para transformar una cadena HTML. Además, podemos suministrar cualquier número de cadenas HTML a la función que convierte la fuente de la página web en una cadena. Podemos guardar el documento después de recuperar la cadena utilizando la función Guardar como. Tarda 2,7 segundos en completar el proceso.
Con la ayuda de iText PDF, podemos convertir cadenas fuente de páginas web en PDF. A continuación se muestra un ejemplo de cómo crear un documento a partir de una cadena fuente de una página web. También es capaz de convertir cualquier elemento de la etiqueta en un nuevo documento.
PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties);
PdfWriter writer = new PdfWriter("itext.pdf");
PdfDocument pdf = new PdfDocument(writer);
PageSize pageSize = new PageSize(850, 1700);
pdf.SetDefaultPageSize(pageSize);
ConverterProperties properties = new ConverterProperties();
MediaDeviceDescription mediaDeviceDescription =
new MediaDeviceDescription(MediaType.SCREEN);
mediaDeviceDescription.SetWidth(pageSize.GetWidth());
properties.SetMediaDeviceDescription(mediaDeviceDescription);
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties);
Dim writer As New PdfWriter("itext.pdf")
Dim pdf As New PdfDocument(writer)
Dim pageSize As New PageSize(850, 1700)
pdf.SetDefaultPageSize(pageSize)
Dim properties As New ConverterProperties()
Dim mediaDeviceDescription As New MediaDeviceDescription(MediaType.SCREEN)
mediaDeviceDescription.SetWidth(pageSize.GetWidth())
properties.SetMediaDeviceDescription(mediaDeviceDescription)
HtmlConverter.ConvertToPdf("<h1>Hello world!!</h1>", pdf, properties)
Esto es similar a la conversión de URL a PDF. El único paso que tenemos que eliminar es el WebClient, y en su lugar, tenemos que utilizar la cadena fuente de la página web en el parámetro. Obtendrá la cadena dada y la convertirá en un nuevo documento.
Resultado:
Podemos leer PDF documentos utilizando IronPDF y EO.pdf.
IronPDF nos ayuda a leer archivos PDF existentes. A continuación se muestra la muestra utilizada para leer PDFs utilizando IronPDF.
var pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf");
string AllText = pdfDocument.ExtractAllText();
var pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf");
string AllText = pdfDocument.ExtractAllText();
Dim pdfDocument = IronPdf.PdfDocument.FromFile("result.pdf")
Dim AllText As String = pdfDocument.ExtractAllText()
El método Fromfile se utiliza para leer un PDF de un archivo existente y transformarlo en objetos PDF-documento, como se muestra en el código anterior. Podemos leer el texto y las imágenes accesibles en la página PDF utilizando este objeto. Se tarda apenas milisegundos en completar el proceso.
El software iText también nos permite leer documentos sin la ayuda de un lector externo.
using (PdfReader reader = new PdfReader("result.pdf"))
{
text = new StringBuilder();
PdfDocument pdf = new PdfDocument(reader);
var strategy = new LocationTextExtractionStrategy();
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
var pdfpage = pdf.GetPage(i);
text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy));
}
}
using (PdfReader reader = new PdfReader("result.pdf"))
{
text = new StringBuilder();
PdfDocument pdf = new PdfDocument(reader);
var strategy = new LocationTextExtractionStrategy();
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
var pdfpage = pdf.GetPage(i);
text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy));
}
}
Using reader As New PdfReader("result.pdf")
text = New StringBuilder()
Dim pdf As New PdfDocument(reader)
Dim strategy = New LocationTextExtractionStrategy()
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pdfpage = pdf.GetPage(i)
text.Append(PdfTextExtractor.GetTextFromPage(pdfpage, strategy))
i += 1
Loop
End Using
El código anterior muestra que podemos leer documentos utilizando el lector de PDF. Lo único que tenemos que hacer es pasar la ubicación del archivo como parámetro. El lector de PDF lee el documento y lo convierte en un objeto usando el objeto podemos leer el texto de todas las páginas para eso necesitamos usarlas para un bucle.
Resultado:
Tanto las bibliotecas IronPDF como iText PDF permiten a los usuarios dividir las páginas en documentos separados. Ambos ofrecen también un método sencillo para conseguirlo.
IronPDF nos permite dividir las páginas de un documento en documentos separados. A continuación se muestra un ejemplo de cómo dividir páginas en documentos separados.
var Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf");
for (int i = 0; i < Splitdocument.PageCount; i++)
{
Splitdocument.CopyPage(i).SaveAs("Ironpdfmerged"+i.ToString()+".pdf");
}
var Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf");
for (int i = 0; i < Splitdocument.PageCount; i++)
{
Splitdocument.CopyPage(i).SaveAs("Ironpdfmerged"+i.ToString()+".pdf");
}
Dim Splitdocument = IronPdf.PdfDocument.FromFile("result.pdf")
For i As Integer = 0 To Splitdocument.PageCount - 1
Splitdocument.CopyPage(i).SaveAs("Ironpdfmerged" & i.ToString() & ".pdf")
Next i
En el ejemplo anterior, primero cargamos un documento existente utilizando el método fromfile de la clase pdf-document. El método copypage nos permite copiar páginas de un documento existente, y el método Saveas nos permite guardar el documento en un archivo separado. Los números de página empiezan todos por cero. En consecuencia, debemos proporcionar un número de página que empiece por cero.
También podemos dividir páginas en un documento PDF utilizando iText 7. Sin embargo, primero tenemos que escribir un archivo de clase independiente que herede PdfSplitter del espacio de nombres itext.kernel.Utils. Esto creará una instancia para dividir los datos PDF. He aquí un ejemplo de código:
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Utils;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
internal class Program
{
static void Main(string [] args)
{
using (var pdfDoc = new PdfDocument(new PdfReader("result.pdf")))
{
var outputDir = @"Itext_{0}.pdf";
var splitter = new CustomPdfSplitter(pdfDoc, outputDir);
var splittedDocs = splitter.SplitByPageCount(1);
foreach (var splittedDoc in splittedDocs)
{
splittedDoc.Close();
}
}
Console.ReadKey();
}
}
public class CustomPdfSplitter : PdfSplitter
{
private String dest;
private int partNumber = 1;
public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
{
this.dest = dest;
}
protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
{
return new PdfWriter(String.Format(dest, partNumber++));
}
}
}
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Text;
using iText.Html2pdf;
using iText.Kernel.Geom;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas.Parser;
using iText.Kernel.Pdf.Canvas.Parser.Listener;
using iText.Kernel.Utils;
using iText.StyledXmlParser.Css.Media;
namespace PdfConsoleApp
{
internal class Program
{
static void Main(string [] args)
{
using (var pdfDoc = new PdfDocument(new PdfReader("result.pdf")))
{
var outputDir = @"Itext_{0}.pdf";
var splitter = new CustomPdfSplitter(pdfDoc, outputDir);
var splittedDocs = splitter.SplitByPageCount(1);
foreach (var splittedDoc in splittedDocs)
{
splittedDoc.Close();
}
}
Console.ReadKey();
}
}
public class CustomPdfSplitter : PdfSplitter
{
private String dest;
private int partNumber = 1;
public CustomPdfSplitter(PdfDocument pdfDocument, String dest) : base(pdfDocument)
{
this.dest = dest;
}
protected override PdfWriter GetNextPdfWriter(PageRange documentPageRange)
{
return new PdfWriter(String.Format(dest, partNumber++));
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Hemos creado una clase personalizada que anula el pdfwriter y nos permite renombrar el archivo dividido usando el nombre personalizado usando el nombre de archivo original. Posteriormente, devolverá las páginas PDF a un nuevo elemento de la lista, que podrá utilizarse para guardarlas en un documento independiente.
Resultado:
IronPDF no renderiza HTML a PDF desde un servidor remoto. En su lugar, crea una instancia de un navegador web que cumple con los estándares reales entre bastidores. (sin necesidad de instalar software adicional). El HTML se renderiza con total precisión y en un formato vectorial apto para los más altos estándares de impresión comercial. El resultado es un PDF limpio y de alta calidad. Por lo tanto, IronPDF tiene ventaja sobre iText PDF. IronPDF es muy recomendable para codificadores pragmáticos que busquen trabajar con eficacia y eficiencia. Es abiertamente comercial, con detalles sobre licencias y precios publicados en el sitio web. Puede visitar aquí para conocer nuestras opciones de licencia para IronPDF.
iText PDF admite varios tipos de letra y sólo podemos utilizar una hoja de estilo en línea. No nos permite añadir hojas de estilo externas porque no dispone de un motor o navegador para convertir el HTML en archivos PDF. iText renderiza el HTML correctamente y con precisión, pero crea un archivo PDF de un tamaño muy grande. iText es complejo y no es adecuado para principiantes. iText dispone de una licencia comercial y otra gratuita para desarrolladores. Para obtener más información sobre la licencia iText, haga clic aquí.
IronPDF es una herramienta imprescindible para los programadores pragmáticos que desean trabajar de forma rápida y productiva. Y lo que es más importante, le ahorra tiempo. Los paquetes de licencias IronPDF proporcionan una licencia de por vida, y no hay costes continuos.
Puede descargar IronPDF desde aquí enlace.
9 productos API .NET para sus documentos de oficina