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

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:

  1. Sin soporte HTML: MigraDocno soporta HTML directamente. Los documentos deben construirse manualmente, elemento por elemento, mediante los objetos Document, Section, Párrafoy Table; no se pueden aprovechar los diseños HTML/CSSexistentes.

  2. Modelo de documento propietario: MigraDocrequiere aprender un modelo de documento único con conceptos como AddSection(), AddParagraph(), AddTable(), AddRow(), y AddCell(). Esta pronunciada curva de aprendizaje es especialmente difícil para los desarrolladores con experiencia en desarrollo web.

  3. 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.Bold y Format.Alignment son limitadas en comparación con CSS3 completo.

  4. 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.

  5. 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.

  6. 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ísticaMigraDocIronPDF
Definición del contenidoProgramática (Documento/Sección/Párrafo)HTML/CSS
Curva de aprendizajeSteep (DOM propietario)Fácil (conocimientos web)
EstilizaciónPropiedades limitadasCSS3 completo
JavaScriptNingunoEjecución completa de Chromium
TablasDefinición manual de columnas y filasHTML <código></código>con CSS
GráficosGráficos básicos de MigraDocCualquier biblioteca de gráficos JavaScript
ImágenesDimensionamiento/posicionamiento manualHTML estándar <img>
Diseños con capacidad de respuestaNo soportadoFlexbox, cuadrícula
LicenciaCó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ísticaComplejidad de la migraciónNotas
Texto sencilloMuy bajoPárrafo → Elementos HTML
TablasBajoTabla/Fila/Celda → HTML <table>
Encabezados/pies de páginaBajoSección.Encabezados → RenderingOptions
EstilosMedioPropiedades de formato → Clases CSS
ImágenesBajoAddImage → HTML <img>
GráficosMedioRequiere 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

  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 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

</código>
Clase MigraDocEquivalente de IronPDFNotas
Documento<código>ChromePdfRenderer</códigoUtilizar renderizador, no documento
SecciónHTML <body> o <div>Contenedor estructural
PárrafoHTML <p>, <h1>, etc.Elementos de texto
<código>Texto con formato</códigoHTML <span>, <strong>, etc.Formato en línea
<código>Tabla</códigoHTML <código></código>Con estilo CSS
FilaHTML <código>
Fila de tabla
ColumnaHTML <col> o CSSEstilo de las columnas
CélulaHTML <td>, <th>Celda de tabla
<código>PdfDocumentRenderer</código<código>ChromePdfRenderer</códigoRenderizador principal

Métodos

</código>
Método MigraDocEquivalente de IronPDFNotas
document.AddSection()Estructura HTMLUtilice <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></código>Tabla HTML
table.AddColumn(width)Propiedad CSS widthEstilo 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ódigoConvertir a PDF
<código>pdfDocument.Save(path)</código<código>pdf.SaveAs(ruta)</códigoGuardar archivo

Mapeo de marcadores de posición (encabezados/pies de página)

Método MigraDocMarcador de posición IronPDFNotas
<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 = @"

NameAge
John30
"; var pdf = renderer.RenderHtmlAsPdf(htmlTable); pdf.SaveAs("table.pdf"); } } using IronPdf; La creación de tablas MigraDocrequiere comprender la jerarquía `Table`, `Column`, `Fila`y `Cell`. Debe añadir columnas explícitamente con `AddColumn()`, crear filas con `AddRow()`, acceder a celdas por índice con `Cells[n]` y añadir contenido con `AddParagraph()`. El borde se establece mediante `table.Borders.Width`. IronPDF utiliza la sintaxis de tablas HTML estándar que conoce cualquier desarrollador web. El atributo `border='1'` proporciona el borde, los elementos `` crean celdas de encabezado y los elementos `` crean celdas de datos. Se puede añadir CSS para estilos avanzados como rayas de cebra, efectos hover o diseños adaptables. Más información sobre [creación de tablas en PDF](https://ironpdf.com/tutorials/). ### Ejemplo 3: Encabezados y pies de página con números de página **Antes (MigraDoc):** using IronPdf;csharp // NuGet: Install-Package PdfSharp-MigraDoc-GDI using MigraDoc.DocumentObjectModel; using MigraDoc.Rendering; class Program { static void Main() { Document document = new Document(); Section section = document.AddSection(); // Add header Paragraph headerPara = section.Headers.Primary.AddParagraph(); headerPara.AddText("Document Header"); headerPara.Format.Font.Size = 12; headerPara.Format.Alignment = ParagraphAlignment.Center; // Add footer Paragraph footerPara = section.Footers.Primary.AddParagraph(); footerPara.AddText("Page "); footerPara.AddPageField(); footerPara.Format.Alignment = ParagraphAlignment.Center; // Add content section.AddParagraph("Main content of the document"); PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save("header-footer.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("

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 comoAddPageField()para contenido dinámico. La alineación requiere la configuración de `Format.Alignment`. IronPDF proporciona los sencillos métodos `AddTextHeader()` y `AddTextFooter()` en el objeto `PdfDocument`. El marcador de posición `{page}`inserta automáticamente el número de la página actual. Para cabeceras más complejas, puede utilizar `HtmlHeaderFooter` con soporte completo HTML/CSS. Consulte la [documentación sobre encabezados y pies de página](https://ironpdf.com/how-to/headers-and-footers/) para conocer las opciones avanzadas. --- ## Notas de migración críticas ### Sintaxis del marcador de posición del número de página El cambio más importante en los encabezados y pies de página es la sintaxis de los marcadores de posición: using IronPdf;csharp // MigraDocfield methods: footerPara.AddPageField(); // Current page footerPara.AddNumPagesField(); // Total pages //IronPDFplaceholders: "Page {page} of {total-pages}" using IronPdf; ### Propiedades de formato a CSS Las propiedades `Format` de MigraDocse corresponden con CSS: using IronPdf;csharp // MigraDoc: paragraph.Format.Font.Size = 16; paragraph.Format.Font.Bold = true; paragraph.Format.Alignment = ParagraphAlignment.Center; //IronPDF(CSS):

using 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):

using IronPdf; ### Cambio de patrón de renderizado Todo el patrón de renderizado cambia: using IronPdf;csharp // MigraDocpattern (DELETE): PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer(); pdfRenderer.Document = document; pdfRenderer.RenderDocument(); pdfRenderer.PdfDocument.Save("output.pdf"); //IronPDFpattern: var pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs("output.pdf"); using IronPdf; --- ## Solución de problemas ### Asunto 1: Documento/sección no encontrados **Problema**: las clases `Documento`y `Sección`no existen en IronPDF. **Solución**: Sustituir por estructura HTML: using IronPdf;csharp // MigraDoc Document document = new Document(); Section section = document.AddSection(); // IronPDF string html = "..."; var pdf = renderer.RenderHtmlAsPdf(html); using IronPdf; ### Número 2: AddParagraph Not Found **Problema**: el método `AddParagraph()` no existe. **Solución**: Utilizar elementos HTML: using IronPdf;csharp // MigraDoc section.AddParagraph("Hello World"); // IronPDF "

Hello World

" using IronPdf; ### Asunto 3: PdfDocumentRenderer no encontrado **Problema**: la clasePdfDocumentRendererAddPageField()no existe. **Solución**: Utilizar la sintaxis de marcadores de posición de IronPDF: using IronPdf;csharp // MigraDoc footerPara.AddPageField(); // IronPDF pdf.AddTextFooter("Page {page}"); using IronPdf; --- ## Lista de comprobación de la migración ### Pre-Migración - [ ] Identifique todas las declaraciones `using` de MigraDoc - [ ] Estructuras de tablas de documentos (columnas, filas, estilo) - [ ] Tenga en cuenta el contenido del encabezado/pie de página y el uso de los campos de la página - [ ] Lista de estilos personalizados definidos con `document.Styles` - [ ] Obtener la clave de licencia de IronPDF ### Cambios en el paquete - [ ] Eliminar el paquete `PdfSharp-MigraDoc` - [ ] Eliminar el paquete `PdfSharp-MigraDoc-GDI` - [Instale el paquete NuGet `IronPdf`: `dotnet add package IronPdf` - [ ] Actualizar las importaciones de espacios de nombres ### Cambios de código - [ ] Añadir configuración de clave de licencia al inicio - [ ] Sustituir `Documento`/`Sección` por estructura HTML - [ ] Convertir `AddParagraph()` en elementos HTML `

` - [ ] Convertir `Tabla`/`Fila`/`Celda` a estructura HTML `

` - [ ] SustituirAddPageField()por `{page}`marcador de posición - [ ] SustituirAddNumPagesField()PdfDocumentRenderer` 4. **Placeholders**:AddPageField()→ `{page}` 5. **Renderizador**:PdfDocumentRenderer

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