Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
IronPDF y iText 7 (antes conocido como iTextSharp) ambos proporcionan la capacidad de generar, manipular y imprimir PDF en .NET y .NET Core.
Qué Biblioteca PDF en C# es el más adecuado para su proyecto .NET? El objetivo de este artículo es ayudar a los lectores a tomar una decisión adecuada e informada.
HtmlConverter.ConvertToPDF
método para convertir un archivo HTML en un archivo PDFIronPDF es:
Una gran elección para programadores pragmáticos que intentan hacer su trabajo.
iTexto (iTextSharp) es:
iTextSharp existe desde hace al menos 6 años, basado en un código Java de código abierto llamado iText, y todavía tiene cierto sabor a Java. Los desarrolladores que aprendieron Java por primera vez pueden encontrar esta biblioteca familiar.
IronPDF es una biblioteca .NET con una API diseñada para facilitar su uso en Visual Studio. .NET existe desde hace casi 20 años, creciendo y expandiéndose continuamente, y abriendo muchas posibilidades, que IronPDF está diseñado para aprovechar. Nos permite crear y manipular documentos PDF en proyectos .NET framework. Puede descargar IronPDF como Alternativa a iTextSharp.
La API de renderizado de iText y IronPDF son bastante diferentes. Comparemos cada segmento de código para añadir encabezados y pies de página a un documento PDF.
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
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)
Echando un vistazo rápido al código, se puede ver que IronPDF es pragmático, basado en los requisitos comunes de los usuarios finales.
iText es una biblioteca de nivel inferior que se centra en una API de dibujo en la que añadimos objetos, formas y texto a las páginas.
iTextSharp.dll utiliza un modelo principalmente programático para renderizar PDFs. Cuando se utiliza la biblioteca iTextSharp PDF, cada fragmento de texto, gráfico, tabla o línea del PDF se "traza" o dibuja en un PDF. La API parece de bajo nivel y se centra en el estándar de documentos PDF. Este modelo permite precisión, pero puede requerir que los desarrolladores aprendan un poco sobre cómo funcionan los PDF. Ajustarse a los estilos de diseño existentes o a los activos web puede requerir un poco de iteración y lectura de la información. Documentación de iTextSharp. En consonancia con su herencia, la metodología y la interfaz programática tienen un marcado sabor a Java.
En cambio, IronPDF utiliza un renderizador de navegador web totalmente integrado para convertir HTML a PDF. Después de (1 y 2 líneas) Ejemplos de código CLos desarrolladores pueden generar PDF a partir de HTML, imágenes y CSS existentes o nuevos. Esto permite a los desarrolladores trabajar en estrecha colaboración con los activos web existentes y también trabajar en paralelo con los diseñadores durante un proyecto. iText incluye la funcionalidad HTML a PDF para C# .NET, aunque no es, aparentemente, la característica dominante de la biblioteca.
Siga leyendo para obtener más detalles comparativos sobre las diferentes formas en que IronPDF e iTextSharp pueden ayudar a los desarrolladores a alcanzar los siguientes objetivos:
Las opciones de licencia también son un factor importante para los proyectos de los desarrolladores. iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. Cuando la licencia se conceda bajo AGLP, cualquier persona que utilice cualquier parte de una aplicación que contenga iTextSharp (incluso a través de la red de la empresa o de Internet) puede tener derecho a una copia completa del código fuente de la aplicación. Es excelente para el trabajo académico. Si deseamos utilizar iTextSharp en aplicaciones comerciales, lo mejor es ponerse en contacto con iText y pídales un presupuesto sobre los precios del uso comercial de iText.
IronPDF es libre para el desarrolloy puede ser con licencia para uso comercial a precios razonables publicados públicamente, a partir de $749.
Así es como se comparan las dos bibliotecas:
Convierte HTML a PDF mediante un completo navegador web integrado | HTML básico a PDF mediante un complemento pdfHTML |
Foco de renderización: Navegador web integrado | Enfoque de renderizado: Modelo de dibujo programático |
IronPDF dispone de licencias explícitas con precios publicados | AGPL Precios de uso comercial no publicados. |
Fácil de codificar con .NET First Design | Basado en una API Java |
No es adecuado para tareas académicas y trabajos de curso | Excelente para trabajos académicos e investigación |
IronPDF permite a los desarrolladores de .NET y .NET Core generar, fusionar, dividir, editar y extraer contenido PDF fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así como en crear PDF a partir de archivos HTML, ASPX, CSS, JS e imágenes.
Utiliza un navegador web totalmente integrado 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 también en paralelo con los diseñadores durante un proyecto.
IronPDF se centra realmente en la productividad de los desarrolladores. La biblioteca simplifica muchas tareas complejas habituales del código PDF en cómodos métodos de 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 comprender cómo conseguir su mejor resultado.
En iTextSharp.dll utiliza un modelo principalmente programático para renderizar los PDF, y cuenta con API avanzadas de manipulación de PDF que son potentes y siguen al pie de la letra el estándar PDF.
Funcionalidad sólida para la manipulación de PDF
Basado en una biblioteca Java
Comparemos creando un proyecto de ejemplo que utilice ambas bibliotecas:
Siga los siguientes pasos para crear un sitio web ASP.NET:
Abrir Visual Studio
Haga clic en Archivo > Nuevo proyecto
Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto
Haga clic en OK
Ahora tenemos algo con lo que trabajar. Vamos a instalar IronPDF.
Para poder utilizar IronPDF, primero hay que instalarlo (gratis). Hay dos opciones:
Descargar la biblioteca
Veámoslo más de cerca.
Install-Package IronPdf
Hay tres formas de instalar el paquete NuGet de IronPDF:
Visual Studio
Símbolo del sistema para desarrolladores
Descargue directamente el paquete NuGet
Hagámoslos uno por uno.
Visual Studio proporciona el gestor de paquetes NuGet para que puedas instalar paquetes NuGet en tus proyectos. Puede acceder a él a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el Explorador de soluciones. Ambas opciones se muestran a continuación en las figuras 3 y 4
Después de hacer clic en Manage NuGet Packages desde cualquiera de las opciones, busque el paquete IronPDF e instálelo como se muestra en la Figura 5.
Los siguientes pasos abren el símbolo del sistema para desarrolladores e instalan el paquete IronPDF NuGet.
Busque su Instrucción de comandos para desarrolladores; normalmente se encuentra en la carpeta Visual Studio.
Escriba el siguiente comando: PM > Install-Package IronPdf
Pulse Intro
El paquete se instalará
Para descargar el paquete NuGet:
Haga clic en Descargar paquete
Una vez descargado el paquete, haga doble clic en él
La segunda forma de instalar IronPDF es mediante descarga directa.
Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:
Haga clic con el botón derecho en la solución en el Explorador de soluciones
Seleccionar referencias
Buscar la biblioteca IronPDF.dll
Haga clic en OK
Ahora que está configurado, podemos empezar a jugar con las impresionantes características de la biblioteca IronPDF después de la configuración para iTextSharp.
Hay tres formas de instalar iTextSharp NuGet paquete, lo son:
Descargue directamente el paquete NuGet
Hagámoslos uno por uno.
Para Visual Studio, busque iText e instale los paquetes correspondientes, como se muestra a continuación.
O, en el símbolo del sistema para desarrolladores (como se ha mostrado anteriormente, introduzca el siguiente comando)
PM > Install-Package itext7
O descargue iText 7 directamente desde su sitio web.
Ahora que ya has creado los proyectos necesarios, vamos a comparar estas dos bibliotecas en código.
El siguiente código descarga una página web y la convierte en un documento PDF.
El siguiente código utiliza IronPDF para crear un documento PDF directamente desde una dirección web. También se incluyen 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
El siguiente código utiliza iText7 para crear un documento PDF directamente desde una dirección web y añadir encabezados y pies de página.
/**
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
Con iText 7, el autor tardaba más en desarrollar el código para convertir a PDF el documento de la URL indicada. Se necesitan dos líneas de código:
MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");
HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
MemoryStream wiki = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger");
HtmlConverter.ConvertToPdf(wiki, new FileStream("wikipedia.pdf",FileMode.OpenOrCreate));
Dim wiki As MemoryStream = GetStreamFromUrl("https://en.wikipedia.org/wiki/Tiger")
HtmlConverter.ConvertToPdf(wiki, New FileStream("wikipedia.pdf",FileMode.OpenOrCreate))
Un objeto MemoryStream así como un objeto FileStream tienen que ser creados con propiedades establecidas.
Echemos un vistazo a IronPDF.
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://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf")
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'PDF.SaveAs("wikipedia.pdf")
No es necesario un FileStream o un objeto .NET adicional, ya que toda la funcionalidad parece estar incorporada en el método RenderUrlAsPdf de IronPdf.
Incluyo ahora una comparación de la salida, ya que esto debería aplicarse a todos los ejercicios siguientes que haremos durante este tutorial.
Con este segmento de código hemos transformado el tigre Wikipedia página web a PDF con ambas bibliotecas.
El archivo que se generó utilizando la biblioteca de iText tiene 49 páginas. No renderizaba JavaScript ni CSS. El resultado se muestra a continuación:
El archivo que se generó utilizando la biblioteca de IronPDF tiene 12 páginas. Renderizaba JavaScript y CSS bastante bien. El resultado se muestra a continuación:
Una imagen vale más que mil palabras.... IronPDF brilla en la conversión de HTML a PDF.
El siguiente código crea un documento PDF e imprime una cadena HTML en su interior.
El siguiente código hace uso de IronPDF para generar 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 utiliza iText7 para crear un PDF que contiene texto HTML.
/**
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
iText vuelve a hacer uso de la llamada HtmlConverter.ConvertToPdf para enviar una cadena HTML para que salga como PDF.
IronPDF hace uso de su método RenderHtmlAsPdf que está específicamente diseñado para trabajar con HTML y PDF.
Ambas opciones son bastante rápidas y directas, pero IronPDF permite controlar mucho el proceso de renderizado e incluso utilizar HTML para añadir encabezados y pies de página a las páginas PDF.
El siguiente código crea un documento PDF a partir de una página ASPX.
El siguiente código hace uso de IronPDF para crear un PDF que contiene de un archivo ASPX. El formulario Web se convierte en un PDF dinámico añadiendo 1 línea de código al evento Page_Load. IronPdf.AspxToPdf.RenderThisPageAsPdf();
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
IronPDF ASPX to PDF
anchor-ironpdf-render-pdf-from-aspx
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''IronPDF ASPX to PDF
'''anchor-ironpdf-render-pdf-from-aspx
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
Parece como si la librería pdfHTML de iText7 no soportara la creación de PDFs desde páginas web ASPX. Esta funcionalidad tendría que codificarse proyecto por proyecto.
El desarrollador debe obtener el HTML del framework, entonces el complemento pdfHTML aceptará ese HTML para convertirlo a PDF.
El siguiente código toma XML y lo convierte a PDF
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
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();
// options, headers, and footers may be set there
// Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
/**
IronPDF XML to PDF
anchor-ironpdf-creates-pdf-from-xml
**/
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();
// options, headers, and footers may be set there
// Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf");
}
'''
'''IronPDF XML to PDF
'''anchor-ironpdf-creates-pdf-from-xml
'''*
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()
' options, headers, and footers may be set there
' Render our XML as a PDF via XSLT
Renderer.RenderHtmlAsPdf(results.ToString()).SaveAs("XMLtoPDF.pdf")
End Sub
La estructura del archivo XSLT es la siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<p>Titles:
<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<p>Titles:
<xsl:for-each select="catalog/cd">
<xsl:value-of select="title"/>
<xsl:if test="position() < last()-1">
<xsl:text>, </xsl:text>
</xsl:if>
<xsl:if test="position()=last()-1">
<xsl:text>, and </xsl:text>
</xsl:if>
<xsl:if test="position()=last()">
<xsl:text>!</xsl:text>
</xsl:if>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
La compatibilidad de iText con el procesamiento de XML a PDF puede requerir un trabajo de desarrollo personalizado.
El siguiente código obtiene los datos de una fuente externa y crea un gráfico en consecuencia.
El siguiente código utiliza IronPDF para crear rápidamente un gráfico y establecer las propiedades de la página utilizando HTML a PDF.
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
var Renderer = new ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
PDF.SaveAs("chart.pdf");
}
/**
IronPDF Create Chart
anchor-ironpdf-chart-creation
**/
private void Chart()
{
var Renderer = new ChromePdfRenderer();
using var PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006");
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape;
PDF.SaveAs("chart.pdf");
}
'''
'''IronPDF Create Chart
'''anchor-ironpdf-chart-creation
'''*
Private Sub Chart()
Dim Renderer = New ChromePdfRenderer()
Dim PDF = Renderer.RenderUrlAsPdf("https://bl.ocks.org/mbostock/4062006")
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
Renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Landscape
PDF.SaveAs("chart.pdf")
End Sub
El siguiente código utiliza iText7 para crear un gráfico y establecer propiedades. Podemos ver un estilo de dibujo-api programático.
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("chart.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");
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.Close();
}
/**
iText Create Chart
anchor-itext-c-charts
**/
private void Chart()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("chart.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006");
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.Close();
}
'''
'''iText Create Chart
'''anchor-itext-c-charts
'''*
Private Sub Chart()
'Initialize PDF writer
Dim writer As New PdfWriter("chart.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://bl.ocks.org/mbostock/4062006")
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.Close()
End Using
End Sub
La mayor diferencia entre las opciones de licencia de IronPDF e iText es el hecho de que iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. En resumen (como se cita, "La licencia AGPL difiere de las otras licencias GNU en que fue construida para software de red. Puedes distribuir versiones modificadas si llevas un registro de los cambios y la fecha en que los hiciste. Como es habitual con las licencias GNU, debe licenciar los derivados bajo AGPL. Ofrece las mismas restricciones y libertades que la GPLv3, pero con una cláusula adicional que obliga a distribuir el código fuente junto con la publicación web. Since websites and services are never distributed in the traditional sense, the AGPL is the GPL of the web."
Esto significa que si la aplicación utiliza iTextSharp de cualquier forma -incluso a través de una red local O de Internet-, el código fuente completo de la aplicación debe estar a libre disposición de todos los usuarios. Eso no siempre redunda en beneficio del proyecto.
Esta licencia se utiliza a menudo para trabajos altamente académicos que pretenden seguir siendo académicos, y también para proyectos de código abierto que pretenden un uso de pago para el software desplegado fuera de entornos académicos. La naturaleza del acuerdo de licencia AGPL hace que el código abierto iTextSharp difícil para muchos casos de uso comercial, a menos que se pueda acordar y negociar legalmente una licencia privada con los desarrolladores.
IronPDF, por su parte, es una herramienta comercial abierta. Biblioteca PDF en C#. Es gratuito para el desarrollo y siempre se puede obtener una licencia para su implantación comercial. Este claro modelo de licencia no requiere que los desarrolladores aprendan los entresijos de los modelos de licencia GNU / AGPL y, en su lugar, pueden centrarse en sus proyectos. Licencias disponibles para uso en un solo proyecto, desarrolladores individuales, agencias y corporaciones globales, y redistribución SaaS y OEM. No se han negociado honorarios legales, sólo una licencia directa.
IronPdf es:
Una gran elección para los programadores pragmáticos que intentan hacer un trabajo de forma eficiente.
iTexto (iTextSharp) es:
Puedes acceder y compartir todo el código fuente de este tutorial de comparación en C# en GitHub.
Comparación de códigos entre IronPDF e iTextSharpHemos creado una guía de recursos PDF gratuita para facilitar el desarrollo de archivos PDF en .NET, con guías de funciones y ejemplos comunes para manipular, editar, generar y guardar archivos PDF en C# y VB.NET para su proyecto.
Descargar la GuíaExplore 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