Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de PDFSharp a IronPDF en C#

La migración dePDFSharpaIronPDFtransforma 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ística PDFSharp IronPDF
Licencia MIT (gratuito) Comercial
Soporte HTML a PDF No Sí (compatible con HTML5/CSS3)
Soporte CSS moderno No (sólo CSS 2.1) Sí (CSS3 completo)
Creación de documentos Dibujo por coordenadas Plantillas HTML/CSS
Sistema de diseño Posicionamiento manual X,Y CSS Flow/Flexbox/Grid
Saltos de página Cálculo manual Control automático + CSS
Tablas Dibujar celdas individualmente HTML <table>
Estilización Fuentes/colores basados en código Hojas de estilo CSS
Document API Nivel bajo (requiere coordenadas) Alto nivel (API simplificada)
Actualizaciones Poco frecuente Regular

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,IronPDFofrece 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 deIronPDF: 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
# 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";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

Identificar el uso de PDFSharp

# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
# 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;
// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

Mapeos de API principales

API PDFSharp API 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>
XFont CSS font-family, font-size
XBrush, XPen Colores 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");
    }
}
// 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");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Class Program
    Shared Sub Main()
        ' PDFSharp does not have built-in HTML to PDF conversion
        ' You need to manually parse HTML and render content
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As 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")
    End Sub
End Class
$vbLabelText   $csharpLabel

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

Class Program
    Shared Sub Main()
        ' IronPDF has native HTML to PDF rendering
        Dim renderer As New ChromePdfRenderer()

        Dim html As String = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)
        Dim page As PdfPage = document.Pages(0)

        ' Get graphics object
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As 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")
    End Sub
End Module
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim pdf = PdfDocument.FromFile("existing.pdf")

        ' Add text stamp/watermark
        Dim textStamper = New TextStamper() With {
            .Text = "Watermark Text",
            .FontSize = 20,
            .Color = IronSoftware.Drawing.Color.Red,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("modified.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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 queIronPDFse 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");
    }
}
// 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");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Create new PDF document
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

        ' Load and draw image
        Dim image As XImage = XImage.FromFile("image.jpg")

        ' Calculate size to fit page
        Dim width As Double = 200
        Dim height As Double = 200

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

        ' Add text
        Dim font As New XFont("Arial", 16)
        gfx.DrawString("Image in PDF", font, XBrushes.Black, New XPoint(50, 270))

        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

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

Class Program
    Shared Sub Main()
        ' Create PDF from HTML with image
        Dim renderer = New ChromePdfRenderer()

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

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")

        ' Alternative: Add image to existing PDF
        Dim existingPdf = New ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>")
        Dim imageStamper = New IronPdf.Editing.ImageStamper(New Uri("image.jpg")) With {
            .VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        }
        existingPdf.ApplyStamp(imageStamper)
    End Sub
End Class
$vbLabelText   $csharpLabel

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.IronPDFtambié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);
// 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);
Imports PdfSharp.Drawing
Imports IronPdf

' PDFSharp: Manual positioning 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
Dim html As String = "
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

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>";
// 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>";
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Times New Roman", 12)

Dim html As String = "
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>"
$vbLabelText   $csharpLabel

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");
// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

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

' PDFSharp: PdfReader.Open()
Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)

' IronPDF: PdfDocument.FromFile()
Dim pdf = PdfDocument.FromFile("existing.pdf")
$vbLabelText   $csharpLabel

Cambio de método de guardado

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

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

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

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
// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF: Automáticopage handling or pdf.Pages[0]
// Pages are created automatically from HTML content
' PDFSharp: document.Pages(0)
Dim page As PdfPage = document.Pages(0)

' IronPDF: Automatic page handling or pdf.Pages(0)
' Pages are created automatically from HTML content
$vbLabelText   $csharpLabel

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>");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>")
$vbLabelText   $csharpLabel

URL a PDF

var pdf = renderer.RenderUrlAsPdf("https://example.com");
var pdf = renderer.RenderUrlAsPdf("https://example.com");
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
$vbLabelText   $csharpLabel

Fusión de PDF

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

Marcas de agua con HTML

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

Resumen comparativo de características

Característica PDFSharp IronPDF
Dibujo por coordenadas ✗(utilice HTML)
HTML a PDF
Compatibilidad con CSS3
Diseño Flexbox/Grid
Estampación de texto ManualXGraphics TextStamper
Estampación de imágenes ManualXImage ImageStamper
Fusionar PDF Manual
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 deIronPDF(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 ...

Leer más

Equipo de soporte de Iron

Estamos disponibles online las 24 horas, 5 días a la semana.
Chat
Email
Llámame