IRONSOFTWAREHOME
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");
    }
}
C#

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

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

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta