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

Cómo migrar de MigraDoc a IronPDF en 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. No hay soporte para HTML: MigraDocno soporta HTML directamente. Debe construir manualmente los documentos elemento por elemento utilizando los objetos Document, Section, Paragraph y Table; no puede 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: si bien MigraDocofrece una sólida gestión de la estructura de los documentos, 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 detallado: crear incluso diseños simples requiere docenas 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. Sin compatibilidad con JavaScript: MigraDocno puede representar contenido dinámico ni ejecutar JavaScript, lo que limita las opciones para 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 bibliotecas de gráficos JavaScriptmodernas como 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 <table> con CSS
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
Texto sencillo Muy bajo
Tablas Bajo
Encabezados/pies de página Bajo
Estilos Medio
Imágenes Bajo
Gráficos Medio

Cambio de paradigma

El cambio fundamental en esta migración de MigraDoces de la construcción programática de documentos a la representación HTML primero:

MigraDoc: Documento → AñadirSección() → AñadirPárrafo() → PdfDocumentRenderer → Guardar()
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → Guardar como()

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 deIronPDF: Obtenga su clave de licencia en IronPDF

Cambios en el paquete NuGet

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

# Find all MigraDocreferences
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
# Find all MigraDocreferences
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
SHELL

Referencia completa de la API

Clases

Clase MigraDoc Equivalente de IronPDF
Document ChromePdfRenderer
Section HTML <body> o <div>
Paragraph HTML <p>, <h1>, etc.
FormattedText HTML <span>, <strong>, etc.
Table HTML <table>
Row HTML <tr>
Column HTML <col> o CSS
Cell HTML <td>, <th>
PdfDocumentRenderer ChromePdfRenderer

Métodos

Método MigraDoc Equivalente de IronPDF
document.AddSection() Estructura HTML
section.AddParagraph(text) <p>text</p>
section.AddTable() <table>
table.AddColumn(width) Propiedad CSS width
table.AddRow() <tr>
row.Cells[n].AddParagraph() <td>content</td>
renderer.RenderDocument() RenderHtmlAsPdf(html)
pdfDocument.Save(path) pdf.SaveAs(path)

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

Método MigraDoc Marcador de posición IronPDF
AddPageField() {page}
AddNumPagesField() {total-pages}
AddDateField() {date}

Ejemplos de migración de código

Ejemplo 1: HTML básico a PDF (La diferencia fundamental)

Antes (MigraDoc):

// 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");
    }
}
// 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");
    }
}
Imports MigraDoc.DocumentObjectModel
Imports MigraDoc.Rendering
Imports System.Diagnostics

Class Program
    Shared Sub Main()
        ' MigraDoc doesn't support HTML directly
        ' Must manually create document structure
        Dim document As New Document()
        Dim section As Section = document.AddSection()

        Dim paragraph As Paragraph = section.AddParagraph()
        paragraph.AddFormattedText("Hello World", TextFormat.Bold)
        paragraph.Format.Font.Size = 16

        Dim pdfRenderer As New PdfDocumentRenderer()
        pdfRenderer.Document = document
        pdfRenderer.RenderDocument()
        pdfRenderer.PdfDocument.Save("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Este ejemplo ilustra la diferencia fundamental entre MigraDoce IronPDF. MigraDocrequiere crear un Document, agregar un Section, agregar un Paragraph, usar AddFormattedText() con TextFormat.Bold, configurar Format.Font.Size, crear un PdfDocumentRenderer, asignar el documento, llamar a RenderDocument() y, finalmente, guardar. 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):

// 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");
    }
}
// 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");
    }
}
Imports MigraDoc.DocumentObjectModel
Imports MigraDoc.DocumentObjectModel.Tables
Imports MigraDoc.Rendering

Class Program
    Shared Sub Main()
        Dim document As New Document()
        Dim section As Section = document.AddSection()

        Dim table As Table = section.AddTable()
        table.Borders.Width = 0.75

        Dim column1 As Column = table.AddColumn("3cm")
        Dim column2 As Column = table.AddColumn("3cm")

        Dim row1 As Row = table.AddRow()
        row1.Cells(0).AddParagraph("Name")
        row1.Cells(1).AddParagraph("Age")

        Dim row2 As Row = table.AddRow()
        row2.Cells(0).AddParagraph("John")
        row2.Cells(1).AddParagraph("30")

        Dim pdfRenderer As New PdfDocumentRenderer()
        pdfRenderer.Document = document
        pdfRenderer.RenderDocument()
        pdfRenderer.PdfDocument.Save("table.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlTable = @"
            <table border='1'>
                <tr><th>Name</th><th>Age</th></tr>
                <tr><td>John</td><td>30</td></tr>
            </table>";

        var pdf = renderer.RenderHtmlAsPdf(htmlTable);
        pdf.SaveAs("table.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlTable = @"
            <table border='1'>
                <tr><th>Name</th><th>Age</th></tr>
                <tr><td>John</td><td>30</td></tr>
            </table>";

        var pdf = renderer.RenderHtmlAsPdf(htmlTable);
        pdf.SaveAs("table.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim htmlTable As String = "
            <table border='1'>
                <tr><th>Name</th><th>Age</th></tr>
                <tr><td>John</td><td>30</td></tr>
            </table>"

        Dim pdf = renderer.RenderHtmlAsPdf(htmlTable)
        pdf.SaveAs("table.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

La creación de la tabla MigraDocrequiere comprender la jerarquía Table, Column, Row y Cell. Debe agregar columnas explícitamente con AddColumn(), crear filas con AddRow(), acceder a celdas por índice con Cells[n] y agregar 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 <th> crean celdas de encabezado y los elementos <td> 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.

Ejemplo 3: Encabezados y pies de página con números de página

Antes (MigraDoc):

// 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");
    }
}
// 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");
    }
}
Imports MigraDoc.DocumentObjectModel
Imports MigraDoc.Rendering

Class Program
    Shared Sub Main()
        Dim document As New Document()
        Dim section As Section = document.AddSection()

        ' Add header
        Dim headerPara As Paragraph = section.Headers.Primary.AddParagraph()
        headerPara.AddText("Document Header")
        headerPara.Format.Font.Size = 12
        headerPara.Format.Alignment = ParagraphAlignment.Center

        ' Add footer
        Dim footerPara As Paragraph = section.Footers.Primary.AddParagraph()
        footerPara.AddText("Page ")
        footerPara.AddPageField()
        footerPara.Format.Alignment = ParagraphAlignment.Center

        ' Add content
        section.AddParagraph("Main content of the document")

        Dim pdfRenderer As New PdfDocumentRenderer()
        pdfRenderer.Document = document
        pdfRenderer.RenderDocument()
        pdfRenderer.PdfDocument.Save("header-footer.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");

        pdf.AddTextHeader("Document Header");
        pdf.AddTextFooter("Page {page}");

        pdf.SaveAs("header-footer.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");

        pdf.AddTextHeader("Document Header");
        pdf.AddTextFooter("Page {page}");

        pdf.SaveAs("header-footer.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>")

        pdf.AddTextHeader("Document Header")
        pdf.AddTextFooter("Page {page}")

        pdf.SaveAs("header-footer.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Los encabezados y pies de página de MigraDocrequieren acceder a section.Headers.Primary y section.Footers.Primary, crear párrafos dentro de ellos, agregar texto con AddText() y usar métodos especiales como AddPageField() para contenido dinámico. La alineación requiere la configuración Format.Alignment.

IronPDF proporciona métodos simples AddTextHeader() y AddTextFooter() en el objeto PdfDocument. El marcador de posición {page} inserta automáticamente el número de página actual. Para encabezados más complejos, puede utilizar HtmlHeaderFooter con soporte completo de HTML/CSS. Consulte la documentación sobre encabezados y pies de página 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:

// MigraDocfield methods:
footerPara.AddPageField();       // Current page
footerPara.AddNumPagesField();   // Total pages

//IronPDFplaceholders:
"Page {page} of {total-pages}"
// MigraDocfield methods:
footerPara.AddPageField();       // Current page
footerPara.AddNumPagesField();   // Total pages

//IronPDFplaceholders:
"Page {page} of {total-pages}"
' MigraDocfield methods:
footerPara.AddPageField()       ' Current page
footerPara.AddNumPagesField()   ' Total pages

' IronPDFplaceholders:
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

Propiedades de formato a CSS

Las propiedades Format de MigraDocse asignan a CSS:

// MigraDoc:
paragraph.Format.Font.Size = 16;
paragraph.Format.Font.Bold = true;
paragraph.Format.Alignment = ParagraphAlignment.Center;

//IronPDF(CSS):
<p style="font-size: 16pt; font-weight: bold; text-align: center;">
// MigraDoc:
paragraph.Format.Font.Size = 16;
paragraph.Format.Font.Bold = true;
paragraph.Format.Alignment = ParagraphAlignment.Center;

//IronPDF(CSS):
<p style="font-size: 16pt; font-weight: bold; text-align: center;">
' MigraDoc:
paragraph.Format.Font.Size = 16
paragraph.Format.Font.Bold = True
paragraph.Format.Alignment = ParagraphAlignment.Center

' IronPDF(CSS):
'<p style="font-size: 16pt; font-weight: bold; text-align: center;">
$vbLabelText   $csharpLabel

Conversión de unidades

MigraDoc utiliza varias unidades; Los márgenes deIronPDFestán en milímetros:

  • "1 cm" = 10 mm
  • "1 pulgada = 25,4 mm
  • "72pt" = 25,4 mm
// MigraDoc:
table.AddColumn("3cm");

//IronPDF(CSS):
<th style="width: 3cm;">
// MigraDoc:
table.AddColumn("3cm");

//IronPDF(CSS):
<th style="width: 3cm;">
' MigraDoc:
table.AddColumn("3cm")

' IronPDF(CSS):
<th style="width: 3cm;">
$vbLabelText   $csharpLabel

Cambio de patrón de renderizado

Todo el patrón de renderizado cambia:

// 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");
// 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");
' MigraDocpattern (DELETE):
Dim pdfRenderer As New PdfDocumentRenderer()
pdfRenderer.Document = document
pdfRenderer.RenderDocument()
pdfRenderer.PdfDocument.Save("output.pdf")

' IronPDFpattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

Solución de problemas

Asunto 1: Documento/sección no encontrados

Problema: las clases Document y Section no existen en IronPDF.

Solución: Reemplazar con la estructura HTML:

// MigraDoc
Document document = new Document();
Section section = document.AddSection();

// IronPDF
string html = "<html><body>...</body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
// MigraDoc
Document document = new Document();
Section section = document.AddSection();

// IronPDF
string html = "<html><body>...</body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
Imports MigraDoc.DocumentObjectModel
Imports IronPdf

Dim document As New Document()
Dim section As Section = document.AddSection()

Dim html As String = "<html><body>...</body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

Número 2: AddParagraph Not Found

Problema: el método AddParagraph() no existe.

Solución: utilizar elementos HTML:

// MigraDoc
section.AddParagraph("Hello World");

// IronPDF
"<p>Hello World</p>"
// MigraDoc
section.AddParagraph("Hello World");

// IronPDF
"<p>Hello World</p>"
$vbLabelText   $csharpLabel

Asunto 3: PdfDocumentRenderer no encontrado

Problema: PdfDocumentRenderer la clase no existe.

Solución: Utilice ChromePdfRenderer:

// MigraDoc
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();

// IronPDF
var renderer = new ChromePdfRenderer();
// MigraDoc
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();

// IronPDF
var renderer = new ChromePdfRenderer();
' MigraDoc
Dim pdfRenderer As New PdfDocumentRenderer()

' IronPDF
Dim renderer As New ChromePdfRenderer()
$vbLabelText   $csharpLabel

Asunto 4: AddPageField no funciona

Problema: el método AddPageField() no existe.

Solución: utilice la sintaxis de marcador de posiciónIronPDF:

// MigraDoc
footerPara.AddPageField();

// IronPDF
pdf.AddTextFooter("Page {page}");
// MigraDoc
footerPara.AddPageField();

// IronPDF
pdf.AddTextFooter("Page {page}");
' MigraDoc
footerPara.AddPageField()

' IronPDF
pdf.AddTextFooter("Page {page}")
$vbLabelText   $csharpLabel

Lista de comprobación de la migración

Pre-Migración

  • Identificar todas las declaraciones MigraDocusing
  • 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 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
  • Instalar IronPdf el paquete NuGet : dotnet add package IronPdf
  • Actualizar las importaciones de espacios de nombres

Cambios de código

  • Agregar configuración de clave de licencia al inicio
  • Reemplazar Section con la estructura HTML
  • Convertir elementos AddParagraph() a HTML <p>
  • Convertir Cell a la estructura HTML <table>
  • Reemplace AddPageField() con el marcador de posición {page}
  • Reemplace AddNumPagesField() con el marcador de posición {total-pages}
  • Convertir propiedades Format a estilos CSS
  • Reemplace PdfDocumentRenderer con ChromePdfRenderer

Pruebas

  • Comparar la salida visual entre archivos PDF antiguos y nuevos
  • Verificar que los saltos de página funcionen correctamente
  • Verificar la representación del encabezado/pie de página y los números de página
  • Validar el formato y los bordes de la tabla
  • Prueba con documentos complejos de varias páginas

Posmigración

  • Eliminar la documentación relacionada con MigraDoc
  • Actualizar los materiales de capacitación del equipo
  • Documentar nuevas ubicaciones de plantillas HTML

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