COMPARACIóN DE PRODUCTOS

Comparación de ejemplos y tutoriales de HTML a PDF de PDFSharp

Actualizado 7 de septiembre, 2021
Compartir:

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.


Visión general

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:

  • IronPDF
  • 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.

    Conozca IronPDF

    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.

Características de la biblioteca IronPDF C

Algunas de las grandes características de IronPDF son:

  • Generación de documentos PDF a partir de plataformas web como HTML y ASPX
  • Lectura de texto PDF
  • Extracción de imágenes y datos de documentos PDF
  • Fusionar, dividir y manipular archivos PDF

    Las mejoras en 2020 incluyen:

  • Mejora de la precisión de la extracción de texto en PDF
  • Se ha añadido compatibilidad con más tipos de documentos PDF
  • Espacio de memoria mejorado
  • Firma digital de PDF cifrados
  • Mejoras en los metadatos de firma digital
  • Resueltos los problemas de licencia y ruta de instalación de casos extremos
  • Compatibilidad con CentOS 8 y Ubuntu 20

Conozca PDFSharp

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.

PDFSharp Leer PDF, Imprimir PDF y C# más funciones

  • Manipular documentos PDF
  • Fusionar PDF
  • Dividir PDF
  • Importar datos de varias fuentes
  • Tablas dinámicas

Paso 1: Instalación

Empiece por crear un sitio web ASP.NET

Los siguientes pasos crean un sitio web ASP.NET

  • Abrir Visual Studio 2017 o Visual Studio 2019
  • Haga clic en Archivo Nuevo Proyecto para crear un nuevo proyecto
  • Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto
  • Seleccione Aplicación Web ASP.NET. A continuación se muestra esta captura de pantalla:

    Figura 1 - Cuadro de diálogo Nuevo proyecto

  • Selecciona OK
  • Seleccione Formularios Web en la siguiente pantalla, como se muestra a continuación

    Figura 2 - Formularios web

  • Haga clic en OK

    Ahora, vamos a instalar IronPDF

1. Instalar IronPDF

Hay dos formas de instalar IronPDF:

  • NuGet
  • Descargar la biblioteca

    Veámoslo más de cerca.

1.1. Instalación de la biblioteca mediante NuGet

Hay tres maneras de instalar IronPDF a través de NuGet, estos son:

  • Visual Studio
  • Símbolo del sistema para desarrolladores
  • Descargue directamente el paquete NuGet

    Veámoslos uno por uno.

1.2. Uso de Visual Studio

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.

Figura 3 - Menú de proyectos

Figura 4 - Haga clic con el botón derecho en Explorador de soluciones

Una vez seleccionado, busque el paquete IronPDF e instálelo como se muestra a continuación.

Gráfico 5 - Instalar el paquete NuGet IronPDF

1.3. Uso del símbolo del sistema para desarrolladores

Siga los siguientes pasos para instalar el paquete NuGet de IronPDF a través del símbolo del sistema para desarrolladores

  • Abrir Símbolo del sistema para desarrolladores - que se encuentra en la carpeta Visual Studio
  • Tipo: PM > Install-Package IronPdf
  • Pulse Intro
  • Vuelva a cargar el proyecto de Visual Studio

1.4. Descargue directamente el paquete NuGet

Siga los pasos siguientes para descargar el paquete a través de NuGet:

1.5. Instale IronPDF descargando la biblioteca

La segunda forma de instalar IronPDF es descargándolo directamente de la página Descarga de IronPDF DLL

Figura 6 - Descargar la biblioteca IronPDF

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

PDFSharp DLL C# Descargar

PDFSharp no admite intrínsecamente el renderizado web, pero con una biblioteca independiente de terceros (no de ellos)se supone que es posible.

Renderizador HTML para PDFSharp

HTML Renderer es una biblioteca independiente de terceros que ayuda a PDFSharp a convertir texto HTML o páginas web en PDF.

Instalar PDFSharp con NuGet

Hay tres maneras de instalar el paquete NuGet iTextSharp, que son:

  • Visual Studio
  • Símbolo del sistema para desarrolladores
  • 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.

    Gráfico 7 - PDFSharp

    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

    Figura 8 - Opciones de descarga de 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.


Tutorial

2. Crear PDF a partir de texto HTML

El siguiente código crea un documento PDF e imprime una cadena HTML en su interior.

2.1. Cadena HTML a PDF con IronPDF

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
VB   C#

2.2. Cadena HTML a PDF con PDFSharp

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
VB   C#
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
VB   C#
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
VB   C#

2.3. Comparación de códigos HTML

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:

2.4. Comparación de URL a PDF

En esta sección, compararemos cómo PDFSharp y IronPDF convierten una página web (por URL) en un PDF.

Calidad de renderizado

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 IronPDF

Salida PDFSharp

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.

Código Calidad

A continuación, compararemos el código fuente que hemos utilizado para generar la salida PDF mostrada en la sección anterior.

Código IronPDF
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")
VB   C#
Código PDFSharp
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
VB   C#

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.

Compatibilidad con CSS y Javascript

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.

Dependencias

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.

PDFSharp vs IronPDF: Dependencias de PDFSharp

IronPDF no requiere el uso de bibliotecas adicionales, por lo que es ligero y fácil de usar.

Compatibilidad

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.


3. Páginas ASPX a PDF

El siguiente código crea un documento PDF a partir de una página ASPX.

3.1. Páginas ASPX a PDF con IronPDF

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
VB   C#

3.2. Páginas ASPX a PDF con PDFSharp

Parece que PDF no admite la creación de PDF a partir de páginas web ASPX.


4. Uso de CSS3 con documentos PDF

Compatible con HTML a PDF:

  • Renderizado completo y de alta fidelidad de HTML 4 y HTML 5
  • CSS 3
  • JavaScript
  • Activos de imagen
  • Activos SVG
  • Diseños adaptables
  • Hojas de estilo y activos externos (http, https o sistema de archivos)
  • Renderizado estático y multihilo
  • Carga de URLS mediante custom:
    • Credenciales de acceso a la red
      • AgentesUsuarios
    • Apoderados
      • Galletas
    • Cabeceras HTTP
    • Variables de formulario que permiten el inicio de sesión tras formularios de inicio de sesión HTML

4.1. Hojas de estilo en cascada CSS3

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:

  • Consultas multimedia
  • Espacios de nombres
  • Selectores Nivel 3
  • Módulos incluidos:

    • Selectores
    • Modelo de caja
    • Efectos de texto
    • Transformaciones 2D
    • Transformaciones 3D
    • Fondos
    • Interfaz de usuario

    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
VB   C#

4.2. Diseño web responsivo

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.

4.3. Creación de un ViewPort de respuesta

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")
VB   C#

4.4. Plantillas 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
VB   C#

En este caso, se recorre la matriz Nombres (John, James y Jenny) y crear contenidos similares y personalizados para cada persona.


5. Comparar en Windows Forms

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
VB   C#

Para obtener un conjunto completo de ejemplos de PDFSharp, específicamente para aplicaciones basadas en Windows, consulte la página Documentación de PDFSharp.


Licencias

6. Opciones de licencia

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.

7. Resumen

IronPDF es una biblioteca .NET compatible y orientada a la productividad para:

  • Renderiza PDF desde HTML utilizando un navegador web totalmente integrado
  • Editar y manipular PDF
  • Firma digital de PDF

    PdfSharp es una librería .NET gratuita pero sin soporte para:

  • Cree y edite PDF dibujando manualmente formas y texto en objetos de página.

Acceso rápido a tutoriales

Explorar la referencia API de IronPDF

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 API
< ANTERIOR
SpirePDF C# HTML to PDF Tutorial & Comparación de bibliotecas
SIGUIENTE >
Accusoft Prizmdoc PDF Viewer Tutorial y Comparación

¿Listo para empezar? Versión: 2024.6 recién publicada

Comenzar prueba gratuita Descargas totales: 9,541,998
Ver licencias >