VIDEOS

Cómo convertir HTML a PDF en una vista ASP.NET MVC

Curtis Chau
Curtis Chau
Updated: 19 de julio de 2026

La migración dePDFSharpa IronPDF transforma su flujo de trabajo de generación de PDF de dibujo manual basado en coordenadas a plantillas HTML/CSS modernas. Esta guía proporciona una ruta de migración completa, paso a paso, que sustituye el tedioso posicionamiento de estilo GDI+ por tecnologías web, reduciendo drásticamente el tiempo de desarrollo y haciendo que la generación de PDF se pueda mantener mediante conocimientos estándar de HTML/CSS.

Por qué migrar dePDFSharpa IronPDF

Entender PDFSharp

PDFSharp es conocida como una biblioteca de creación de PDF de bajo nivel, que permite a los desarrolladores generar documentos PDF mediante un enfoque programático. Publicado bajo la licencia MIT,PDFSharpconcede a la comunidad de desarrolladores libertad de uso y modificación.PDFSharpfunciona principalmente como una herramienta para dibujar y compilar archivos PDF desde cero, lo que puede ser beneficioso o restrictivo en función de la naturaleza del proyecto.

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.

El problema del cálculo de coordenadas

El enfoque GDI+ dePDFSharpsignifica que debe:

  • Calcular posiciones X,Y exactas para cada elemento
  • Seguimiento manual de la altura del contenido para el desbordamiento de la página
  • Maneje usted mismo el ajuste de líneas y la medición de texto
  • Dibujar tablas celda por celda con cálculos de bordes
  • Gestión de documentos de varias páginas con saltos de página manuales

La arquitectura dePDFSharprequiere un profundo conocimiento del posicionamiento mediante coordenadas, lo que a menudo plantea problemas a la hora de crear diseños complejos.

Comparación entrePDFSharpe IronPDF

CaracterísticaPDFSharpIronPDF
LicenciaMIT (gratuito)Comercial
Soporte HTML a PDFNoSí (compatible con HTML5/CSS3)
Soporte CSS modernoNo (sólo CSS 2.1)Sí (CSS3 completo)
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 <table>
EstilizaciónFuentes/colores basados en códigoHojas de estilo CSS
Document APINivel bajo (requiere coordenadas)Alto nivel (API simplificada)
ActualizacionesPoco frecuenteRegular

IronPDF destaca en situaciones en las que es necesario convertir documentos HTML a PDF con total fidelidad. Esta biblioteca .NET es compatible con HTML5 y CSS3, lo que garantiza el cumplimiento de los estándares web modernos. Sus capacidades nativas de HTML a PDF permiten a los desarrolladores aprovechar el contenido web existente o las plantillas diseñadas con herramientas web contemporáneas.

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDF ofrece un enfoque moderno que elimina los cálculos de coordenadas a la vez que aprovecha las habilidades de desarrollo web.


Antes de empezar

Prerrequisitos

  1. Entorno .NET : .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acceso a NuGet : Capacidad para instalar paquetes NuGet
  3. Licencia de IronPDF: Obtenga su clave de licencia en IronPDF

Cambios en el paquete NuGet

# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting

# Add IronPDF
dotnet add package IronPdf
SHELL

Configuración de licencias

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Identificar el uso de PDFSharp

# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
SHELL

Referencia completa de la API

Cambios en el espacio de nombres

// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;

Mapeos de API principales

API PDFSharpAPI de IronPDF
new PdfDocument()ChromePdfRenderer.RenderHtmlAsPdf()
document.AddPage()Automático
XGraphics.FromPdfPage()No es necesario
XGraphics.DrawString()HTML <p>, <h1>, etc.
XGraphics.DrawImage()Etiqueta HTML <img>
XFontCSS font-family, font-size
XBrush, XPenColores y bordes CSS
document.Save()pdf.SaveAs()
PdfReader.Open()PdfDocument.FromFile()

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (PDFSharp):

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

class Program
{
    static void Main()
    {
        //PDFSharpdoes not have built-in HTML a PDFconversion
        // 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);
        
        // Manualtext 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");
    }
}

Después (IronPDF):

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

class Program
{
    static void Main()
    {
        //IronPDFhas native HTML a PDFrendering
        var renderer = new ChromePdfRenderer();
        
        string html = "<h1>Hello from IronPDF</h1><p>Easy HTML a PDFconversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        
        pdf.SaveAs("output.pdf");
    }
}

Este ejemplo pone de relieve la diferencia más significativa entre las dos bibliotecas.PDFSharpdeclara explícitamente que "no tiene conversión de HTML a PDF incorporada"; debe crear manualmente un PdfDocument, agregar un PdfPage, obtener un objeto XGraphics, crear un XFont y usar DrawString() con coordenadas XRect.

IronPDF proporciona representación nativa de HTML a PDF a través de ChromePdfRenderer. El método RenderHtmlAsPdf() acepta cadenas HTML y las convierte utilizando un motor Chromium interno.IronPDFconvierte fácilmente archivos HTML a PDF, preservando todos los estilos definidos en HTML5 y CSS3, eliminando la necesidad de cálculos de coordenadas. Consulte la documentación HTML a PDF para ver ejemplos completos.

Ejemplo 2: Añadir texto/marca de agua a un PDF existente

Antes (PDFSharp):

// 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");
    }
}

Después (IronPDF):

// 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");
    }
}

PDFSharp requiere abrir el PDF con PdfReader.Open() especificando PdfDocumentOpenMode.Modify, acceder a una página, crear un objeto XGraphics, crear un XFont con estilo y usar DrawString() con un XPoint especificando coordenadas X,Y exactas (200, 400).

IronPDF simplifica esto con PdfDocument.FromFile(), un objeto TextStamper con propiedades declarativas (Text, FontSize, Color, VerticalAlignment, HorizontalAlignment) y ApplyStamp(). No es necesario calcular coordenadas: basta con especificar la alineación para que IronPDFse encargue del posicionamiento. Tenga en cuenta que el espacio de nombres IronPdf.Editing es necesario para la funcionalidad de estampado.

Ejemplo 3: Creación de PDF con imágenes

Antes (PDFSharp):

// 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");
    }
}

Después (IronPDF):

// 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);
    }
}

PDFSharp requiere crear un nuevo PdfDocument, agregar un PdfPage, obtener un XGraphics, cargar un XImage desde el archivo, calcular el ancho y la altura, usar DrawImage() con coordenadas exactas (50, 50, 200, 200) y luego agregar texto por separado con DrawString().

IronPDF utiliza HTML estándar con una etiqueta <img> y estilo CSS (style='width:200px; altura:200px;'). No se necesitan cálculos de coordenadas: CSS se encarga del diseño.IronPDF también proporciona ImageStamper para agregar imágenes a PDF existentes con propiedades de alineación declarativas. Más información en nuestros tutoriales.


Notas de migración críticas

Cambio de paradigma: Coordenadas a HTML/CSS

El cambio más significativo es el paso del dibujo por coordenadas al HTML/CSS:

// PDFSharp: Manualpositioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));

// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);

Migración de fuentes

// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);

// IronPDF: CSS font properties
var html = @"
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";

Cambio de carga del documento

// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");

Cambio de método de guardado

// PDFSharp: document.Save()
document.Save("output.pdf");

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");

Cambio de acceso a la página

// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF: Automáticopage handling or pdf.Pages[0]
// Pages are created automatically from HTML content

Nuevas capacidades tras la migración

Después de migrar a IronPDF, se obtienen capacidades quePDFSharpno puede proporcionar:

De HTML nativo a PDF

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");

URL a PDF

var pdf = renderer.RenderUrlAsPdf("https://example.com");

Fusión de PDF

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);

Marcas de agua con HTML

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");

Resumen comparativo de características

CaracterísticaPDFSharpIronPDF
Dibujo por coordenadas✓✗(utilice HTML)
HTML a PDF✗✓
Compatibilidad con CSS3✗✓
Diseño Flexbox/Grid✗✓
Estampación de textoManualXGraphicsTextStamper
Estampación de imágenesManualXImageImageStamper
Fusionar PDFManual✓
URL a PDF✗✓
Renderizado web moderno✗Motor Chromium
Saltos de página automáticos✗✓

Lista de comprobación de la migración

Pre-Migración

  • Inventario de todo el uso dePDFSharpen el código base
  • Identificar los tipos de documentos que se generan (informes, facturas, certificados)
  • Tenga en cuenta cualquier gráfico personalizado o operaciones de dibujo
  • Planifique el almacenamiento de la clave de licencia de IronPDF(se recomiendan variables de entorno)
  • Pruebe primero con la licencia de prueba de IronPDF

Cambios en el paquete

  • Eliminar el paquete NuGet PdfSharp
  • Eliminar el paquete NuGet PdfSharp-wpf si se utiliza
  • Eliminar el paquete NuGet PdfSharp.Charting si se utiliza
  • Instalar IronPdf el paquete NuGet : dotnet add package IronPdf

Cambios de código

  • Actualizar las importaciones del espacio de nombres (using PdfSharp.Pdf; → using IronPdf;)
  • Agregar using IronPdf.Editing; para la funcionalidad de estampado
  • Convertir diseños basados ​​en coordenadas a HTML/CSS
  • Reemplace XFont con propiedades de fuente CSS
  • Reemplace XPen con colores/bordes CSS
  • Reemplazar XGraphics.DrawString() con elementos de texto HTML
  • Reemplace XGraphics.DrawImage() con etiquetas HTML <img>
  • Reemplace PdfReader.Open() con PdfDocument.FromFile()
  • Reemplace document.Save() con pdf.SaveAs()
  • Convertir código de dibujo de tablas a tablas HTML

Posmigración

  • Comparación visual de los PDF generados
  • Probar documentos de varias páginas
  • Verificar la representación de la fuente
  • Agregue nuevas capacidades (HTML a PDF, fusión, marcas de agua) según sea necesario

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 estructurados y visualmente atractivos.

Leer más

Artículos Relacionados