Cómo migrar de MigraDoc a IronPDF en C#
Migrar de MigraDoca IronPDF: Guía completa de migración de C
La migración de MigraDocaIronPDFtransforma su flujo de trabajo PDF .NET de un modelo de documento programático verboso que requiere la construcción manual elemento por elemento a un enfoque moderno basado en HTML/CSSque aprovecha las habilidades de desarrollo web existentes. Esta guía proporciona una ruta de migración completa y paso a paso que elimina la pronunciada curva de aprendizaje del modelo de objetos de documentos patentado de MigraDocpara desarrolladores .NET profesionales.
Por qué migrar de MigraDoca IronPDF
Los retos de MigraDoc
MigraDoc, aunque potente para la generación programática de PDF, tiene limitaciones fundamentales que afectan a los flujos de trabajo de desarrollo modernos:
Sin soporte HTML: MigraDocno soporta HTML directamente. Los documentos deben construirse manualmente, elemento por elemento, mediante los objetos
Document,Section,PárrafoyTable; no se pueden aprovechar los diseños HTML/CSSexistentes.Modelo de documento propietario: MigraDocrequiere aprender un modelo de documento único con conceptos como
AddSection(),AddParagraph(),AddTable(),AddRow(), yAddCell(). Esta pronunciada curva de aprendizaje es especialmente difícil para los desarrolladores con experiencia en desarrollo web.Opciones de estilo limitadas: Aunque MigraDocofrece una sólida gestión de la estructura del documento, sus capacidades de estilo son modestas en comparación con las herramientas web modernas. Propiedades como
Format.Font.Size,Format.Font.BoldyFormat.Alignmentson limitadas en comparación con CSS3 completo.Código ampuloso: Crear incluso diseños sencillos requiere decenas de líneas de código. Una tabla básica con encabezados puede requerir entre 15 y 20 líneas de código MigraDoc.
No compatible con JavaScript: MigraDocno puede renderizar contenido dinámico ni ejecutar JavaScript, lo que limita las opciones de gráficos modernos y elementos interactivos.
- Los gráficos son básicos: La funcionalidad de gráficos de MigraDoces limitada en comparación con las modernas bibliotecas de gráficos JavaScriptcomo Chart.js o D3.
Comparación entre MigraDoce IronPDF
| Característica | MigraDoc | IronPDF |
|---|---|---|
| Definición del contenido | Programática (Documento/Sección/Párrafo) | HTML/CSS |
| Curva de aprendizaje | Steep (DOM propietario) | Fácil (conocimientos web) |
| Estilización | Propiedades limitadas | CSS3 completo |
| JavaScript | Ninguno | Ejecución completa de Chromium |
| Tablas | Definición manual de columnas y filas | HTML <código> |
| Gráficos | Gráficos básicos de MigraDoc | Cualquier biblioteca de gráficos JavaScript |
| Imágenes | Dimensionamiento/posicionamiento manual | HTML estándar <img> |
| Diseños con capacidad de respuesta | No soportado | Flexbox, cuadrícula |
| Licencia | Código abierto (MIT) | Comercial |
Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una base preparada para el futuro que permite a los desarrolladores utilizar habilidades HTML/CSSconocidas en lugar de aprender un modelo de documento propietario.
Evaluación de la complejidad de la migración
Esfuerzo estimado por función
| Característica | Complejidad de la migración | Notas |
|---|---|---|
| Texto sencillo | Muy bajo | Párrafo → Elementos HTML |
| Tablas | Bajo | Tabla/Fila/Celda → HTML <table> |
| Encabezados/pies de página | Bajo | Sección.Encabezados → RenderingOptions |
| Estilos | Medio | Propiedades de formato → Clases CSS |
| Imágenes | Bajo | AddImage → HTML <img> |
| Gráficos | Medio | Requiere biblioteca JavaScript |
Cambio de paradigma
El cambio fundamental en esta migración de MigraDoces de la construcción programática de documentos a la presentación de HTML en primer lugar:
using IronPdf; MigraDoc: Documento → AñadirSección() → AñadirPárrafo() → PdfDocumentRenderer → Guardar() IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs() using IronPdf;
Este cambio de paradigma reduce drásticamente la complejidad del código a la vez que proporciona capacidades ilimitadas de estilización mediante CSS.
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 IronPDF: Obtenga su clave de licencia en ironpdf.com
Cambios en el paquete NuGet
using IronPdf;bash
Remove MigraDocpackages
dotnet remove package PdfSharp-MigraDoc dotnet remove package PdfSharp-MigraDoc-GDI dotnet remove package PDFsharp.MigraDoc.Standard
Install IronPDF
dotnet add package IronPdf using IronPdf;
Configuración de licencias
using IronPdf;csharp // Add at application startup (Program.cs or Startup.cs) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; using IronPdf;
Identificar el uso de MigraDoc
using IronPdf;bash
Find all MigraDocreferences
grep -r "using MigraDoc|PdfDocumentRenderer|AddSection|AddParagraph" --include=".cs" . grep -r "AddTable|AddRow|AddColumn|AddCell|AddImage" --include=".cs" . using IronPdf;
Referencia completa de la API
Clases
| Clase MigraDoc | Equivalente de IronPDF | Notas |
|---|---|---|
Documento | <código>ChromePdfRenderer</código | Utilizar renderizador, no documento |
Sección | HTML <body> o <div> | Contenedor estructural |
Párrafo | HTML <p>, <h1>, etc. | Elementos de texto |
| <código>Texto con formato</código | HTML <span>, <strong>, etc. | Formato en línea |
| <código>Tabla</código | HTML <código> | Con estilo CSS |
Fila | HTML <código> | |
| Fila de tabla | ||
Columna | HTML <col> o CSS | Estilo de las columnas |
Célula | HTML <td>, <th> | Celda de tabla |
| <código>PdfDocumentRenderer</código | <código>ChromePdfRenderer</código | Renderizador principal |
Métodos
| Método MigraDoc | Equivalente de IronPDF | Notas |
|---|---|---|
document.AddSection() | Estructura HTML | Utilice <div> o <section> |
| <código>section.AddParagraph(text)</código> | <código> texto </código> | Párrafo HTML |
| <código>section.AddTable()</código> | <código> | Tabla HTML |
table.AddColumn(width) | Propiedad CSS width | Estilo en <th> o <td> |
table.AddRow() | <código> | |
| Fila HTML | ||
row.Cells[n].AddParagraph() | <td>content</td> | Celda HTML |
| <código>renderer.RenderDocument()</código | <código>RenderHtmlAsPdf(html)</código | Convertir a PDF |
| <código>pdfDocument.Save(path)</código | <código>pdf.SaveAs(ruta)</código | Guardar archivo |
Mapeo de marcadores de posición (encabezados/pies de página)
| Método MigraDoc | Marcador de posición IronPDF | Notas |
|---|---|---|
| <código>AddPageField()</código> | {page} | Número de página actual |
| <código>AddNumPagesField()</código | {total de páginas} | Número total de páginas |
| <código>AddDateField()</código> | {fecha} | Fecha actual |
Ejemplos de migración de código
Ejemplo 1: HTML básico a PDF (La diferencia fundamental)
Antes (MigraDoc):
using IronPdf;csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; using System.Diagnostics;
class Program { static void Main() { // MigraDocdoesn't support HTML directly // Must manually create document structure Document document = new Document(); Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();
paragraph.AddFormattedText("Hello World", TextFormat.Bold);
paragraph.Format.Font.Size = 16;
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save("output.pdf");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf;
class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("
Hello World
"); pdf.SaveAs("output.pdf"); } } using IronPdf;Este ejemplo ilustra la diferencia fundamental entre MigraDoce IronPDF. MigraDocrequiere crear un Documento, añadir una Sección, añadir un Párrafo, usar AddFormattedText() con TextFormat.Bold, estableciendo Format.Font.Size, creando un PdfDocumentRenderer, asignando el documento, llamando a RenderDocument(), y finalmente guardando. Son más de 10 líneas de código con varios objetos.
IronPDF consigue el mismo resultado en 3 líneas: crear un renderizador, renderizar HTML y guardar. La etiqueta HTML <h1> proporciona naturalmente el estilo de encabezado grande y en negrita. Consulte la documentación HTML a PDF para obtener más opciones de conversión.
Ejemplo 2: Creación de tablas
Antes (MigraDoc):
using IronPdf;csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.DocumentObjectModel.Tables; using MigraDoc.Rendering;
class Program { static void Main() { Document document = new Document(); Section section = document.AddSection();
Table table = section.AddTable();
table.Borders.Width = 0.75;
Column column1 = table.AddColumn("3cm");
Column column2 = table.AddColumn("3cm");
Row row1 = table.AddRow();
row1.Cells[0].AddParagraph("Name");
row1.Cells[1].AddParagraph("Age");
Row row2 = table.AddRow();
row2.Cells[0].AddParagraph("John");
row2.Cells[1].AddParagraph("30");
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save("table.pdf");
}} using IronPdf;
Después (IronPDF):
using IronPdf;csharp // NuGet: Install-Package IronPdf using IronPdf;
class Program { static void Main() { var renderer = new ChromePdfRenderer(); string htmlTable = @"
| Name | Age |
|---|---|
| John | 30 |
Main content of the document
"); pdf.AddTextHeader("Document Header"); pdf.AddTextFooter("Page {page}"); pdf.SaveAs("header-footer.pdf"); } } using IronPdf; Los encabezados y pies de página de MigraDocrequieren acceder a `section.Headers.Primary` y `section.Footers.Primary`, crear párrafos dentro de ellos, añadir texto con `AddText()` y utilizar métodos especiales comousing IronPdf; ### Conversión de unidades MigraDoc utiliza varias unidades; Los márgenes deIronPDFestán en milímetros: - "1cm" = 10mm - "1 pulgada = 25,4 mm - "72pt" = 25,4 mm using IronPdf;csharp // MigraDoc: table.AddColumn("3cm"); //IronPDF(CSS):
Hello World
" using IronPdf; ### Asunto 3: PdfDocumentRenderer no encontrado **Problema**: la clase` - [ ] Convertir `Tabla`/`Fila`/`Celda` a estructura HTML `






