Saltar al pie de página
USANDO IRONPDF

C# Generar PDF Comparación de 7 Bibliotecas (Herramientas Gratuitas y de Pago)

La funcionalidad de generación de PDF en C# es crítica para muchas aplicaciones modernas, desde crear informes hasta sistemas de facturación. En este artículo, exploraremos seis formas populares de generar archivos PDF usando C#, destacando tanto librerías basadas en código, como IronPDF, así como APIs y herramientas en línea. Ya sea que necesite generar archivos PDF dinámicamente en una aplicación web o simplemente crear archivos PDF a partir de documentos existentes, estas herramientas lo tienen cubierto.

1. IronPDF

IronPDF es una biblioteca premium .NET PDF diseñada para desarrolladores que necesitan una conversión de archivos HTML a PDF de alta calidad. IronPDF utiliza un motor de renderizado basado en Chromium para asegurar conversiones precisas, siendo una elección perfecta para aplicaciones web que quieran convertir páginas HTML o informes basados en web a archivos PDF en C#. La herramienta es conocida por su manejo robusto de documentos PDF existentes y proporciona funciones para editar, fusionar o dividir PDFs.

IronPDF se integra fácilmente en los proyectos de C# a través de NuGet Package Manager, y con solo unas pocas líneas de código, puede comenzar a generar documentos PDF. Es una herramienta versátil tanto para contenido HTML dinámico como para salidas de archivos PDF generadas por servidor.

Características clave

  • Conversión de HTML a PDF: IronPDF se destaca en convertir páginas HTML complejas, incluyendo soporte para la ejecución de JavaScript y CSS moderno, directamente en un PDF. Utiliza un motor de renderizado basado en Chromium, asegurando que la salida se vea idéntica a lo que vería en un navegador web.
  • Manipulación de PDF: IronPDF le permite fusionar, dividir y modificar fácilmente los documentos PDF existentes.
  • Opciones de Estilización Avanzada: IronPDF soporta hojas de estilo externas, fuentes personalizadas y JavaScript, permitiéndole crear documentos altamente estilizados. Es perfecto para facturas, informes y contenido basado en web.
  • Características de Seguridad: IronPDF proporciona funciones para agregar protección con contraseña, firmas digitales y establecer permisos para restringir acciones como imprimir, copiar o editar el PDF.
  • Manejo de Formularios: IronPDF permite a los desarrolladores crear, llenar y leer formularios PDF programáticamente, haciéndolo adecuado para aplicaciones que requieren entrada del usuario en formato PDF.
  • NuGet Package Manager: Instalación y gestión fáciles a través de la consola del gestor de paquetes en Visual Studio.

Ejemplo de código

using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";

        // Create an instance of ChromePdfRenderer
        ChromePdfRenderer renderer = new ChromePdfRenderer(); 

        // Render the HTML as a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(html); 

        // Save the PDF to a specified file
        pdf.SaveAs("Generated.pdf"); 
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main()
		Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"

		' Create an instance of ChromePdfRenderer
		Dim renderer As New ChromePdfRenderer()

		' Render the HTML as a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)

		' Save the PDF to a specified file
		pdf.SaveAs("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Importación de Namespace: using IronPdf; importa la biblioteca IronPDF para acceder a sus clases y métodos.
  2. Cadena HTML: La variable 'html' contiene el contenido HTML que desea convertir en PDF.
  3. Instancia del Renderer: new ChromePdfRenderer(); crea una instancia de la clase ChromePdfRenderer, proporcionando métodos para renderizar contenido HTML en formato PDF.
  4. Renderizar PDF: PdfDocument pdf = renderer.RenderHtmlAsPdf(html); convierte la cadena HTML en un documento PDF.
  5. Guardar PDF: pdf.SaveAs("Generated.pdf"); guarda el PDF generado en la ruta del archivo especificada.

Ventajas

  • Excelente calidad de renderizado para contenido web.
  • Soporte sólido para formularios, hipervínculos y marcadores.

Contras

  • Las tarifas de licencia pueden ser una consideración para proyectos más grandes.
  • Características más avanzadas pueden requerir un aprendizaje más profundo.

2. iTextSharp

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 2

iTextSharp es una biblioteca .NET PDF bien establecida que proporciona una amplia funcionalidad para crear y editar archivos PDF. Es ampliamente utilizada en industrias como la financiera y legal, donde los documentos deben ser personalizados y seguros. iTextSharp le permite crear archivos PDF desde cero, rellenar formularios y modificar archivos PDF, proporcionando un control extenso sobre el contenido del documento. Es particularmente útil para aplicaciones empresariales que necesitan generar archivos PDF con diseños precisos y datos dinámicos, como facturas o contratos.

Características clave

  • Capacidades Completas de Creación de PDF: iTextSharp facilita la creación de un archivo PDF en C# desde cero, permitiendo a los desarrolladores agregar texto, imágenes, tablas y gráficos vectoriales. Proporciona control completo sobre el diseño del documento, incluyendo la capacidad de definir tamaños de página, márgenes y metadatos.
  • Relleno de Formularios: Una fortaleza significativa de iTextSharp es su capacidad para manejar formularios PDF (AcroForms). Puede crear formularios con varios campos de entrada y luego rellenarlos programáticamente, una característica útil en flujos de trabajo de generación de documentos automatizados.
  • Conversión de XML a PDF: iTextSharp tiene un soporte robusto para convertir datos XML a PDF usando XFA (Arquitectura de Formularios XML). Esto es particularmente valioso en industrias donde los datos XML necesitan ser formateados en formularios o informes estándar.
  • Seguridad en PDF: iTextSharp incluye características avanzadas como agregar encriptación, firmas digitales y marcas de agua para asegurar la autenticidad del documento y proteger datos sensibles.
  • Extracción y Manipulación de Texto: Puede extraer texto de PDFs existentes, reorganizar el contenido del documento, o manipular elementos de la página, haciéndolo útil para el post-procesamiento de documentos o generar informes resumidos a partir de PDFs complejos.

Ejemplo de código

using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
using System;
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;

namespace Helpers
{
    public class PdfGenerator
    {
        public static byte[] GeneratePdfFromFragment(string htmlFragment)
        {
            var html = string.Format(@"
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment);
            return Generate(html);
        }

        public static byte[] GeneratePdfFromPage(string htmlPage)
        {
            return Generate(htmlPage);
        }

        private static byte[] Generate(string html)
        {
            using (var memoryStream = new MemoryStream())
            {
                var pdfDocument = new Document(PageSize.LETTER);
                var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
                pdfDocument.Open();
                using (var fw = new StringReader(html))
                {
                    XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
                }
                pdfDocument.Close();
                return memoryStream.ToArray();
            }
        }
    }
}
Imports System
Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml

Namespace Helpers
	Public Class PdfGenerator
		Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
			Dim html = String.Format("
            <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
            <head>
            <style type='text/css'>
            table,td {{border: 1px solid black;}}
            div {{ white-space: nowrap; padding: 2px;}}
            table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
            body table {{font-size: 50%;}}
            th {{width:500px; height: 28px;}}
            td {{width:300px; height: 28px;}}
            </style>
            </head><body>{0}</body></html>", htmlFragment)
			Return Generate(html)
		End Function

		Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
			Return Generate(htmlPage)
		End Function

		Private Shared Function Generate(ByVal html As String) As Byte()
			Using memoryStream As New MemoryStream()
				Dim pdfDocument = New Document(PageSize.LETTER)
				Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
				pdfDocument.Open()
				Using fw = New StringReader(html)
					XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
				End Using
				pdfDocument.Close()
				Return memoryStream.ToArray()
			End Using
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel
  1. GeneratePdfFromFragment: Toma un fragmento de HTML (como un documento HTML parcial) y lo convierte en una estructura HTML completa envolviéndolo en una plantilla básica <html> y <body>. Luego llama al método interno Generate.
  2. GeneratePdfFromPage: Acepta una página HTML completa y llama directamente al método Generate.
  3. Generate: Este método maneja la conversión de HTML a PDF.
    • Inicializa un MemoryStream para contener el PDF generado en memoria.
    • Crea un objeto Document de iTextSharp con páginas de tamaño carta.
    • El XMLWorkerHelper analiza el contenido HTML y lo escribe en el documento PDF usando el StringReader proporcionado.

Ventajas

  • Altamente personalizable con un conjunto de características ricas.
  • Documentación extensa y soporte comunitario.

Contras

  • iTextSharp (que es gratuito para uso personal pero requiere una licencia comercial para proyectos a gran escala) puede tener limitaciones manejando CSS o JavaScript complejos.
  • XMLWorker (que se usa aquí) es una herramienta obsoleta de iTextSharp para analizar HTML/CSS. iText7 (la versión más nueva de iText) utiliza un analizador HTML más robusto, pdfHTML, que podría brindar mejor soporte para estándares web modernos.
  • Curva de aprendizaje más pronunciada para principiantes.

3. PDFsharp

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 3

PDFSharp es una biblioteca .NET PDF ligera y de código abierto ideal para tareas básicas de creación de PDF. Si su aplicación requiere solo operaciones simples como agregar texto, imágenes o tablas, PDFSharp es una opción fácil de usar para generar documentos PDF en C#. Carece de características avanzadas como la conversión de HTML a PDF, pero brilla por su simplicidad para generar archivos PDF de pequeño a mediano tamaño en C#.

Características clave

  • Creación Básica de PDF: API simple y fácil de usar para dibujar texto y gráficos. Ideal para crear documentos sencillos.
  • Manipulación de Documentos: Fusionar y modificar PDFs existentes con facilidad, permitiendo flexibilidad en la gestión de documentos.
  • Soporte para Dibujo y Gráficos: PDFsharp proporciona un conjunto de herramientas para dibujar en páginas PDF, incluyendo líneas, rectángulos y otros gráficos vectoriales. También soporta la inserción de imágenes en sus PDFs.
  • Gratuito y de Código Abierto: PDFsharp es completamente gratuito para uso comercial y no comercial, haciéndolo una opción atractiva para pequeñas empresas y desarrolladores que trabajan en proyectos de código abierto.

Ejemplo de código

using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        PdfDocument document = new PdfDocument();
        document.Info.Title = "Created with PdfSharp";

        // Add a page to the document
        PdfPage page = document.AddPage();

        // Create an XGraphics object to draw on the page
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Set a font to use for drawing text
        XFont font = new XFont("Verdana", 20, XFontStyle.Bold);

        // Draw the text on the PDF page
        gfx.DrawString("Hello, World!", font, XBrushes.Black, 
                       new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

        // Save the document to disk
        document.Save("Generated.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document
		Dim document As New PdfDocument()
		document.Info.Title = "Created with PdfSharp"

		' Add a page to the document
		Dim page As PdfPage = document.AddPage()

		' Create an XGraphics object to draw on the page
		Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

		' Set a font to use for drawing text
		Dim font As New XFont("Verdana", 20, XFontStyle.Bold)

		' Draw the text on the PDF page
		gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)

		' Save the document to disk
		document.Save("Generated.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: Representa el documento PDF completo. Puede agregar páginas, configurar metadatos y manipular el documento.
  • PdfPage: Representa una sola página dentro del documento. Nuevas páginas se añaden usando el método AddPage.
  • XGraphics: Utilizado para dibujar texto, imágenes y formas en una página específica. Es similar a GDI+ en .NET.
  • XFont: Especifica la fuente y el estilo para el renderizado de texto. En este ejemplo, se utiliza "Verdana" con estilo en negrita.
  • DrawString: Dibuja la cadena especificada en la posición definida dentro del documento.

Ventajas

  • Gratis y de código abierto sin restricciones de licencia.
  • Simple y ligero, lo que facilita comenzar con la generación básica de PDF.
  • Funciona bien para proyectos que no requieren características complejas.

Contras

  • Funcionalidad limitada en comparación con otras bibliotecas.
  • Sin soporte nativo para convertir HTML a PDF.

4. Biblioteca PDF Syncfusion

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 4

Syncfusion PDF Library es una herramienta de alto rendimiento y completa diseñada para empresas que necesitan trabajar con PDFs en una amplia gama de aplicaciones. Es parte de la suite Syncfusion más amplia, que ofrece bibliotecas para una variedad de formatos y plataformas. La biblioteca PDF se destaca por su amplio conjunto de características que van más allá de la simple creación de documentos y permiten la manipulación detallada, incluyendo el relleno de formularios, las firmas digitales y la seguridad de documentos.

Características clave

  • API Completa de PDF: Capaz de generar PDFs altamente personalizados, incluyendo aquellos con diseños complejos, fuentes incrustadas e imágenes de alta resolución. Proporciona control detallado sobre todos los aspectos de la creación de PDF, desde el formato de la página hasta opciones de diseño avanzadas.
  • Procesamiento de Formularios: La biblioteca se destaca en la creación, llenado y extracción de datos de formularios PDF interactivos (AcroForms). Útil para crear PDFs rellenables para entrada de usuarios, automatización de entradas de datos o procesamiento de formularios llenos.
  • Firmas Digitales y Encriptación: Ofrece funciones de seguridad robustas, incluyendo la capacidad de encriptar documentos PDF, agregar protección con contraseña y aplicar firmas digitales. Esencial para industrias como la salud y servicios legales que requieren autenticidad y seguridad de documentos.

Ejemplo de código

using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics;

class Program
{
    static void Main()
    {
        // Create a new PDF document.
        PdfDocument document = new PdfDocument();

        // Add a page to the document.
        PdfPage page = document.Pages.Add();

        // Create PDF graphics for the page.
        PdfGraphics graphics = page.Graphics;

        // Set the standard font.
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);

        // Draw the text.
        graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));

        // Save the document.
        document.Save("Output.pdf");

        // Close the document.
        document.Close(true);
    }
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Graphics

Friend Class Program
	Shared Sub Main()
		' Create a new PDF document.
		Dim document As New PdfDocument()

		' Add a page to the document.
		Dim page As PdfPage = document.Pages.Add()

		' Create PDF graphics for the page.
		Dim graphics As PdfGraphics = page.Graphics

		' Set the standard font.
		Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)

		' Draw the text.
		graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))

		' Save the document.
		document.Save("Output.pdf")

		' Close the document.
		document.Close(True)
	End Sub
End Class
$vbLabelText   $csharpLabel
  • PdfDocument: Representa el documento PDF. Puede agregar páginas, configurar propiedades y manipular su contenido.
  • PdfPage: Representa una página dentro del documento PDF.
  • PdfFont: Define la fuente para renderizar texto. En este caso, se utiliza una fuente estándar Helvetica.
  • DrawString: Dibuja la cadena especificada en la página del PDF en las coordenadas dadas.

Ventajas

  • Conjunto de características ricas, adecuado para crear PDFs complejos.
  • El soporte profesional y la documentación lo hacen ideal para aplicaciones a gran escala.
  • Soporta capacidades avanzadas de PDF como el relleno de formularios, encriptación y anotaciones.

Contras

  • Las tarifas de licencia son relativamente altas para uso comercial.
  • API compleja, que puede requerir tiempo para dominar.

5. PDFShift (herramienta en línea)

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 5

PDFShift es un servicio basado en la nube diseñado para convertir HTML en archivos PDF. Se integra suavemente con aplicaciones C# a través de su API, permitiéndole convertir páginas HTML generadas dinámicamente en PDFs de calidad profesional. PDFShift es particularmente útil para desarrolladores web que desean generar documentos PDF a pedido a partir de contenido HTML, como facturas o informes. Dado que PDFShift opera completamente a través de su API REST, puede enviar solo unas pocas líneas de HTML al servicio y recibir un archivo PDF descargable en retorno. Es una solución simple y escalable para la generación de archivos PDF basada en web.

Características clave

  • Conversión de HTML a PDF: PDFShift se destaca en la conversión de documentos HTML en PDFs de alta calidad. Maneja estilos CSS complejos, JavaScript y diseños de diseño responsive, asegurando que su página web se vea exactamente igual en formato PDF.
  • Integración API: La API de PDFShift está diseñada para una integración sin esfuerzo en aplicaciones web. Es sencilla de usar: simplemente envíe una solicitud HTTP POST con el contenido HTML, y el servicio devuelve un documento PDF.
  • Opciones de Personalización: Permite la personalización del PDF generado, incluyendo la configuración del tamaño de página, orientación, márgenes y encabezados/pies de página. También puede agregar contenido dinámico a los encabezados y pies de página, como números de página o metadatos del documento.

Cómo funciona

  • Enviar una solicitud POST con el contenido HTML al punto final de la API PDFShift.
  • Recibir el PDF generado en respuesta, listo para descargar o guardar.

Código de ejemplo

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
            var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
			Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • HttpClient: Envía el contenido HTML como una solicitud POST a la API PDFShift.
  • PostAsync: Envía la solicitud a la API, que procesa el HTML y devuelve el PDF.
  • ReadAsByteArrayAsync: Lee la respuesta del PDF como una matriz de bytes, que luego se puede guardar como un archivo.

Ventajas

  • API simple con configuración mínima.
  • Ideal para aplicaciones web que requieren conversión dinámica de HTML a PDF.
  • No hay necesidad de gestionar bibliotecas o servidores de PDF.

Contras

  • Limitado a la conversión de HTML a PDF; - No soporta características más complejas de PDF.
  • Requiere una conexión a Internet e incurre en costos después de umbral de uso.

6. DocRaptor (herramienta en línea)

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 6

DocRaptor es otro servicio de generación de PDF basado en API potente que convierte HTML y CSS en PDFs de alta calidad. Es conocido por su excelente renderizado de documentos HTML, particularmente en el manejo de estilos CSS complejos, consultas de medios y fuentes web. Esto hace que DocRaptor sea una gran elección para generar documentos de aspecto profesional como informes, facturas y eBooks, directamente de plantillas HTML.

Características clave

  • Soporte de HTML y CSS: Convierte documentos HTML con estilos CSS complejos, incluyendo consultas de medios y fuentes.
  • Integración API: API REST para integración fluida en aplicaciones web.
  • Encabezados/Pie de Página Personalizados: Añadir encabezados y pies de página dinámicos, incluyendo números de página y formateo personalizado.
  • Seguridad en PDF: Soporta encriptación y protección con contraseña.

Cómo funciona

  • Enviar una solicitud POST a la API DocRaptor con contenido HTML.
  • Personalizar la salida del PDF con parámetros para tamaño de página, márgenes, encabezados y pies de página.
  • Recibir el PDF generado en respuesta.

Código de ejemplo

using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        using (HttpClient client = new HttpClient())
        {
            string apiKey = "YOUR_API_KEY";
            string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
            string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
            var content = new StringContent(jsonData, Encoding.UTF8, "application/json");

            HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);

            byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
        }
    }
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Using client As New HttpClient()
			Dim apiKey As String = "YOUR_API_KEY"
			Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
			Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
			Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")

			Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)

			Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel
  • Clave API: Debe proporcionar una clave API para autenticar cuando use DocRaptor. Reemplace "YOUR_API_KEY" con su clave real.
  • JsonData: Esta cadena JSON contiene el contenido HTML, nombre del documento, y tipo (PDF en este caso).
  • PostAsync: Envía el contenido HTML y los parámetros a la API de DocRaptor para la generación del PDF.

Ventajas

  • Renderizado de alta calidad con soporte completo para HTML, CSS y JavaScript.
  • Opciones avanzadas de personalización para el diseño y seguridad de documentos.
  • No hay necesidad de mantener bibliotecas o infraestructuras de generación de PDF.

Contras

  • Servicio de pago después de superar un límite de uso gratuito.
  • Dependiente de la conectividad a Internet.

7. Herramientas en línea libres de código

Si no desea escribir código o necesita una solución rápida para generar PDFs, varias herramientas en línea le permiten crear PDFs rápida y fácilmente. Aquí hay algunas opciones notables:

7.1. Smallpdf

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 7

Smallpdf es una plataforma en línea que ofrece una variedad de herramientas relacionadas con PDF, incluyendo la capacidad de crear PDFs a partir de una amplia gama de formatos de archivo. Está diseñada para usuarios que desean una interfaz de arrastrar y soltar simple sin la necesidad de escribir código. Smallpdf es ampliamente utilizado para conversiones rápidas de archivos, como convertir documentos de Word, hojas de Excel o imágenes en PDFs. También proporciona herramientas para fusionar, comprimir y dividir PDFs, convirtiéndola en una herramienta versátil para tareas básicas en PDF.

Características clave

  • Conversión de Archivos: Soporta convertir archivos de Word, Excel, PowerPoint e imagenes (JPG, PNG) en PDF. Esto lo hace ideal para usuarios que necesitan crear PDFs a partir de una variedad de tipos de documentos rápidamente.
  • Fusionar y Dividir PDFs: Ofrece una interfaz simple para fusionar múltiples PDFs en un solo archivo o dividir un PDF en páginas individuales.
  • Integración de Almacenamiento en la Nube: Puede fácilmente subir archivos desde Google Drive o Dropbox y guardar los PDFs convertidos de vuelta a estas plataformas, agilizando la gestión de archivos.
  • Herramientas de Edición de PDF: Proporciona herramientas básicas de edición de PDF para editar cualquier documento PDF existente, como agregar anotaciones, llenar formularios y firmar documentos digitalmente.

Ventajas

  • Muy fácil de usar para no desarrolladores.
  • Gratis para uso básico con opciones para actualizar a más funcionalidades.
  • Ofrece una amplia variedad de herramientas relacionadas con PDF como fusionar, dividir y comprimir PDFs.

Contras

  • Personalización limitada en comparación con soluciones basadas en código.
  • El nivel gratuito puede tener restricciones de funciones.

7.2. PDFescape

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 8

PDFescape es un editor de PDF basado en la web fácil de usar que permite a los usuarios crear, editar y ver PDFs sin la necesidad de instalar ningún software. Es una gran herramienta para aquellos que necesitan realizar ediciones rápidas a PDFs, como llenar formularios, agregar anotaciones de texto o insertar imágenes. PDFescape también ofrece herramientas para crear nuevos PDFs desde cero, convirtiéndola en una opción flexible para la creación básica de documentos.

Características clave

  • Relleno y Edición de Formularios: Se destaca en el manejo de formularios PDF. Los usuarios pueden fácilmente llenar formularios o editar campos existentes en documentos PDF, útil para contratos, solicitudes y otros formularios.
  • Creación Básica de PDF: Ofrece herramientas para agregar texto, formas, imágenes y campos de formulario. Útil para crear documentos simples como cartas o formularios.
  • Anotaciones y Comentarios: Agregar comentarios, notas adhesivas y otras anotaciones a PDFs existentes, haciendo de PDFescape una gran herramienta para la revisión de documentos y colaboración.
  • Sin Instalación Requerida: Funciona completamente en su navegador, por lo que no hay necesidad de instalar ningún software. Esto lo hace ideal para usuarios que necesitan acceso rápido a herramientas PDF en movimiento.

Ventajas

  • Simple de usar para usuarios no técnicos.
  • Nivel gratuito para la creación y edición básica de PDFs.
  • Adecuado para tareas menores de edición de PDFs.

Contras

  • Carece de características avanzadas para la creación compleja de PDFs.
  • Opciones de diseño y formato limitadas.

7.3. PDF Candy

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 9

PDF Candy es un conjunto de herramientas PDF en línea gratuitas que cubre una amplia variedad de tareas relacionadas con PDF, desde conversión de archivos hasta edición. Es una excelente opción para usuarios que necesitan realizar operaciones rápidas en PDF sin registrarse para una cuenta o instalar software. PDF Candy soporta convertir múltiples tipos de archivos, como documentos de Word, imágenes y archivos de texto, en PDFs. También proporciona herramientas para fusionar, dividir y comprimir PDFs.

Características clave

  • Amplia Gama de Opciones de Conversión: Puede convertir varios formatos de archivo, incluyendo documentos de Word, imágenes y archivos de texto, en PDFs. Esto lo hace una herramienta flexible para manejar diferentes tipos de contenido.
  • Fusionar y Dividir PDFs: Permite a los usuarios fusionar múltiples PDFs en uno o dividir grandes PDFs en archivos más pequeños y manejables.
  • Privacidad de Archivos: Elimina automáticamente los archivos de sus servidores después de un corto período, asegurando que sus documentos permanezcan privados.
  • Gratis para Usar: La mayoría de las herramientas son gratuitas sin registro, haciéndolo accesible a una amplia audiencia. Sin embargo, también ofrece una versión premium con características más avanzadas para aquellos que necesitan un uso más frecuente o conversiones de archivos de mayor tamaño.

Ventajas

  • Fácil de usar y completamente gratuito para la mayoría de los usuarios.
  • Soporta una variedad de tipos de archivos para conversión a PDF.
  • No se requiere registro de cuenta para uso básico.

Contras

  • Funciones limitadas de personalización avanzada de PDF.
  • Algunas herramientas pueden tener restricciones en el tamaño del archivo o la complejidad de la conversión.

Conclusión

Comparación de 7 Libros de C# para Generar PDF (Herramientas Gratuitas y de Pago): Figura 10

Elegir la herramienta adecuada para generar archivos PDF en C# depende de sus necesidades. Si necesita generar documentos PDF a partir de contenido HTML, IronPDF y PDFShift son excelentes opciones. iTextSharp y Syncfusion ofrecen amplias opciones de personalización y control sobre la estructura del documento para proyectos más complejos. Para soluciones más simples y de código abierto, PDFsharp es una elección confiable para modificar archivos PDF o crear PDFs básicos. Finalmente, para no desarrolladores, Smallpdf, PDFescape y PDF Candy proporcionan opciones fáciles y sin código para trabajar con archivos PDF.

Para aquellos interesados en probar [IronPDF](trial license), haciéndolo una opción excelente para desarrolladores que deseen probar su conversión de HTML a PDF y funciones de manipulación de PDF antes de comprometerse a una licencia de pago. La prueba permite explorar sus características premium, como la generación de archivos PDF de alta calidad, opciones de seguridad y modificación de documentos PDF existentes, brindándole una experiencia práctica con las capacidades de la herramienta. Si su proyecto requiere conversiones frecuentes de HTML a PDF o edición compleja de PDFs, la prueba gratuita de IronPDF es una excelente manera de ver si se adapta a sus necesidades.

Al evaluar las características específicas de cada herramienta y el alcance de su proyecto, puede elegir la mejor solución para generar archivos PDF de manera eficiente en C#.

Preguntas Frecuentes

¿Cómo puedo convertir HTML a PDF en C#?

Puedes usar el método RenderHtmlAsPdf de IronPDF para convertir cadenas de HTML en PDFs. También puedes convertir archivos HTML a PDFs usando RenderHtmlFileAsPdf.

¿Cuáles son las diferencias entre las bibliotecas PDF de C# gratuitas y de pago?

Las bibliotecas gratuitas como PDFsharp son excelentes para la creación y manipulación básica de PDFs, mientras que las bibliotecas de pago como IronPDF ofrecen características avanzadas como conversión de HTML a PDF, procesamiento de formularios y seguridad mejorada.

¿Cuál es la mejor biblioteca de código abierto para tareas básicas de PDF en C#?

PDFsharp es una biblioteca PDF ligera y de código abierto para .NET ideal para tareas básicas de creación de PDFs. Es gratuita tanto para uso comercial como no comercial.

¿Cómo soporta iTextSharp la creación de documentos PDF seguros?

iTextSharp ofrece extensas opciones de personalización para crear documentos PDF seguros, incluyendo soporte para firmas digitales y encriptación, lo que lo hace adecuado para industrias que requieren manejo seguro de documentos.

¿Puedo usar herramientas en línea para la conversión de HTML a PDF en aplicaciones C#?

Sí, herramientas en línea como PDFShift y DocRaptor ofrecen conversión de HTML a PDF basada en API, lo cual es ideal para aplicaciones web que necesitan generación dinámica de PDFs.

¿Cuáles son las ventajas de usar una biblioteca con un motor de renderizado basado en Chromium para la generación de PDFs?

Bibliotecas como IronPDF, que utilizan un motor de renderizado basado en Chromium, ofrecen conversión de HTML a PDF de alta calidad con soporte para estilización compleja y JavaScript.

¿Cómo beneficia la biblioteca PDF de Syncfusion a las aplicaciones empresariales?

La biblioteca PDF de Syncfusion ofrece características completas para aplicaciones empresariales, incluyendo procesamiento de formularios, firmas digitales y encriptación, lo que la hace muy adecuada para requisitos profesionales complejos.

¿IronPDF es compatible con la próxima versión de .NET 10?

Sí, IronPDF es compatible con .NET 10 de fábrica. Está catalogado como compatible con .NET 10 junto con las versiones 9, 8, 7, 6, Core, Standard y Framework, y no requiere soluciones alternativas especiales. (ironpdf.com)

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más