Comment migrer de MigraDoc à IronPDF en C#
La migration de MigraDocversIronPDFtransforme votre flux de travail PDF .NET d'un modèle de document programmatique verbeux nécessitant une construction manuelle élément par élément à une approche moderne basée sur HTML/CSSqui exploite les compétences existantes en matière de développement web. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine la courbe d'apprentissage abrupte du modèle d'objet de document propriétaire de MigraDocpour les développeurs .NET professionnels.
Pourquoi migrer de MigraDocà IronPDF
Les défis de MigraDoc
MigraDoc, bien que puissant pour la génération programmatique de PDF, présente des limitations fondamentales qui affectent les flux de développement modernes :
-
Absence de prise en charge HTML : MigraDocne prend pas directement en charge le HTML. Vous devez construire manuellement les documents élément par élément en utilisant les objets
Document,Section,ParagraphetTable— vous ne pouvez pas tirer parti des conceptions HTML/CSSexistantes. -
Modèle de document propriétaire : MigraDocnécessite l'apprentissage d'un modèle de document unique avec des concepts tels que
AddSection(),AddParagraph(),AddTable(),AddRow()etAddCell(). Cette courbe d'apprentissage abrupte est particulièrement difficile à suivre pour les développeurs ayant une formation en développement web. -
Options de style limitées : Bien que MigraDocoffre une gestion robuste de la structure des documents, ses capacités de style sont modestes comparées aux outils Web modernes. Les propriétés comme
Format.Font.Size,Format.Font.BoldetFormat.Alignmentsont limitées par rapport à CSS3 complet. -
Code verbeux : La création de mises en page, même simples, nécessite des dizaines de lignes de code. Un tableau de base avec des en-têtes peut nécessiter 15 à 20 lignes de code MigraDoc.
-
Absence de prise en charge de JavaScript : MigraDocne peut pas afficher de contenu dynamique ni exécuter de JavaScript, ce qui limite les options pour les graphiques modernes et les éléments interactifs.
- Graphiques basiques : les fonctionnalités graphiques de MigraDocsont limitées par rapport aux bibliothèques graphiques JavaScriptmodernes comme Chart.js ou D3.
Comparaison MigraDocvs IronPDF
| Fonction | MigraDoc | IronPDF |
|---|---|---|
| Définition du contenu | Programmatique (document/section/paragraphe) | HTML/CSS |
| Courbe d'apprentissage | Steep (DOM propriétaire) | Facile (compétences web) |
| Stylisme | Propriétés limitées | CSS3 complet |
| JavaScript | Aucun | Exécution complète de Chromium |
| Tableaux | Définition manuelle des colonnes et des lignes | HTML <table> avec CSS |
| Graphiques | Graphiques MigraDocde base | Toute bibliothèque graphique JavaScript |
| Images | Dimensionnement/positionnement manuel | HTML standard <img> |
| Mises en page réactives | Non pris en charge | Flexbox, Grille |
| Licence | Open Source (MIT) | Commercial |
Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base pérenne qui permet aux développeurs d'utiliser des compétences HTML/CSSfamilières plutôt que d'apprendre un modèle de document propriétaire.
Évaluation de la complexité de la migration
Estimation de l'effort par fonctionnalité
| Fonction | Complexité de la migration |
|---|---|
| Texte simple | Très faible |
| Tableaux | Faible |
| En-têtes/Pieds de page | Faible |
| Styles | Moyen |
| Images | Faible |
| Graphiques | Moyen |
Changement de paradigme
Le Shift fondamental de cette migration MigraDocréside dans le passage d' une construction de documents programmatique à un rendu HTML prioritaire :
MigraDoc : Document → AddSection() → AddParagraph() → PdfDocumentRenderer → Save()
IronPDF : ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()
Ce changement de paradigme réduit considérablement la complexité du code tout en offrant des capacités de stylisme illimitées grâce à CSS.
Avant de commencer
Prérequis
- Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
- Accès à NuGet : possibilité d'installer des packages NuGet
- Licence IronPDF : Obtenez votre clé de licence sur IronPDF
Modifications du paquet 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
Configuration de la licence
// 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"
Identifier l'utilisation 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" .
Référence API complète
Mappages de classes
| Classe MigraDoc | Équivalent d'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 |
Mise en correspondance des méthodes
| Méthode MigraDoc | Équivalent d'IronPDF |
|---|---|
document.AddSection() |
Structure HTML |
section.AddParagraph(text) |
<p>text</p> |
section.AddTable() |
<table> |
table.AddColumn(width) |
Propriété CSS width |
table.AddRow() |
<tr> |
row.Cells[n].AddParagraph() |
<td>content</td> |
renderer.RenderDocument() |
RenderHtmlAsPdf(html) |
pdfDocument.Save(path) |
pdf.SaveAs(path) |
Mappages de caractères de remplacement (en-têtes/pieds de page)
| Méthode MigraDoc | IronPDFPlaceholder |
|---|---|
AddPageField() |
{page} |
AddNumPagesField() |
{total-pages} |
AddDateField() |
{date} |
Exemples de migration de code
Exemple 1 : HTML de base à PDF (la différence fondamentale)
Avant (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
Aprè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
Cet exemple illustre la différence fondamentale entre MigraDocet IronPDF. MigraDocnécessite la création d'un Document, l'ajout d'un Section, l'ajout d'un Paragraph, l'utilisation de AddFormattedText() avec TextFormat.Bold, la définition de Format.Font.Size, la création d'un PdfDocumentRenderer, l'attribution du document, l'appel de RenderDocument() et enfin l'enregistrement. Il s'agit de plus de 10 lignes de code avec plusieurs objets.
IronPDF permet d'obtenir le même résultat en 3 lignes : création d'un moteur de rendu, rendu HTML et sauvegarde. La balise HTML <h1> fournit naturellement le style de titre gras et grand. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.
Exemple 2 : Création de tableaux
Avant (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
Aprè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 création de la table MigraDocnécessite de comprendre la hiérarchie Table, Column, Row et Cell. Vous devez explicitement ajouter des colonnes avec AddColumn(), créer des lignes avec AddRow(), accéder aux cellules par index avec Cells[n] et ajouter du contenu avec AddParagraph(). La bordure est définie via table.Borders.Width.
IronPDF utilise la syntaxe de tableau HTML standard que tout développeur web connaît. L'attribut border='1' fournit la bordure, les éléments <th> créent des cellules d'en-tête et les éléments <td> créent des cellules de données. Des feuilles de style CSS peuvent être ajoutées pour une mise en forme avancée, comme les bandes zébrées, les effets de survol ou les mises en page réactives. En savoir plus sur la création de tableaux dans les PDF.
Exemple 3 : En-têtes et pieds de page avec numéros de page
Avant (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
Aprè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
Les en-têtes et pieds de page MigraDocnécessitent d'accéder à section.Headers.Primary et section.Footers.Primary, de créer des paragraphes à l'intérieur, d'ajouter du texte avec AddText() et d'utiliser des méthodes spéciales comme AddPageField() pour le contenu dynamique. L'alignement nécessite la configuration de Format.Alignment.
IronPDF fournit des méthodes simples AddTextHeader() et AddTextFooter() sur l'objet PdfDocument. Le marqueur {page} insère automatiquement le numéro de page actuel. Pour les en-têtes plus complexes, vous pouvez utiliser HtmlHeaderFooter avec une prise en charge complète HTML/CSS. Voir la documentation sur les en-têtes et pieds de page pour les options avancées.
Notes de migration essentielles
Syntaxe de l'espace réservé au numéro de page
Le changement le plus important pour les en-têtes et les pieds de page est la syntaxe des espaces réservés :
// 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}"
Formater les propriétés en CSS
Les propriétés Format de MigraDoccorrespondent à du 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;">
Conversion d'unités
MigraDoc utilise différentes unités ; Les marges d'IronPDF sont exprimées en millimètres :
- " 1 cm " = 10 mm
- "1 pouce = 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;">
Modification du modèle de rendu
L'ensemble du modèle de rendu change :
// 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")
Dépannage
Sujet 1 : Document/Section introuvable
Problème : les classes Document et Section n'existent pas dans IronPDF.
Solution : Remplacer par une structure 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)
Sujet 2 : AddParagraph Not Found
Problème : la méthode AddParagraph() n'existe pas.
Solution : Utiliser des éléments HTML :
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
Sujet 3 : PdfDocumentRenderer introuvable
Problème : la classe PdfDocumentRenderer n'existe pas.
Solution : Utilisez 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()
Edition 4 : AddPageField ne fonctionne pas
Problème : la méthode AddPageField() n'existe pas.
Solution : Utiliser la syntaxe des espaces réservés 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}")
Liste de contrôle de la migration
Pré-migration
- Identifier toutes les instructions MigraDoc
using - Structures des tableaux de documents (colonnes, lignes, style)
- Remarquez l'utilisation du contenu de l'en-tête/du pied de page et des champs de page
- Liste des styles personnalisés définis avec
document.Styles - Obtenir une clé de licence IronPDF
Modifications du paquet
- Supprimer le package
PdfSharp-MigraDoc - Supprimer le package
PdfSharp-MigraDoc-GDI - Installez le package NuGet
IronPdf:dotnet add package IronPdf - Mettre à jour les importations d'espace de noms
Modifications du code
- Ajouter la configuration de la clé de licence au démarrage
- Remplacez
Sectionpar la structure HTML - Convertir
AddParagraph()en éléments HTML<p> - Convertir
Cellen structure HTML<table> - Remplacez
AddPageField()par{page}espace réservé - Remplacez
AddNumPagesField()par{total-pages}espace réservé - Convertir les propriétés
Formaten styles CSS - Remplacez
PdfDocumentRendererparChromePdfRenderer
Essai
- Comparer le rendu visuel des anciens et des nouveaux fichiers PDF
- Vérifiez que les sauts de page fonctionnent correctement.
- Vérifier l'affichage de l'en-tête/du pied de page et les numéros de page
- Valider la mise en forme et les bordures du tableau
- Test avec des documents complexes de plusieurs pages
Après la migration
- Supprimer la documentation relative à MigraDoc
- Mettre à jour les supports de formation de l'équipe
- Documenter les nouveaux emplacements des modèles HTML

