COMPARACIóN

PDFSharp frente a IronPDF: Guía de comparación técnica

PDFSharpvs IronPDF: Dibujo de bajo nivel vs Generación de PDF basada en HTML en .NET

Cuando los desarrolladores .NET necesitan crear documentos PDF mediante programación, suelen considerarPDFSharpy IronPDF.PDFSharpha sido una opción popular para la creación de archivos PDF a través de un enfoque de dibujo basado en coordenadas, mientras queIronPDFofrece conversión de HTML a PDF con soporte CSS moderno. Esta comparación examina ambas bibliotecas, analizando sus diferencias arquitectónicas, patrones de API e idoneidad para diferentes escenarios de desarrollo.

¿Qué es PDFSharp?

PDFSharp es una biblioteca de creación de PDF de bajo nivel que permite a los desarrolladores generar documentos PDF mediante un enfoque programático basado en coordenadas. Publicado bajo la licencia MIT,PDFSharpgarantiza a la comunidad de desarrolladores libertad de uso y modificación sin costes de licencia.

PDFSharp funciona principalmente como una herramienta para dibujar y compilar archivos PDF desde cero. La biblioteca utiliza una API de estilo GDI+ en la que los desarrolladores posicionan cada elemento utilizando coordenadas X,Y. Este enfoque requiere calcular las posiciones exactas del texto, las imágenes, las líneas y los rectángulos, algo similar a dibujar en un lienzo.

Las características clave dePDFSharpincluyen:

  • Dibujo basado en coordenadas: Cada elemento requiere un posicionamiento X,Y explícito
  • Licencia MIT: Libre de usar, modificar y distribuir
  • API de estilo GDI+: Utiliza las clases XGraphics, XFont, XBrush y XPen
  • Gestión manual de páginas: Los desarrolladores manejan la creación y el desbordamiento de páginas manualmente
  • Sin soporte HTML: No se puede convertir directamente HTML/CSS a PDF
  • Lightweight: Sin dependencias externas, simplifica el despliegue

A veces se piensa erróneamente quePDFSharpes un conversor de HTML a PDF, pero no es así. Su finalidad está dedicada exclusivamente a la creación programática de documentos PDF. Si bien existe un complemento, HtmlRenderer.PdfSharp, destinado a proporcionar capacidades de renderizado HTML, sólo es compatible con CSS 2.1, sin soporte para características CSS modernas como flexbox y grid, y tiene limitaciones como la renderización de tablas rotas.

¿Qué es IronPDF?

IronPDF es una completa biblioteca .NET que proporciona conversión nativa de HTML a PDF utilizando un motor de renderizado Chromium integrado. La clase ChromePdfRenderer convierte contenido HTML con total compatibilidad con HTML5, CSS3 y JavaScript, incluidas funciones de diseño modernas como flexbox y grid.

A diferencia del enfoque basado en coordenadas de PDFSharp,IronPDFpermite a los desarrolladores aprovechar las tecnologías web para la creación de documentos. En lugar de calcular posiciones X,Y, los desarrolladores escriben HTML y CSS para definir la estructura y el estilo del documento. El motor Chromium gestiona automáticamente el flujo de texto, los saltos de página y el posicionamiento de los elementos.

Comparación de arquitecturas

La diferencia fundamental entrePDFSharpeIronPDFradica en su enfoque de la creación de documentos: dibujo manual basado en coordenadas frente a renderización basada en HTML.

AspectoPDFSharpIronPDF
Creación de documentosDibujo por coordenadasPlantillas HTML/CSS
Sistema de diseñoPosicionamiento manual X,YCSS Flow/Flexbox/Grid
Saltos de páginaCálculo manualControl automático + CSS
TablasDibujar celdas individualmenteHTML <código></código>
EstilizaciónFuentes/colores basados en códigoHojas de estilo CSS
MantenimientoDifícil de modificarEditar HTML/CSS
Curva de aprendizajeSe requieren conocimientos de GDITransferencia de conocimientos web
Soporte HTML a PDFNoSí (compatible con HTML5/CSS3)
Soporte CSS modernoNo (Sólo CSS 2.1 mediante addon)Sí (CSS3 completo)
LicenciaMIT (gratuito)Comercial
ActualizacionesPoco frecuenteRegular

Para los desarrolladores con experiencia en desarrollo web, el enfoque basado en HTML deIronPDFtransfiere los conocimientos existentes a la generación de PDF. Para los desarrolladores que requieran un control preciso de los píxeles individuales o que procedan de entornos GDI+,PDFSharpofrece patrones familiares.

Conversión de HTML a PDF

La conversión de contenido HTML a PDF demuestra la diferencia fundamental de capacidades entre estas bibliotecas.

Enfoque de conversión de HTML a PDF de PDFSharp:

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        //PDFSharpdoes not have built-in HTML to PDF conversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        //PDFSharpdoes not have built-in HTML to PDF conversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enfoque HTML a PDF de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        //IronPDFhas native HTML to PDF rendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        //IronPDFhas native HTML to PDF rendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFSharp no puede convertir HTML a PDF. La biblioteca requiere una renderización manual en la que los desarrolladores deben analizar ellos mismos el HTML y dibujar cada elemento utilizando coordenadas. El ChromePdfRenderer deIronPDFacepta de forma nativa cadenas HTML y las renderiza con soporte CSS completo a través del motor Chromium integrado.

Esta diferencia de capacidades afecta significativamente al tiempo de desarrollo. Crear un documento con estilo enPDFSharprequiere calcular las posiciones de cada elemento, mientras que los desarrolladores deIronPDFescriben HTML/CSS estándar. Para obtener información detallada sobre la conversión de HTML a PDF, consulte el tutorial HTML to PDF tutorial.

Añadir texto a PDF existentes

La modificación de PDF existentes para añadir texto muestra distintos enfoques de la manipulación de documentos.

PDFSharp añade texto a PDF:

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF añade texto a PDF:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFSharp utiliza <código>PdfReader.Open()</códigopara cargar un PDF existente y, a continuación, obtiene un objeto XGraphics para dibujar texto en coordenadas X,Y específicas mediante DrawString(). El desarrollador debe calcular el posicionamiento exacto.

IronPDF utiliza <código>PdfDocument.FromFile()</códigopara cargar el PDF y, a continuación, crea un objeto TextStamper con propiedades de alineación como VerticalAlignment.Middle y HorizontalAlignment.Center. El método ApplyStamp() se encarga del posicionamiento basado en estos ajustes de alineación. Para conocer todas las opciones de marcas de agua, consulte la documentación sobre marcas de agua.

Creación de PDF con imágenes

La adición de imágenes a los PDF demuestra los diferentes paradigmas entre los enfoques basados en coordenadas y los basados en HTML.

PDFSharp crea PDF con imagen:

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF crea PDF con imagen:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

PDFSharp requiere cargar la imagen con XImage.FromFile(), y luego dibujarla en coordenadas específicas utilizando gfx.DrawImage(image, x, y, width, height). El texto debe colocarse en relación con la imagen utilizando coordenadas calculadas.

IronPDF permite incrustar imágenes utilizando etiquetas HTML estándar <img> con estilo CSS. El motor Chromium gestiona la carga, el tamaño y la posición de las imágenes mediante propiedades CSS. Alternativamente, ImageStamper puede añadir imágenes a PDF existentes con posicionamiento basado en la alineación.

Referencia de mapeo de API

Para los equipos que evalúan la migración dePDFSharpa IronPDF, comprender las asignaciones de API ayuda a estimar el esfuerzo de desarrollo.

Clases básicas

PDFSharpIronPDFNotas
nuevo PdfDocument()<código>ChromePdfRenderer.RenderHtmlAsPdf()</códigoCrear a partir de HTML
document.AddPage()AutomáticoPáginas creadas a partir de contenido HTML
<código>XGraphics.FromPdfPage()</códigoNo es necesarioUso de elementos HTML
document.Save()<código>pdf.SaveAs()</códigoFunciones similares
<código>PdfReader.Open()</código<código>PdfDocument.FromFile()</códigoAbrir PDF existente
document.Pages.Count<código>pdf.PageCount</códigoNúmero de páginas

Mapeo de elementos de dibujo a HTML

API PDFSharpEquivalente HTML de IronPDFNotas
<código>XGraphics.DrawString()</códigoHTML <p>, <h1>, etc.Posición con CSS
<código>XGraphics.DrawImage()</códigoEtiqueta HTML <img>Posición con CSS
<código>XGraphics.DrawLine()</códigoBordes CSS o SVG<hr> o bordes CSS
<código>XGraphics.DrawRectangle()</códigoCSS o SVG<div> con bordes
XFontCSS font-family, font-sizeCSS estándar
XBrush, XPenColores y bordes CSScolor, color de fondo
XRectPosicionamiento CSSmargen, almohadilla, anchura, altura

Cambios en el espacio de nombres

PDFSharpIronPDF
<código>PdfSharp.Pdf</código<código>IronPDF</código
<código>PdfSharp.Drawing</códigoNo es necesario (utilice HTML/CSS)
<código>PdfSharp.Pdf.IO</código<código>IronPDF</código

El cambio más significativo es la eliminación de PdfSharp.Drawing:IronPDFsustituye el dibujo basado en coordenadas por diseños HTML/CSS.

El problema del cálculo de coordenadas

El enfoque GDI+ dePDFSharpgenera una importante sobrecarga de desarrollo:

  • Calcular posiciones X,Y exactas para cada elemento: Cada bloque de texto, imagen y forma requiere un posicionamiento manual
  • Seguimiento manual de la altura del contenido para el desbordamiento de página: Los desarrolladores deben detectar cuándo el contenido excede los límites de la página
  • Maneja tú mismo el ajuste de líneas y la medición del texto: Los textos largos requieren calcular dónde romper las líneas
  • Dibujar tablas celda a celda con cálculos de bordes: Cada celda de la tabla requiere un posicionamiento y un dibujo de bordes individualizados
  • Gestionar documentos de varias páginas con saltos de página manuales: La detección y el manejo de los límites de página es manual

IronPDF elimina estas preocupaciones aprovechando el motor de diseño Chromium. El texto fluye de forma natural, las tablas cambian de tamaño automáticamente y los saltos de página se producen en los puntos adecuados, todo ello controlado mediante CSS estándar.

Resumen comparativo de características

CaracterísticaPDFSharpIronPDF
LicenciaMIT (gratuito)Comercial
Soporte HTML a PDFNoSí (compatible con HTML5/CSS3)
Soporte CSS modernoNo (sólo CSS 2.1)Sí (CSS3 completo)
Document APINivel bajo (requiere coordenadas)Alto nivel (API simplificada)
Soporte para Flexbox/GridNo
Saltos de página automáticosNo (Manual)
ActualizacionesPoco frecuenteRegular
Dependencias externasNingunoMotor Chromium
Medición de textosManual mediante MeasureString()Automático
Representación de tablasManual celda por celdaHTML <código></código>

Las aplicaciones que requieren diseños CSS modernos, paginación automática o generación basada en plantillas HTML se benefician significativamente del enfoque de IronPDF.

Cuándo los equipos consideran cambiar dePDFSharpa IronPDF

Son varios los factores que llevan a los equipos a evaluarIronPDFcomo alternativa a PDFSharp:

Reducción del tiempo de desarrollo:PDFSharprequiere calcular las posiciones X,Y de cada elemento. Los equipos que dedican mucho tiempo a los cálculos de coordenadas y a la gestión de saltos de página suelen encontrar que la generación basada en HTML/CSS es mucho más rápida.

Requisitos CSS modernos:PDFSharpno puede renderizar características CSS modernas como flexbox, grid o selectores CSS3. Las aplicaciones que requieran diseños web contemporáneos deben utilizar el motor Chromium de IronPDF.

Preocupaciones de mantenimiento: El códigoPDFSharpbasado en coordenadas es difícil de modificar: cambiar un elemento a menudo requiere ajustar las posiciones de los elementos siguientes. Las plantillas HTML/CSS son mucho más fáciles de actualizar.

Transferencia de habilidades de desarrollo web: Los equipos con experiencia en HTML/CSS pueden aplicar las habilidades existentes a la generación de PDF con IronPDF, en lugar de aprender API de dibujo de estilo GDI+.

Requisitos de documentos complejos: Los documentos con tablas, contenido mixto o diseños dinámicos se vuelven cada vez más difíciles con el posicionamiento basado en coordenadas. Las plantillas HTML manejan la complejidad de forma más natural.

Necesidades de mantenimiento activo:PDFSharprecibe actualizaciones poco frecuentes. Los equipos que necesitan parches de seguridad y actualizaciones de funciones periódicas se benefician del desarrollo activo de IronPDF.

Comparación de instalaciones

Instalación de PDFSharp:

Install-Package PdfSharp
Install-Package PdfSharp
SHELL

Ligero y sin dependencias externas.

Instalación de IronPDF:

Install-Package IronPdf
Install-Package IronPdf
SHELL

IronPDF requiere la configuración de una clave de licencia:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

El motor Chromium deIronPDFofrece amplias capacidades de renderizado, pero ocupa más espacio que el enfoque ligero de PDFSharp. La biblioteca es compatible con .NET Framework, .NET Core y .NET 5+, así como con .NET 10 y C# 14.

Tomar la decisión

La elección entrePDFSharpeIronPDFdepende de los requisitos de su proyecto:

ConsiderePDFSharpsi: Su proyecto requiere un control preciso sobre la renderización de documentos sin dependencias adicionales, las limitaciones presupuestarias prohíben las licencias comerciales, se siente cómodo con el posicionamiento basado en coordenadas y sus documentos no requieren renderización HTML/CSS.

ConsidereIronPDFsi: Necesita una conversión moderna de HTML a PDF compatible con CSS3, su equipo tiene conocimientos de desarrollo web que aprovechar, desea un flujo de texto automático, tablas y gestión de saltos de página, la reducción del tiempo de desarrollo es importante o necesita mantenimiento y soporte activos.

Introducción a IronPDF

Para evaluarIronPDFpara sus necesidades de generación de PDF:

  1. Instalación a través de NuGet: Install-Package IronPdf
  2. Consulte la documentación de inicio
  3. Explore Tutoriales de HTML a PDF para ver patrones de conversión
  4. Consulte la Referencia API para ver la documentación completa del método

Los tutoriales IronPDF proporcionan ejemplos completos que cubren situaciones comunes, desde la conversión básica hasta la manipulación avanzada de PDF.

Conclusión

PDFSharp yIronPDFresponden a necesidades diferentes en el ámbito de la generación de PDF en .NET.PDFSharpes adecuado para proyectos que requieren un control preciso de la renderización de documentos sin dependencias adicionales, donde las limitaciones presupuestarias son un factor y el dibujo basado en coordenadas es aceptable. Sin embargo, se queda corta para proyectos que requieren estándares web modernos o contenidos dinámicos transmitidos mediante HTML.

IronPDF supera aPDFSharpen situaciones que requieren una conversión moderna de HTML a PDF, gracias a sus sólidas funciones compatibles con CSS3, HTML5 y la manipulación de documentos de alto nivel. Aunque se trata de una licencia comercial, el aumento de la productividad y las modernas funciones suelen justificar la inversión.

Comprender los requisitos de su proyecto, ya sean limitaciones de costes, la necesidad de un soporte web moderno o un diseño de documentos complejo, le guiará a la hora de elegir entre estas dos ofertas de bibliotecas. La naturaleza basada en coordenadas dePDFSharpcrea una sobrecarga de desarrollo que el enfoque basado en HTML deIronPDFelimina, pero la licencia MIT dePDFSharpy su peso ligero siguen siendo atractivos para los casos de uso apropiados.

Evalúe todos sus requisitos -necesidades de compatibilidad con HTML/CSS, plazos de desarrollo, consideraciones de mantenimiento y presupuesto- a la hora de elegir entre estas bibliotecas. Las diferencias arquitectónicas son fundamentales y afectan a todos los aspectos del flujo de trabajo de generación de PDF.