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
- Entorno .NET : .NET Framework 4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acceso a NuGet : Capacidad para instalar paquetes NuGet
- 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
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"
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" .
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
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
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
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
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
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
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
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)
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>"
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")
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");
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
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>")
URL a PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");
var pdf = renderer.RenderUrlAsPdf("https://example.com");
Dim 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);
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)
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>")
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-wpfsi se utiliza - Eliminar el paquete NuGet
PdfSharp.Chartingsi se utiliza - Instalar
IronPdfel 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
XFontcon propiedades de fuente CSS - Reemplace
XPencon colores/bordes CSS - Reemplazar
XGraphics.DrawString()con elementos de texto HTML - Reemplace
XGraphics.DrawImage()con etiquetas HTML<img> - Reemplace
PdfReader.Open()conPdfDocument.FromFile() - Reemplace
document.Save()conpdf.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

