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:
-
No hay soporte para HTML: MigraDocno soporta HTML directamente. Debe construir manualmente los documentos elemento por elemento utilizando los objetos
Document,Section,ParagraphyTable; no puede 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: 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.BoldyFormat.Alignmentson limitadas en comparación con CSS3 completo. -
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.
-
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.
- 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
- 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 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
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 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" .
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
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
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
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
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
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
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}"
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;">
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;">
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")
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)
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>"
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()
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}")
Lista de comprobación de la migración
Pre-Migración
- Identificar todas las declaraciones MigraDoc
using - 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
IronPdfel 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
Sectioncon la estructura HTML - Convertir elementos
AddParagraph()a HTML<p> - Convertir
Cella 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
Formata estilos CSS - Reemplace
PdfDocumentRendererconChromePdfRenderer
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

