Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
PDFSharp e IronPDF proporcionan a los ingenieros las herramientas necesarias para generar, manipular, editar, dar formato e imprimir documentos PDF a partir de diversos datos de entrada.
Al trabajar en .NET y .NET Core, debemos elegir las herramientas que mejor se adapten a nuestros proyectos y requisitos. Mediante ejemplos de código y tutoriales, veremos cómo realizar distintas tareas con estos productos.
Cualquier desarrollador .NET le dirá que hay que investigar mucho antes de empezar un proyecto. Hay un viejo adagio que dice: usa la herramienta adecuada para el trabajo adecuado. Las bibliotecas PDF no son una excepción a esta regla. Como desarrollador, tienes que estar bien informado sobre las bibliotecas y herramientas que existen. Es cierto que no todas las herramientas o bibliotecas son iguales: unas tienen más puntos fuertes que otras, otras tienen más puntos débiles que otras, pero, en última instancia, es tu decisión utilizar la herramienta que más te convenga a ti, a tu empresa y, lo que es más importante, a tu proyecto.
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:
PDFSharp
Con cualquier artículo comparativo, es bueno intentar comparar lo bueno, lo malo y lo feo siempre que sea posible. Por desgracia, en el panorama tecnológico actual, algunas bibliotecas se quedan cortas, mientras que otras sobresalen y prosperan. La tecnología avanza a tal velocidad que es difícil mantenerse al día. No sólo para los creadores de bibliotecas de terceros, sino también para los desarrolladores. Comer o ser comido y adaptarse muy rápidamente.
Echemos un vistazo a ambas ofertas.
IronPDF dispone de una completa funcionalidad de edición y generación de PDF mediante HTML a PDF. ¿Cómo funciona? Pues bien, la mayor parte del diseño y la maquetación del documento pueden utilizar activos HTML y HTML5 ya existentes.
IronPDF simplifica las tareas de PDF en métodos C# fáciles de usar y comprender. Esto aumenta la productividad de los desarrolladores y acelera el desarrollo.
IronPDF es compatible con cualquier proyecto .NET Framework a partir de la versión 4 y .NET Core a partir de la versión 2.
Algunas de las grandes características de IronPDF son:
Fusionar, dividir y manipular archivos PDF
Las mejoras en 2020 incluyen:
PDFSharp es también una biblioteca .NET para procesar archivos PDF. Crea páginas PDF utilizando métodos de dibujo presentes en GDI+, lo que significa que la mayor parte de lo que puede hacer GDI+, también lo puede hacer PDFSharp. Otro componente de PDFSharp es MigraDoc, que es un generador de documentos. MigraDoc es compatible con la mayoría de las funciones de los procesadores de texto, a los que puede añadir tablas, párrafos, gráficos, marcadores y pausas según sea necesario.
PDFSharp y MigraDoc tienen un modelo de objetos fácil de entender para crear documentos y pueden tener salida en formato PDF, Word o HTML.
PDFSharp no ha tenido una actualización lista para producción recientemente. Su biblioteca de terceros ChromePdfRenderer no se ha mantenido desde 2015, y podría estar llegando al final de su vida útil. PDFSharp es de código abierto, por lo que la corrección de problemas y errores de código puede llevar más tiempo, ya que depende de contribuciones independientes de desarrolladores del panorama del código abierto.
Los siguientes pasos crean un sitio web ASP.NET
Seleccione Aplicación Web ASP.NET. A continuación se muestra esta captura de pantalla:
Seleccione Formularios Web en la siguiente pantalla, como se muestra a continuación
Haga clic en OK
Ahora, vamos a instalar IronPDF
Hay dos formas de instalar IronPDF:
Descargar la biblioteca
Veámoslo más de cerca.
Hay tres maneras de instalar IronPDF a través de NuGet, estos son:
Descargue directamente el paquete NuGet
Veámoslos uno por uno.
Se accede al gestor de paquetes NuGet a través del menú Proyecto o haciendo clic con el botón derecho del ratón en el proyecto en el Explorador de soluciones.
Una vez seleccionado, busque el paquete IronPDF e instálelo como se muestra a continuación.
Siga los siguientes pasos para instalar el paquete NuGet de IronPDF a través del símbolo del sistema para desarrolladores
PM > Install-Package IronPdf
Siga los pasos siguientes para descargar el paquete a través de NuGet:
La segunda forma de instalar IronPDF es descargándolo directamente de la página Descarga de IronPDF DLL
Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:
PDFSharp no admite intrínsecamente el renderizado web, pero con una biblioteca independiente de terceros (no de ellos)se supone que es posible.
HTML Renderer es una biblioteca independiente de terceros que ayuda a PDFSharp a convertir texto HTML o páginas web en PDF.
Hay tres maneras de instalar el paquete NuGet iTextSharp, que son:
Descargue directamente el paquete NuGet
Hagámoslos uno por uno.
Para Visual Studio, busque PDFSharp 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 > Instalar paquete PDFSharp
O descárguelo directamente desde las siguientes opciones
Página web de PDFSharp: http://www.pdfsharp.net/Downloads.ashx
PDFSharp SourceForge: https://sourceforge.net/projects/pdfsharp/files/
PDFSharp GitHub: https://github.com/empira/PDFsharp
A continuación, vuelva a seguir los pasos anteriores para instalar HTMLRenderer.PDFSharp
.
Ahora que ya has creado los proyectos necesarios, vamos a intentar comparar estas dos bibliotecas en código.
El siguiente código crea un documento PDF e imprime una cadena HTML en su interior.
El siguiente código utiliza IronPDF para crear un documento PDF directamente a partir de una cadena HTML.
/**
PDF from HTML String
anchor-html-string-to-pdf-with-ironpdf
**/
private void HTMLString()
{
// Convierte cualquier fragmento o documento HTML en 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;
}
/**
PDF from HTML String
anchor-html-string-to-pdf-with-ironpdf
**/
private void HTMLString()
{
// Convierte cualquier fragmento o documento HTML en 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;
}
'''
'''PDF from HTML String
'''anchor-html-string-to-pdf-with-ironpdf
'''*
Private Sub HTMLString()
' Convierte cualquier fragmento o documento HTML en 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 HTMLRenderer
para crear un documento PDF directamente a partir de texto HTML.
protected void Page_Load(object sender, EventArgs e)
{
SaveHTMLOnly();
}
protected void Page_Load(object sender, EventArgs e)
{
SaveHTMLOnly();
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
SaveHTMLOnly()
End Sub
private static Byte [] HTMLString(String html)
{
Byte [] res = null;
using (MemoryStream ms = new MemoryStream())
{
var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf("text", PdfSharp.PageSize.A4);
pdf.Save(ms);
res = ms.ToArray();
}
return res;
}
private static Byte [] HTMLString(String html)
{
Byte [] res = null;
using (MemoryStream ms = new MemoryStream())
{
var pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf("text", PdfSharp.PageSize.A4);
pdf.Save(ms);
res = ms.ToArray();
}
return res;
}
Private Shared Function HTMLString(ByVal html As String) As Byte()
Dim res() As Byte = Nothing
Using ms As New MemoryStream()
Dim pdf = TheArtOfDev.HtmlRenderer.PdfSharp.PdfGenerator.GeneratePdf("text", PdfSharp.PageSize.A4)
pdf.Save(ms)
res = ms.ToArray()
End Using
Return res
End Function
protected void Page_Load(object sender, EventArgs e)
{
private void SaveHTMLOnly()
{
Byte [] fileContent = HTMLString("<h1>Hello PDFSharp</h1>");
string fileName = "PDFSharp_HTMLOnly.pdf";
string [] stringParts = fileName.Split(new char [] { '.' });
string strType = stringParts [1];
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
//Establecer el tipo de contenido como tipo de extensión de archivo
Response.ContentType = strType;
//Escribir el contenido del archivo
this.Response.BinaryWrite(fileContent);
this.Response.End();
}
}
protected void Page_Load(object sender, EventArgs e)
{
private void SaveHTMLOnly()
{
Byte [] fileContent = HTMLString("<h1>Hello PDFSharp</h1>");
string fileName = "PDFSharp_HTMLOnly.pdf";
string [] stringParts = fileName.Split(new char [] { '.' });
string strType = stringParts [1];
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
//Establecer el tipo de contenido como tipo de extensión de archivo
Response.ContentType = strType;
//Escribir el contenido del archivo
this.Response.BinaryWrite(fileContent);
this.Response.End();
}
}
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' private void SaveHTMLOnly()
' {
' Byte [] fileContent = HTMLString("<h1>Hello PDFSharp</h1>");
' string fileName = "PDFSharp_HTMLOnly.pdf";
' string [] stringParts = fileName.Split(New char [] { "."c });
' string strType = stringParts [1];
' Response.Clear();
' Response.ClearContent();
' Response.ClearHeaders();
' Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
' 'Establecer el tipo de contenido como tipo de extensión de archivo
' Response.ContentType = strType;
' 'Escribir el contenido del archivo
' Me.Response.BinaryWrite(fileContent);
' Me.Response.@End();
' }
End Sub
Ambos segmentos de código parecen cortos y fáciles de entender, pero, el segmento de código PDFSharp no funciona como debería. Esto puede deberse a que no se está realizando ningún mantenimiento en la biblioteca para actualizarla de modo que pueda funcionar con las tecnologías modernas. A continuación se indican algunas direcciones de sitios web que cubren la representación HTML de esta biblioteca y por qué puede no funcionar:
En esta sección, compararemos cómo PDFSharp y IronPDF convierten una página web (por URL) en un PDF.
Las imágenes siguientes muestran los resultados generados tanto por IronPDF como por PDFSharp al convertir a PDF la página de inicio del sitio web de Apple.
Salida IronPDF
Salida PDFSharp
IronPDF renderiza las páginas web comparativamente mejor que PDFSharp. PDFSharp renderiza las imágenes con peor calidad, y la conversión desde URL tarda mucho más. Por el contrario, IronPDF tiene una calidad de renderizado asombrosa y de gran rendimiento.
A continuación, compararemos el código fuente que hemos utilizado para generar la salida PDF mostrada en la sección anterior.
using IronPdf;
// Instanciar renderizador
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2;
//Cadena HTML a PDF
using var pdf = Renderer.RenderUrlAsPdf("https://www.apple.com/");
//Elija los medios CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
//Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.RenderingOptions.ViewPortWidth = 1280;
// Exportar a un archivo o Stream
pdf.SaveAs("Apple.pdf");
using IronPdf;
// Instanciar renderizador
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2;
//Cadena HTML a PDF
using var pdf = Renderer.RenderUrlAsPdf("https://www.apple.com/");
//Elija los medios CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
//Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.RenderingOptions.ViewPortWidth = 1280;
// Exportar a un archivo o Stream
pdf.SaveAs("Apple.pdf");
Imports IronPdf
' Instanciar renderizador
Private Renderer = New IronPdf.ChromePdfRenderer()
Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A2
'Cadena HTML a PDF
Dim pdf = Renderer.RenderUrlAsPdf("https://www.apple.com/")
'Elija los medios CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
'Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.RenderingOptions.ViewPortWidth = 1280
' Exportar a un archivo o Stream
pdf.SaveAs("Apple.pdf")
using PdfSharp;
using PdfSharp.Pdf;
using System;
using System.IO;
using System.Net;
using TheArtOfDev.HtmlRenderer.PdfSharp;
namespace PDFSharp
{
internal class Program
{
static void Main(string [] args)
{
//Crear petición para url dada
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://apple.com");
//Crear objeto-respuesta
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Tomar corriente de respuesta
StreamReader sr = new StreamReader(response.GetResponseStream());
//Leer flujo de respuesta (código html)
string htmlString = sr.ReadToEnd();
//Cerrar streamreader y respuesta
sr.Close();
response.Close();
PdfDocument pdfDocument = PdfGenerator.GeneratePdf(htmlString, PageSize.A4);
pdfDocument.Save("C:/File/HTML to PDF Document.pdf");
}
}
}
using PdfSharp;
using PdfSharp.Pdf;
using System;
using System.IO;
using System.Net;
using TheArtOfDev.HtmlRenderer.PdfSharp;
namespace PDFSharp
{
internal class Program
{
static void Main(string [] args)
{
//Crear petición para url dada
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("https://apple.com");
//Crear objeto-respuesta
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Tomar corriente de respuesta
StreamReader sr = new StreamReader(response.GetResponseStream());
//Leer flujo de respuesta (código html)
string htmlString = sr.ReadToEnd();
//Cerrar streamreader y respuesta
sr.Close();
response.Close();
PdfDocument pdfDocument = PdfGenerator.GeneratePdf(htmlString, PageSize.A4);
pdfDocument.Save("C:/File/HTML to PDF Document.pdf");
}
}
}
Imports PdfSharp
Imports PdfSharp.Pdf
Imports System
Imports System.IO
Imports System.Net
Imports TheArtOfDev.HtmlRenderer.PdfSharp
Namespace PDFSharp
Friend Class Program
Shared Sub Main(ByVal args() As String)
'Crear petición para url dada
Dim request As HttpWebRequest = CType(HttpWebRequest.Create("https://apple.com"), HttpWebRequest)
'Crear objeto-respuesta
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
'Tomar corriente de respuesta
Dim sr As New StreamReader(response.GetResponseStream())
'Leer flujo de respuesta (código html)
Dim htmlString As String = sr.ReadToEnd()
'Cerrar streamreader y respuesta
sr.Close()
response.Close()
Dim pdfDocument As PdfDocument = PdfGenerator.GeneratePdf(htmlString, PageSize.A4)
pdfDocument.Save("C:/File/HTML to PDF Document.pdf")
End Sub
End Class
End Namespace
El uso de PDFSharp para generar archivos PDF a partir de una página web suele requerir un código repetitivo largo y complejo. Como se muestra en el último ejemplo de código, debemos hacer uso de muchas funciones de diferentes paquetes. Como PDFSharp no admite URL directas, primero debe descargar el código fuente de la URL y, a continuación, pasarlo a la función GeneratePdf
. Por otro lado, IronPDF puede realizar la misma tarea con una llamada a su método renderUrlAsPdf
.
El primer ejemplo de código muestra que IronPDF proporciona una serie de propiedades y métodos prácticos para dar estilo a los documentos PDF (pre y post rendering). Podemos utilizar HTML y CSS para establecer colores personalizados, bordes, fondos, etc. Lograr hazañas similares con PDFSharp requiere el uso de métodos y clases complejas que pueden ser bastante difíciles de usar.
PDFSharp no admite CSS ni JavaScript, lo que significa que no es compatible con las últimas tecnologías. Esto hace que PDFSharp quede prácticamente obsoleto. Por otro lado, IronPDF es totalmente compatible con CSS y JavaScript. Podemos dar estilo a la salida PDF fácilmente usando reglas CSS personalizadas. IronPDF también proporciona una función para activar y desactivar la interpretación/ejecución de JavaScript durante la conversión de PDF. Esto aumenta la calidad del archivo PDF de salida.
PDFSharp requiere dos paquetes para funcionar correctamente: System.Drawing.Common
y System.Text.Encoding.CodePages
. También aprovecha el complemento HtmlRenderer para convertir páginas HTML en archivos PDF.
IronPDF no requiere el uso de bibliotecas adicionales, por lo que es ligero y fácil de usar.
PDFSharp es una biblioteca obsoleta. Lleva varios años sin actualizarse, por lo que es incompatible con la mayoría de tecnologías como Azure, Docker, AWS, etc.
IronPDF se actualiza con frecuencia para facilitar y hacer más avanzado el proceso de renderizado. IronPDF es compatible con todas las tecnologías .NET más recientes, como Azure, Docker, AWS, etc. También es compatible con todos los sistemas operativos, incluidos Windows, macOS, Ubuntu, etc.
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.
/**
PDF from ASPX Page
anchor-aspx-pages-to-pdf-with-ironpdf
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
/**
PDF from ASPX Page
anchor-aspx-pages-to-pdf-with-ironpdf
**/
protected void Page_Load(object sender, EventArgs e)
{
IronPdf.AspxToPdf.RenderThisPageAsPdf();
}
'''
'''PDF from ASPX Page
'''anchor-aspx-pages-to-pdf-with-ironpdf
'''*
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
IronPdf.AspxToPdf.RenderThisPageAsPdf()
End Sub
Parece que PDF no admite la creación de PDF a partir de páginas web ASPX.
Compatible con HTML a PDF:
Hojas de estilo en cascada (CSS) describe el aspecto y el formato de un documento HTML. Utiliza selectores y propiedades para establecer el formato de toda una página web o sitio web en un lugar centralizado. CSS3 es el último estándar. CSS3 incluye:
Módulos incluidos:
Con IronPDF puedes elegir dónde quieres que se muestren los estilos CSS. Pantalla o impresión. Cuando se trata de la pantalla, hay que tener en cuenta la capacidad de respuesta. Para distinguir entre la pantalla o la impresora, podría utilizar la siguiente línea rápida de código:
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
//o
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
//o
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
El diseño web responsivo garantiza páginas y sitios web que se ven bien en todos los dispositivos. Las webs responsivas se ajustan automáticamente a los distintos tamaños de pantalla y viewports. Cuando se trabaja con diseño adaptable y frameworks como Bootstrap, IronPDF puede establecer las propiedades ViewPortWidth y ViewPortHeight para controlar mediante programación la ventana gráfica y controlar qué versión del sitio adaptable se debe renderizar como PDF.
El siguiente código le permite establecer mediante programación el tamaño de su Viewport de respuesta con IronPDF.
/**
Response Viewport
anchor-creating-a-response-viewport
**/
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
//Elija el soporte CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
//Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.ViewPortWidth = 1280;
// Renderiza un documento o fragmento HTML como una cadena
Renderer.RenderHTMLFileAsPdf("Assets/Responsive.html");
/**
Response Viewport
anchor-creating-a-response-viewport
**/
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
//Elija el soporte CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
//Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.ViewPortWidth = 1280;
// Renderiza un documento o fragmento HTML como una cadena
Renderer.RenderHTMLFileAsPdf("Assets/Responsive.html");
'''
'''Response Viewport
'''anchor-creating-a-response-viewport
'''*
Imports IronPdf
Private Renderer As New IronPdf.ChromePdfRenderer()
'Elija el soporte CSS para pantalla o impresión
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
'Definir la anchura de la ventana del navegador virtual en píxeles
Renderer.ViewPortWidth = 1280
' Renderiza un documento o fragmento HTML como una cadena
Renderer.RenderHTMLFileAsPdf("Assets/Responsive.html")
Otra función impresionante de PDF para HTML es la posibilidad de crear plantillas HTML a partir de las cuales trabajar y crear documentos PDF similares. He aquí un pequeño ejemplo:
/**
HTML Templates
anchor-html-templates
**/
var HtmlTemplate = "<p>[[NAME]]</p>";
var Names = new [] { "John", "James", "Jenny" };
foreach (var name in Names) {
var HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name);
using var Pdf = Renderer.RenderHtmlAsPdf(HtmlInstance);
Pdf.SaveAs(name + ".pdf");
}
/**
HTML Templates
anchor-html-templates
**/
var HtmlTemplate = "<p>[[NAME]]</p>";
var Names = new [] { "John", "James", "Jenny" };
foreach (var name in Names) {
var HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name);
using var Pdf = Renderer.RenderHtmlAsPdf(HtmlInstance);
Pdf.SaveAs(name + ".pdf");
}
'''
'''HTML Templates
'''anchor-html-templates
'''*
Dim HtmlTemplate = "<p>[[NAME]]</p>"
Dim Names = { "John", "James", "Jenny" }
For Each name In Names
Dim HtmlInstance = HtmlTemplate.Replace("[[NAME]]", name)
Dim Pdf = Renderer.RenderHtmlAsPdf(HtmlInstance)
Pdf.SaveAs(name & ".pdf")
Next name
En este caso, se recorre la matriz Nombres (John, James y Jenny) y crear contenidos similares y personalizados para cada persona.
Dado que no se puede hacer una comparación decente entre PDFSharp e IronPDF en una plataforma web, veamos rápidamente cómo se comparan en una plataforma Windows.
Creación de una sencilla aplicación "Hola Mundo" utilizando ambas librerías.
Una aplicación sencilla que utilice PDFSharp tiene el siguiente aspecto:
using System.Diagnostics;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
namespace HelloWorld
{
/// <summary>
/// Este ejemplo es el programa obligatorio Hola Mundo.
/// </summary>
class Program
{
static void Main()
{
// Cree un nuevo documento PDF.
var document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
// Cree una página vacía en este documento.
var page = document.AddPage();
// Obtener un objeto XGraphics para dibujar en esta página.
var gfx = XGraphics.FromPdfPage(page);
// Dibuja dos líneas con un rotulador rojo predeterminado.
var width = page.Width;
var height = page.Height;
gfx.DrawLine(XPens.Red, 0, 0, width, height);
gfx.DrawLine(XPens.Red, width, 0, 0, height);
// Dibuja un círculo con un rotulador rojo de 1,5 puntos de grosor.
var r = width / 5;
gfx.DrawEllipse(new XPen(XColors.Red, 1.5), XBrushes.White, new XRect(width / 2 - r, height / 2 - r, 2 * r, 2 * r));
// Crea una fuente.
var font = new XFont("Times New Roman", 20, XFontStyle.BoldItalic);
// Dibuja el texto.
gfx.DrawString("Hello, PDFsharp!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
// Guarda el documento...
const string filename = "HelloWorld_tempfile.pdf";
document.Save(filename);
// ...e iniciar un visor.
Process.Start(filename);
}
}
}
using System.Diagnostics;
using PdfSharp.Drawing;
using PdfSharp.Pdf;
namespace HelloWorld
{
/// <summary>
/// Este ejemplo es el programa obligatorio Hola Mundo.
/// </summary>
class Program
{
static void Main()
{
// Cree un nuevo documento PDF.
var document = new PdfDocument();
document.Info.Title = "Created with PDFsharp";
// Cree una página vacía en este documento.
var page = document.AddPage();
// Obtener un objeto XGraphics para dibujar en esta página.
var gfx = XGraphics.FromPdfPage(page);
// Dibuja dos líneas con un rotulador rojo predeterminado.
var width = page.Width;
var height = page.Height;
gfx.DrawLine(XPens.Red, 0, 0, width, height);
gfx.DrawLine(XPens.Red, width, 0, 0, height);
// Dibuja un círculo con un rotulador rojo de 1,5 puntos de grosor.
var r = width / 5;
gfx.DrawEllipse(new XPen(XColors.Red, 1.5), XBrushes.White, new XRect(width / 2 - r, height / 2 - r, 2 * r, 2 * r));
// Crea una fuente.
var font = new XFont("Times New Roman", 20, XFontStyle.BoldItalic);
// Dibuja el texto.
gfx.DrawString("Hello, PDFsharp!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
// Guarda el documento...
const string filename = "HelloWorld_tempfile.pdf";
document.Save(filename);
// ...e iniciar un visor.
Process.Start(filename);
}
}
}
Imports System.Diagnostics
Imports PdfSharp.Drawing
Imports PdfSharp.Pdf
Namespace HelloWorld
''' <summary>
''' Este ejemplo es el programa obligatorio Hola Mundo.
''' </summary>
Friend Class Program
Shared Sub Main()
' Cree un nuevo documento PDF.
Dim document = New PdfDocument()
document.Info.Title = "Created with PDFsharp"
' Cree una página vacía en este documento.
Dim page = document.AddPage()
' Obtener un objeto XGraphics para dibujar en esta página.
Dim gfx = XGraphics.FromPdfPage(page)
' Dibuja dos líneas con un rotulador rojo predeterminado.
Dim width = page.Width
Dim height = page.Height
gfx.DrawLine(XPens.Red, 0, 0, width, height)
gfx.DrawLine(XPens.Red, width, 0, 0, height)
' Dibuja un círculo con un rotulador rojo de 1,5 puntos de grosor.
Dim r = width \ 5
gfx.DrawEllipse(New XPen(XColors.Red, 1.5), XBrushes.White, New XRect(width \ 2 - r, height \ 2 - r, 2 * r, 2 * r))
' Crea una fuente.
Dim font = New XFont("Times New Roman", 20, XFontStyle.BoldItalic)
' Dibuja el texto.
gfx.DrawString("Hello, PDFsharp!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)
' Guarda el documento...
Const filename As String = "HelloWorld_tempfile.pdf"
document.Save(filename)
' ...e iniciar un visor.
Process.Start(filename)
End Sub
End Class
End Namespace
Para obtener un conjunto completo de ejemplos de PDFSharp, específicamente para aplicaciones basadas en Windows, consulte la página Documentación de PDFSharp.
PDFSharp es de código abierto y totalmente gratuito. Esto significa que puede copiar y modificar el código de PDFSharp en su código sin ninguna restricción. Sin embargo, esto también conlleva el hecho de que no se ha actualizado en varios años y, con el software libre, el soporte suele ser limitado.
IronPDF es una aplicación Biblioteca PDF en C#. Es gratuito para el desarrollo, con pruebas de despliegue de 30 días disponibles enviando un correo electrónico al equipo de ingeniería a developers@ironpdf.com. Se pueden encontrar opciones de licencia asequibles explorando la Licencias IronPDF.
IronPDF es una biblioteca .NET compatible y orientada a la productividad para:
Firma digital de PDF
PdfSharp es una librería .NET gratuita pero sin soporte para:
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