Como migrar do MigraDoc para o IronPDF em C#
A migração do MigraDoc para o IronPDF transforma seu fluxo de trabalho de PDF em .NET , passando de um modelo de documento programático e complexo que exigia a construção manual elemento por elemento para uma abordagem moderna baseada em HTML/CSS que aproveita as habilidades de desenvolvimento web existentes. Este guia fornece um caminho de migração abrangente, passo a passo, que elimina a curva de aprendizado acentuada do modelo de objeto de documento proprietário do MigraDoc para desenvolvedores .NET profissionais.
Por que migrar do MigraDoc para o IronPDF?
Os desafios do MigraDoc
Embora poderoso para geração programática de PDFs, o MigraDoc apresenta limitações fundamentais que afetam os fluxos de trabalho de desenvolvimento modernos:
-
Sem suporte a HTML: O MigraDoc não oferece suporte direto a HTML. Você deve construir manualmente os documentos elemento por elemento usando objetos
Document,Section,ParagrapheTable— você não pode aproveitar designs HTML/CSS existentes. -
Modelo de Documento Proprietário: O MigraDoc requer o aprendizado de um modelo de documento exclusivo com conceitos como
AddSection(),AddParagraph(),AddTable(),AddRow()eAddCell(). Essa curva de aprendizado acentuada é particularmente desafiadora para desenvolvedores com experiência em desenvolvimento web. -
Opções de estilo limitadas: Embora o MigraDoc ofereça um gerenciamento robusto da estrutura de documentos, seus recursos de estilo são modestos em comparação com as ferramentas da web modernas. Propriedades como
Format.Font.Size,Format.Font.BoldeFormat.Alignmentsão limitadas em comparação com o CSS3 completo. -
Código Verboso: Criar até mesmo layouts simples requer dezenas de linhas de código. Uma tabela básica com cabeçalhos pode exigir de 15 a 20 linhas de código MigraDoc.
-
Sem suporte a JavaScript : o MigraDoc não consegue renderizar conteúdo dinâmico nem executar JavaScript, o que limita as opções para gráficos modernos e elementos interativos.
- Gráficos básicos: A funcionalidade de gráficos do MigraDoc é limitada em comparação com bibliotecas modernas de gráficos em JavaScript, como Chart.js ou D3.
Comparação entre MigraDoc e IronPDF
| Recurso | MigraDoc | IronPDF |
|---|---|---|
| Definição de conteúdo | Programático (Documento/Seção/Parágrafo) | HTML/CSS |
| Curva de Aprendizagem | Íngreme (DOM proprietário) | Fácil (habilidades na web) |
| Estilização | Propriedades limitadas | CSS3 completo |
| JavaScript | Nenhum | Execução completa do Chromium |
| Tabelas | Definição manual de coluna/linha | HTML <table> com CSS |
| Gráficos | Gráficos básicos do MigraDoc | Qualquer biblioteca de gráficos em JavaScript |
| Imagens | Dimensionamento/posicionamento manual | HTML padrão <img> |
| Layouts responsivos | Não suportado | Flexbox, Grade |
| Licença | Código aberto (MIT) | Comercial |
Para equipes que planejam a adoção do .NET 10 e do C# 14 até 2025 e 2026, o IronPDF oferece uma base preparada para o futuro, permitindo que os desenvolvedores usem habilidades familiares de HTML/CSS em vez de aprender um modelo de documento proprietário.
Avaliação da Complexidade da Migração
Esforço estimado por funcionalidade
| Recurso | Complexidade da Migração |
|---|---|
| Texto simples | Muito baixo |
| Tabelas | Baixo |
| Cabeçalhos/Rodapés | Baixo |
| Estilos | Médio |
| Imagens | Baixo |
| Gráficos | Médio |
Mudança de paradigma
A mudança fundamental nesta migração do MigraDoc é a transição da construção programática de documentos para a renderização com HTML como primeira opção:
MigraDoc: Documento → AdicionarSeção() → AdicionarParágrafo() → RenderizadorDeDocumentoPDF → Salvar()
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()
Essa mudança de paradigma reduz drasticamente a complexidade do código, ao mesmo tempo que oferece possibilidades ilimitadas de estilização por meio do CSS.
Antes de começar
Pré-requisitos
- Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
- Licença do IronPDF : Obtenha sua chave de licença em IronPDF
Alterações no pacote NuGet
# Remove MigraDoc packages
dotnet remove package PdfSharp-MigraDoc
dotnet remove package PdfSharp-MigraDoc-GDI
dotnet remove package PDFsharp.MigraDoc.Standard
# Install IronPDF
dotnet add package IronPdf
# Remove MigraDoc packages
dotnet remove package PdfSharp-MigraDoc
dotnet remove package PdfSharp-MigraDoc-GDI
dotnet remove package PDFsharp.MigraDoc.Standard
# Install IronPDF
dotnet add package IronPdf
Configuração de licença
// 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 o uso do MigraDoc
# Find all MigraDoc references
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
# Find all MigraDoc references
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
Referência completa da API
Mapeamentos de Classes
| Classe MigraDoc | Equivalente ao IronPDF |
|---|---|
Document |
ChromePdfRenderer |
Section |
HTML <body> ou <div> |
Paragraph |
HTML <p>, <h1>, etc. |
FormattedText |
HTML <span>, <strong>, etc. |
Table |
HTML <table> |
Row |
HTML <tr> |
Column |
HTML <col> ou CSS |
Cell |
HTML <td>, <th> |
PdfDocumentRenderer |
ChromePdfRenderer |
Mapeamentos de Métodos
| Método MigraDoc | Equivalente ao IronPDF |
|---|---|
document.AddSection() |
Estrutura HTML |
section.AddParagraph(text) |
<p>text</p> |
section.AddTable() |
<table> |
table.AddColumn(width) |
Propriedade CSS width |
table.AddRow() |
<tr> |
row.Cells[n].AddParagraph() |
<td>content</td> |
renderer.RenderDocument() |
RenderHtmlAsPdf(html) |
pdfDocument.Save(path) |
pdf.SaveAs(path) |
Mapeamentos de espaços reservados (cabeçalhos/rodapés)
| Método MigraDoc | Espaço reservado para IronPDF |
|---|---|
AddPageField() |
{page} |
AddNumPagesField() |
{total-pages} |
AddDateField() |
{date} |
Exemplos de migração de código
Exemplo 1: HTML básico para PDF (A diferença fundamental)
Antes (MigraDoc):
// NuGet: Install-Package PdfSharp-MigraDoc-GDI
using MigraDoc.DocumentObjectModel;
using MigraDoc.Rendering;
using System.Diagnostics;
class Program
{
static void Main()
{
// MigraDoc doesn'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()
{
// MigraDoc doesn'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
Apó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 exemplo ilustra a diferença fundamental entre MigraDoc e IronPDF. MigraDoc requer a criação de um Document, a adição de um Section, a adição de um Paragraph, o uso de AddFormattedText() com TextFormat.Bold, a configuração de Format.Font.Size, a criação de um PdfDocumentRenderer, a atribuição do documento, a chamada de RenderDocument() e, finalmente, o salvamento. São mais de 10 linhas de código com múltiplos objetos.
O IronPDF consegue o mesmo resultado em 3 linhas: cria um renderizador, renderiza o HTML e salva. A tag HTML <h1> fornece naturalmente o estilo de título em negrito e com letras grandes. Consulte a documentação de conversão de HTML para PDF para obter opções de renderização adicionais.
Exemplo 2: Criação de tabelas
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
Apó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
A criação da tabela MigraDoc requer a compreensão da hierarquia Table, Column, Row e Cell. Você deve adicionar colunas explicitamente com AddColumn(), criar linhas com AddRow(), acessar células por índice com Cells[n] e adicionar conteúdo com AddParagraph(). A fronteira é definida por meio de table.Borders.Width.
O IronPDF utiliza a sintaxe padrão de tabelas HTML, que qualquer desenvolvedor web conhece. O atributo border='1' fornece a borda, os elementos <th> criam células de cabeçalho e os elementos <td> criam células de dados. É possível adicionar CSS para estilização avançada, como listras de zebra, efeitos de foco ou layouts responsivos. Saiba mais sobre como criar tabelas em PDFs .
Exemplo 3: Cabeçalhos e rodapés com 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
Apó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
Os cabeçalhos e rodapés do MigraDoc exigem acesso a section.Headers.Primary e section.Footers.Primary, criação de parágrafos dentro deles, adição de texto com AddText() e uso de métodos especiais como AddPageField() para conteúdo dinâmico. O alinhamento requer a configuração de Format.Alignment.
IronPDF fornece métodos simples AddTextHeader() e AddTextFooter() no objeto PdfDocument. O marcador {page} insere automaticamente o número da página atual. Para cabeçalhos mais complexos, você pode usar HtmlHeaderFooter com suporte completo a HTML/CSS. Consulte a documentação de cabeçalhos e rodapés para opções avançadas.
Notas críticas sobre migração
Sintaxe do marcador de posição do número da página
A mudança mais importante para cabeçalhos e rodapés é a sintaxe dos espaços reservados:
// MigraDoc field methods:
footerPara.AddPageField(); // Current page
footerPara.AddNumPagesField(); // Total pages
// IronPDF placeholders:
"Page {page} of {total-pages}"
// MigraDoc field methods:
footerPara.AddPageField(); // Current page
footerPara.AddNumPagesField(); // Total pages
// IronPDF placeholders:
"Page {page} of {total-pages}"
' MigraDoc field methods:
footerPara.AddPageField() ' Current page
footerPara.AddNumPagesField() ' Total pages
' IronPDF placeholders:
"Page {page} of {total-pages}"
Formatar propriedades para CSS
As propriedades Format do MigraDoc correspondem ao 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;">
Conversão de unidades
MigraDoc utiliza diversas unidades; As margens do IronPDF são medidas em milímetros:
- "1 cm" = 10 mm
- "1 pol" = 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;">
Alteração do padrão de renderização
Todo o padrão de renderização muda:
// MigraDoc pattern (DELETE):
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save("output.pdf");
// IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// MigraDoc pattern (DELETE):
PdfDocumentRenderer pdfRenderer = new PdfDocumentRenderer();
pdfRenderer.Document = document;
pdfRenderer.RenderDocument();
pdfRenderer.PdfDocument.Save("output.pdf");
// IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
' MigraDoc pattern (DELETE):
Dim pdfRenderer As New PdfDocumentRenderer()
pdfRenderer.Document = document
pdfRenderer.RenderDocument()
pdfRenderer.PdfDocument.Save("output.pdf")
' IronPDF pattern:
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Solução de problemas
Problema 1: Documento/Seção não encontrado
Problema: As classes Document e Section não existem no IronPDF.
Solução: Substitua pela estrutura 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)
Problema 2: Adicionar parágrafo não encontrado
Problema: o método AddParagraph() não existe.
Solução: Utilize elementos HTML:
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
Problema 3: PdfDocumentRenderer não encontrado
Problema: a classe PdfDocumentRenderer não existe.
Solução: Use 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()
Problema 4: AddPageField não funciona
Problema: o método AddPageField() não existe.
Solução: Utilize a sintaxe de marcador de posição do IronPDF :
// 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 verificação para migração
Pré-migração
- Identificar todas as declarações MigraDoc
using - Estruturas de tabelas de documentos (colunas, linhas, formatação)
- Observe o conteúdo do cabeçalho/rodapé e o uso dos campos da página.
- Listar estilos personalizados definidos com
document.Styles - Obtenha a chave de licença do IronPDF
Alterações no pacote
- Remover o pacote
PdfSharp-MigraDoc - Remover o pacote
PdfSharp-MigraDoc-GDI - Instale o pacote NuGet
IronPdf:dotnet add package IronPdf - Atualizar importações de namespace
Alterações no código
- Adicionar configuração de chave de licença na inicialização
- Substitua
Sectionpela estrutura HTML - Converter
AddParagraph()em elementos HTML<p> - Converter
Cellpara estrutura HTML<table> - Substitua
AddPageField()pelo marcador de posição{page} - Substitua
AddNumPagesField()por{total-pages}(espaço reservado). - Converter propriedades
Formatem estilos CSS - Substitua
PdfDocumentRendererporChromePdfRenderer
Testando
- Comparar a saída visual entre PDFs antigos e novos
- Verifique se as quebras de página funcionam corretamente.
- Verificar a renderização do cabeçalho/rodapé e a numeração das páginas
- Validar a formatação e as bordas da tabela
- Teste com documentos complexos de várias páginas
Pós-migração
- Remover documentação relacionada ao MigraDoc
- Atualizar os materiais de treinamento da equipe
- Documentar novas localizações de modelos HTML

