Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Al trabajar con archivos PDF en C#.NET, es preferible utilizar bibliotecas de manipulación y generación de PDF a realizar nuestras tareas desde cero. SpirePDF y IronPDF ambos ofrecen la posibilidad de crear, editar e imprimir archivos PDF en .NET y .NET Core. También pueden leer PDF ejemplos de texto, datos, tablas e imágenes de forma muy competente.
En este artículo examinaremos estas dos bibliotecas. Mostraremos qué puede hacer cada biblioteca PDF y compararemos cómo lo hacen mediante ejemplos de código y tutoriales paso a paso. Aunque este artículo no puede cubrir todas las características de ambas bibliotecas PDF, explicará los usos más comunes y populares de cada una. Así podrá decidir cuál se adapta mejor a sus proyectos.
IronPDF es la biblioteca de renderizado de HTML a PDF para C# y Java. Convierta sus páginas web en PDF funcionales y perfectos como píxeles de forma rápida y con un mínimo de líneas de código. Obtenga más información sobre las capacidades de IronPDF for .NET C# en este artículo. Más información sobre IronPDF for Java aquí.
Muchas veces las herramientas que nos proporciona Microsoft como parte de Visual Studio carecen de funcionalidad o usabilidad. Aquí es donde entran en juego las bibliotecas de terceros. Los desarrolladores recurren a bibliotecas de terceros por su facilidad de uso o, sobre todo, por sus prestaciones.
En este artículo se compararán dos de las bibliotecas PDF más populares para desarrolladores .NET y .NET Core. Estas dos bibliotecas son:
Spire.PDF para .NET es una API que se puede aplicar para crear, editar, escribir, leer y manejar archivos PDF sin necesidad de dependencias externas en aplicaciones C#, VB.NET, ASP.NET, .NET Core, Xamarin. Con Spire.PDF puede crear archivos PDF desde cero o procesar documentos PDF existentes únicamente mediante C#/VB.NET sin tener que instalar Adobe Acrobat.
IronPDF permite a los desarrolladores .NET y .NET Core generar, combinar, dividir, editar y extraer contenido pdf fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así como crear PDF a partir de archivos HTML, ASPX, CSS, JS e imágenes.
IronPDF utiliza un renderizador de navegador web basado en Chromium para convertir HTML a PDF. Esto permite a los desarrolladores generar PDF a partir de HTML, imágenes y CSS y trabajar en estrecha colaboración con los activos web existentes y en paralelo con los diseñadores durante un proyecto.
IronPDF se centra en la productividad de los desarrolladores. La biblioteca simplifica muchas tareas complejas comunes del código PDF en cómodos métodos C# para extraer texto e imágenes, firmar PDFS, editar PDFs con nuevo HTML y mucho más - sin que el desarrollador necesite estudiar el estándar del documento PDF para entender cómo conseguir su mejor resultado.
Veamos algunas de sus características.
IronPDF | SpirePDF |
---|---|
Convertir HTML a PDF en C# con IronPDF | Spire.PDF para .NET permite convertir HTML en C#. |
URL a PDF en 3 líneas de código | Se requiere una solución para tratar de convertir de URL |
Fácil conversión de cadenas HTML a PDF | Puede convertir cadenas HTML a PDF |
Fuentes de iconos (Fontello, Bootstrap, FontAwesome) | 14 fuentes básicas Fuentes Type 1 Fuentes Type 3 Fuentes CJK Fuentes True Type Soporte Unicode |
Licencias de $749 | Licencias desde 599 |
Opción de licencia | IronPDF | SpirePDF |
---|---|---|
1 promotor, 1 ubicación | $749 | $599 |
1 promotor, proyectos ilimitados, 1 ubicación | $699 | $599 |
Hasta 10 desarrolladores, proyectos ilimitados, hasta 10 ubicaciones | $1199 | $3070 |
Desarrolladores ilimitados, proyectos ilimitados, ubicaciones ilimitadas | $1799 | Sin licencia |
1 producto SaaS/OEM, hasta 50 desarrolladores, ubicaciones ilimitadas | $1599 | $8988 |
Comprar una licencia | Opciones de licencia de IronPDF | Opciones de licencia de SpirePDF |
Ahora, dejemos que el código hable!
En primer lugar, crearemos un proyecto para probar diferentes funciones PDF utilizando cada biblioteca de software.
Cree un sitio web ASP.NET siguiendo los siguientes pasos:
Seleccione ASP.NET Web Application, como se muestra a continuación
Aparecerá la siguiente pantalla y desde ella, seleccione Formularios Web como se muestra a continuación
Hay dos formas principales de instalar IronPDF en su PC, se muestran a continuación:
Descargue la biblioteca IronPDF, como se explicará un poco más adelante.
Hay esencialmente tres maneras de instalar rápidamente el paquete IronPDF NuGet en sus proyectos de Visual Studio, que son:
El gestor de paquetes NuGet se utiliza para descargar e instalar diversos paquetes que puede incluir en sus aplicaciones para mejorar su funcionalidad. Uno de estos paquetes es IronPDF. Para descargar e instalar el paquete IronPDF NuGet, seleccione el menú Proyecto o haga clic con el botón derecho en su proyecto en el Explorador de soluciones. A continuación se muestra una captura de pantalla de cada uno de ellos.
Busque el paquete IronPDF e instálelo como se muestra a continuación.
También puede instalar el paquete IronPDF NuGet utilizando el símbolo del sistema de desarrolladores. En los pasos siguientes se explica cómo.
PM > Install-Package IronPdf
Los siguientes pasos le permiten descargar IronPDF directamente desde NuGet:
La segunda forma de instalar IronPDF es descargándolo directamente haciendo clic aquí para descargar IronPDF.dll.
Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:
Hay tres maneras de instalar el paquete NuGet SpirePDF en sus proyectos de Visual Studio, que incluyen:
Descargue el paquete NuGet directamente de Sitio web NuGet de SpirePDF
En Visual Studio, busque SpirePDF e instale los paquetes correspondientes, como se muestra a continuación. (Los pasos son similares a los mostrados anteriormente)
O, en el símbolo del sistema para desarrolladores (como se ha mostrado anteriormente, introduzca el siguiente comando)
Install-Package Spire.PDF -Versión 6.9.16
O descárguelo directamente de su sitio web:
<a href="https://www.e-iceblue.com/Download/download-pdf-for-net-now.html" target="_blank" rel="nofollow noopener noreferrer">https://www.e-iceblue.com/Download/download-pdf-for-net-now.html</a>
Tendrá que registrar una cuenta.
Si todo ha ido bien, deberías estar preparado para empezar a utilizar las bibliotecas.
<hr class="separator">
## 3. Crear un PDF a partir de una URL existente
El siguiente código descarga una página web y la convierte en un documento PDF.
### 3.1. PDF desde URL con IronPDF
El código que sigue utiliza IronPDF para crear un PDF a partir de una URL - en este caso: la descripción del formato PDF en Wikipedia. También se incluyen las cabeceras y pies de página de los clientes.
```cs
var Renderer = new IronPdf.ChromePdfRenderer();
// Crear un PDF a partir de un HTML existente
Renderer.RenderingOptions.MarginTop = 50; //milímetros
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; //milisegundos
using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");
PDF.SaveAs("wikipedia.pdf");
El archivo de salida contiene 12 páginas y renderiza JavaScript y CSS excepcionalmente bien. El resultado se muestra a continuación:
Generar un PDF a partir de una URL es una conversión aparentemente sencilla, como vimos anteriormente. Pero debido a una serie de factores, nuestro equipo de ingenieros tuvo dificultades para conseguirlo con SpirePDF. No hay mucha documentación disponible al respecto y, como desarrolladores, intentamos encontrar una solución.
Para lograrlo, creemos que hay que descargar e instalar más herramientas, como se indica aquí: http://www.e-iceblue.com/Download/download-pdf-for-net-now.html Aún no lo hemos descubierto. En su lugar, aquí hay un segmento de código para una aplicación de consola que podría utilizar para lograr esto después de haber pasado por todo el rigmarole de pasos:
//Crear un documento pdf.
PdfDocument doc = new PdfDocument();
PdfPageSettings setting = new PdfPageSettings();
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
htmlLayoutFormat.IsWaiting = true;
String url = "https://www.wikipedia.org/";
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(url, false, false, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//Guardar archivo pdf.
doc.SaveToFile("output-wiki.pdf");
doc.Close();
//Iniciar el archivo Pdf.
System.Diagnostics.Process.Start("output-wiki.pdf");
//Crear un documento pdf.
PdfDocument doc = new PdfDocument();
PdfPageSettings setting = new PdfPageSettings();
setting.Size = new SizeF(1000, 1000);
setting.Margins = new Spire.Pdf.Graphics.PdfMargins(20);
PdfHtmlLayoutFormat htmlLayoutFormat = new PdfHtmlLayoutFormat();
htmlLayoutFormat.IsWaiting = true;
String url = "https://www.wikipedia.org/";
Thread thread = new Thread(() =>
{ doc.LoadFromHTML(url, false, false, false, setting, htmlLayoutFormat); });
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
thread.Join();
//Guardar archivo pdf.
doc.SaveToFile("output-wiki.pdf");
doc.Close();
//Iniciar el archivo Pdf.
System.Diagnostics.Process.Start("output-wiki.pdf");
'Crear un documento pdf.
Dim doc As New PdfDocument()
Dim setting As New PdfPageSettings()
setting.Size = New SizeF(1000, 1000)
setting.Margins = New Spire.Pdf.Graphics.PdfMargins(20)
Dim htmlLayoutFormat As New PdfHtmlLayoutFormat()
htmlLayoutFormat.IsWaiting = True
Dim url As String = "https://www.wikipedia.org/"
Dim thread As New Thread(Sub()
doc.LoadFromHTML(url, False, False, False, setting, htmlLayoutFormat)
End Sub)
thread.SetApartmentState(ApartmentState.STA)
thread.Start()
thread.Join()
'Guardar archivo pdf.
doc.SaveToFile("output-wiki.pdf")
doc.Close()
'Iniciar el archivo Pdf.
System.Diagnostics.Process.Start("output-wiki.pdf")
IronPDF necesitaba tres líneas de código (si incluye también el método SaveAs al final del segmento de código)pero, por lo demás, sólo se necesitaban dos líneas:
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable");
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://es.wikipedia.org/wiki/Formato_de_documento_portable")
Rápido y al grano. Como habrás notado, el código no hace uso de un FileStream ni de ningún objeto .NET adicional; El método RenderUrlAsPdf maneja todas las complejidades del .NET Framework entre bastidores.
SpirePDF, en cambio, complicaba mucho la tarea de convertir URL a PDF y requería soluciones creativas.
Compararemos IronPDF y Spire.PDF en función de su calidad de conversión.
Spire.PDF para .NET es una API que se utiliza para manipular archivos PDF como IronPDF, pero no ofrece tantas funciones como IronPDF ni la calidad del renderizador de IronPDF.
La mejor forma de comparar dos herramientas es la comparación lado a lado. Arriba están los resultados de IronPDF y Spire.PDF.
El panel de administración de Bucket es un panel web que se utiliza para mostrar toda la información útil.
Hay una clara diferencia en la calidad de renderizado de ambas herramientas. La salida generada por IronPDF es una copia 100% idéntica de la página web original. Por otro lado, el PDF creado por Spire.PDF es como el esqueleto de la página web.
IronPDF utiliza y renderiza todo el CSS y JavaScript de la página web y tiene un aspecto perfecto, pero Spire.PDF echa en falta casi todos los archivos CSS y JavaScript de la página web del administrador del cubo. Faltan todos los gráficos - Si no faltan sus valores, no se calculan y se muestran por salida.
El motor de renderizado de Spire.PDF no renderiza el color con precisión en absoluto en el sitio web; sólo se pueden ver unos pocos colores en la salida creada por Spire.PDF.
IronPDF hace una copia idéntica de la página web y todos los colores son perfectos píxel a píxel.
En el archivo de salida Spire.PDF no se puede identificar la barra de navegación lateral y parece que sólo hay texto situado en el lugar de la barra. En el archivo de salida IronPDF barra de navegación lateral es perfecto.
Tanto la API de C# IronPDF como Spire.PDF tardan casi lo mismo en convertir una URL en un archivo PDF, pero IronPDF renderiza todo el contenido del sitio web con precisión y el motor de renderizado de Spire.PDF no puede crear PDF de buena calidad.
Los siguientes ejemplos hacen uso de IronPDF y SpirePDF para crear un documento PDF con una cadena HTML suministrada.
El siguiente código hace uso de IronPDF para crear un PDF con entrada HTML.
/**
PDF from HTML String
anchor-pdf-from-html-string-with-ironpdf
**/
private void HTMLString()
{
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hi there 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;
}
/**
PDF from HTML String
anchor-pdf-from-html-string-with-ironpdf
**/
private void HTMLString()
{
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hi there 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;
}
'''
'''PDF from HTML String
'''anchor-pdf-from-html-string-with-ironpdf
'''*
Private Sub HTMLString()
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hi there 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 utiliza SpirePDF para crear un PDF que contiene texto HTML.
private void HTMLString()
{
Document document = new Document();
document.LoadFromFile("sample.htm", FileFormat.Html, XHTMLValidationType.None);
//Guardar html en PDF.
document.SaveToFile("Sample.pdf", FileFormat.PDF);
}
private void HTMLString()
{
Document document = new Document();
document.LoadFromFile("sample.htm", FileFormat.Html, XHTMLValidationType.None);
//Guardar html en PDF.
document.SaveToFile("Sample.pdf", FileFormat.PDF);
}
Private Sub HTMLString()
Dim document As New Document()
document.LoadFromFile("sample.htm", FileFormat.Html, XHTMLValidationType.None)
'Guardar html en PDF.
document.SaveToFile("Sample.pdf", FileFormat.PDF)
End Sub
SpirePDF parece que sólo es capaz de cargar archivos HTML usando el método LoadFromFile y luego hace uso de la llamada SaveToFile para enviar un archivo HTML para que salga como PDF.
IronPDF utiliza RenderHtmlAsPdf para renderizar la cadena HTML dada en formato PDF.
El siguiente código de IronPDF y SpirePDF crea un documento PDF a partir de una página ASPX.
El siguiente código utiliza IronPDF para crear un documento PDF a partir de un archivo ASPX.
/**
ASPX to PDF
anchor-aspx-to-pdf-with-ironpdf
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
ASPX to PDF
anchor-aspx-to-pdf-with-ironpdf
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''ASPX to PDF
'''anchor-aspx-to-pdf-with-ironpdf
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
El siguiente código convertiría un archivo ASPX a PDF.
protected void Page_Load(object sender, EventArgs e)
{
using PdfDocument pdf = new PdfDocument();
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
this.RenderControl(htw);
//string sourceCode = sw.ToString();
string url=Request.Url.AbsoluteUri;
Thread thread = new Thread(() =>
{
PdfPageSettings settings = new PdfPageSettings();
PdfHtmlLayoutFormat format = new PdfHtmlLayoutFormat();
pdf.LoadFromHTML(url, false, true, true, settings, format);
//pdf.LoadFromHTML(Request.Url.AbsoluteUri, false, true, true);
});
pdf.SaveToHttpResponse("NameOfFile.pdf", Response, HttpReadType.Save);
}
protected void Page_Load(object sender, EventArgs e)
{
using PdfDocument pdf = new PdfDocument();
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
this.RenderControl(htw);
//string sourceCode = sw.ToString();
string url=Request.Url.AbsoluteUri;
Thread thread = new Thread(() =>
{
PdfPageSettings settings = new PdfPageSettings();
PdfHtmlLayoutFormat format = new PdfHtmlLayoutFormat();
pdf.LoadFromHTML(url, false, true, true, settings, format);
//pdf.LoadFromHTML(Request.Url.AbsoluteUri, false, true, true);
});
pdf.SaveToHttpResponse("NameOfFile.pdf", Response, HttpReadType.Save);
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
Using pdf As New PdfDocument()
Dim sw As New StringWriter()
Dim htw As New HtmlTextWriter(sw)
Me.RenderControl(htw)
'string sourceCode = sw.ToString();
Dim url As String=Request.Url.AbsoluteUri
Dim thread As New Thread(Sub()
Dim settings As New PdfPageSettings()
Dim format As New PdfHtmlLayoutFormat()
pdf.LoadFromHTML(url, False, True, True, settings, format)
'pdf.LoadFromHTML(Request.Url.AbsoluteUri, false, true, true);
End Sub)
pdf.SaveToHttpResponse("NameOfFile.pdf", Response, HttpReadType.Save)
End Using
End Sub
Sin embargo, hay algunas advertencias: a veces puede terminar creando un PDF en blanco, ya que no se admite la Membresía de Autenticación de Formularios.
El siguiente código toma XML y lo convierte en un documento PDF
/**
XML to PDF
anchor-xml-to-pdf-with-ironpdf
**/
private void XMLtoPDF(string XSLT, string XML)
{
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(XML)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
/**
XML to PDF
anchor-xml-to-pdf-with-ironpdf
**/
private void XMLtoPDF(string XSLT, string XML)
{
XslCompiledTransform transform = new XslCompiledTransform();
using(XmlReader reader = XmlReader.Create(new StringReader(XSLT)))
{
transform.Load(reader);
}
StringWriter results = new StringWriter();
using(XmlReader reader = XmlReader.Create(new StringReader(XML)))
{
transform.Transform(reader, null, results);
}
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
'''
'''XML to PDF
'''anchor-xml-to-pdf-with-ironpdf
'''*
Private Sub XMLtoPDF(ByVal XSLT As String, ByVal XML As String)
Dim transform As New XslCompiledTransform()
Using reader As XmlReader = XmlReader.Create(New StringReader(XSLT))
transform.Load(reader)
End Using
Dim results As New StringWriter()
Using reader As XmlReader = XmlReader.Create(New StringReader(XML))
transform.Transform(reader, Nothing, results)
End Using
Dim Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf")
End Sub
El precio es probablemente el factor decisivo número uno a la hora de decidir qué producto comprar. En la tabla, destacaré rápidamente las distintas opciones de IronPDF y SpirePDF. Ver el cuadro comparativo de precios
A continuación, comparemos el soporte y las actualizaciones de Iron Software y SpirePDF.
La cobertura de actualizaciones de productos permite la actualización a la última versión en cualquier momento mientras la cobertura sea válida.
Existen los siguientes servicios de apoyo:
Explore la Referencia de la API para la Biblioteca IronPDF C#, incluyendo detalles de todas las características, clases, campos de métodos, espacios de nombres y enums de IronPDF.
Ver la referencia de la API9 productos API .NET para sus documentos de oficina