Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von MigraDoc zu IronPDF in C#

Durch die Migration von MigraDoc zu IronPDF wird Ihr .NET-PDF-Workflow von einem langwierigen programmatischen Dokumentenmodell, das eine manuelle Element-für-Element-Konstruktion erfordert, auf einen modernen HTML/CSS-basierten Ansatz umgestellt, der die vorhandenen Webentwicklungskenntnisse nutzt. Dieses Handbuch bietet einen umfassenden, schrittweisen Migrationspfad, der die steile Lernkurve des MigraDoc-eigenen Dokumentobjektmodells für professionelle .NET-Entwickler eliminiert.

Warum von MigraDoc zu IronPDF migrieren

Die MigraDoc-Herausforderungen

MigraDoc ist zwar leistungsstark für die programmatische PDF-Erzeugung, hat aber grundlegende Einschränkungen, die sich auf moderne Entwicklungsabläufe auswirken:

  1. Keine HTML-Unterstützung: MigraDoc unterstützt HTML nicht direkt. Sie müssen die Dokumente manuell Element für Element mithilfe der Objekte Document, Section, Paragraph und Table erstellen – Sie können keine bestehenden HTML/CSS-Designs verwenden.

  2. Proprietäres Dokumentenmodell: MigraDoc erfordert das Erlernen eines einzigartigen Dokumentenmodells mit Konzepten wie AddSection(), AddParagraph(), AddTable(), AddRow() und AddCell(). Diese steile Lernkurve ist besonders für Entwickler mit Webentwicklungshintergrund eine Herausforderung.

  3. Begrenzte Gestaltungsmöglichkeiten: MigraDoc bietet zwar eine robuste Dokumentenstrukturverwaltung, seine Gestaltungsmöglichkeiten sind jedoch im Vergleich zu modernen Webtools eher bescheiden. Eigenschaften wie Format.Font.Size, Format.Font.Bold und Format.Alignment sind im Vergleich zu vollständigem CSS3 eingeschränkt.

  4. Ausführlicher Code: Selbst für einfache Layouts sind Dutzende von Codezeilen erforderlich. Eine einfache Tabelle mit Kopfzeilen kann 15-20 Zeilen MigraDoc-Code erfordern.

  5. Keine JavaScriptUnterstützung: MigraDoc kann keine dynamischen Inhalte rendern oder JavaScriptausführen, was die Möglichkeiten für moderne Diagramme und interaktive Elemente einschränkt.

  6. Diagramme sind einfach: Die Diagrammfunktionalität von MigraDoc ist im Vergleich zu modernen JavaScriptDiagrammbibliotheken wie Chart.js oder D3 eingeschränkt.

MigraDoc vs IronPDFVergleich

Feature MigraDoc IronPDF
Definition des Inhalts Programmatisch (Dokument/Abschnitt/Absatz) HTML/CSS
Lernkurve Steep (proprietäres DOM) Einfach (Webkenntnisse)
Gestaltung Begrenzte Eigenschaften Vollständig CSS3
JavaScript Keine Vollständige Ausführung von Chromium
Tabellen Manuelle Spalten-/Zeilendefinition HTML <table> mit CSS
Diagramme Grundlegende MigraDoc-Diagramme Jede JavaScript-Diagrammbibliothek
Bilder Manuelle Größenbestimmung/Positionierung Standard HTML <img>
Responsive Layouts Nicht unterstützt Flexbox, Grid
Lizenz Offene Quelle (MIT) Kommerziell

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietet IronPDF eine zukunftssichere Grundlage, die es Entwicklern ermöglicht, vertraute HTML/CSS-Kenntnisse zu nutzen, anstatt ein proprietäres Dokumentenmodell zu erlernen.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

Feature Komplexität der Migration
Einfacher Text Sehr niedrig
Tabellen Niedrig
Kopf-/Fußzeilen Niedrig
Stile Medium
Bilder Niedrig
Diagramme Medium

Paradigmen-Verschiebung

Der grundlegende Shift bei dieser MigraDoc-Migration besteht in der Umstellung von der programmatischen Dokumenterstellung auf das HTML-First-Rendering:

MigraDoc: Dokument → AddSection() → AddParagraph() → PdfDocumentRenderer → Save()
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()

Dieser Paradigmenwechsel reduziert die Komplexität des Codes drastisch und bietet gleichzeitig unbegrenzte Styling-Möglichkeiten durch CSS.


Bevor Sie beginnen

Voraussetzungen

  1. .NET -Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet -Zugriff: Möglichkeit zur Installation von NuGet -Paketen
  3. IronPDF -Lizenz: Ihren Lizenzschlüssel erhalten Sie unter IronPDF.

NuGet-Paketänderungen

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

Lizenz-Konfiguration

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

Die Verwendung von MigraDoc identifizieren

# 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" .
SHELL

Komplette API-Referenz

Klassen-Zuordnungen

MigraDoc-Klasse IronPDF-Äquivalent
Document ChromePdfRenderer
Section HTML <body> oder <div>
Paragraph HTML <p>, <h1>, etc.
FormattedText HTML <span>, <strong>, etc.
Table HTML <table>
Row HTML <tr>
Column HTML <col> oder CSS
Cell HTML <td>, <th>
PdfDocumentRenderer ChromePdfRenderer

Methoden-Zuordnungen

MigraDoc-Methode IronPDF-Äquivalent
document.AddSection() HTML-Struktur
section.AddParagraph(text) <p>text</p>
section.AddTable() <table>
table.AddColumn(width) CSS width Eigenschaft
table.AddRow() <tr>
row.Cells[n].AddParagraph() <td>content</td>
renderer.RenderDocument() RenderHtmlAsPdf(html)
pdfDocument.Save(path) pdf.SaveAs(path)

Platzhalter-Zuordnungen (Kopf-/Fußzeilen)

MigraDoc-Methode IronPDFPlatzhalter
AddPageField() {page}
AddNumPagesField() {total-pages}
AddDateField() {date}

Beispiele für die Code-Migration

Beispiel 1: Grundlegendes HTML zu PDF (Der grundlegende Unterschied)

Vor (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
$vbLabelText   $csharpLabel

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

Dieses Beispiel verdeutlicht den grundlegenden Unterschied zwischen MigraDoc und IronPDF. MigraDoc erfordert das Erstellen eines Document, das Hinzufügen eines Section, das Hinzufügen eines Paragraph, die Verwendung von AddFormattedText() mit TextFormat.Bold, das Festlegen von Format.Font.Size, das Erstellen eines PdfDocumentRenderer, das Zuweisen des Dokuments, den Aufruf von RenderDocument() und schließlich das Speichern. Das sind mehr als 10 Zeilen Code mit mehreren Objekten.

IronPDF erreicht das gleiche Ergebnis in 3 Zeilen: einen Renderer erstellen, HTML rendern und speichern. Der HTML-Tag <h1> sorgt standardmäßig für die fette, große Überschriftenformatierung. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Tabellen erstellen

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

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

Für die Erstellung der MigraDoc-Tabelle ist es erforderlich, die Hierarchie Table, Column, Row und Cell zu verstehen. Sie müssen explizit Spalten mit AddColumn() hinzufügen, Zeilen mit AddRow() erstellen, auf Zellen über den Index mit Cells[n] zugreifen und Inhalte mit AddParagraph() hinzufügen. Der Rahmen wird über table.Borders.Width festgelegt.

IronPDF verwendet die Standard-HTML-Tabellensyntax, die jeder Webentwickler kennt. Das Attribut border='1' definiert den Rahmen, <th> Elemente erzeugen Kopfzeilenzellen und <td> Elemente erzeugen Datenzellen. CSS kann für fortgeschrittenes Gestaltungwie Zebra Striping, Hover-Effekte oder responsive Layouts hinzugefügt werden. Erfahren Sie mehr über die Erstellung von Tabellen in PDFs.

Beispiel 3: Kopf- und Fußzeilen mit Seitenzahlen

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

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

Für MigraDoc-Kopf- und Fußzeilen ist der Zugriff auf section.Headers.Primary und section.Footers.Primary erforderlich. Darin müssen Absätze erstellt, mit AddText() Text hinzugefügt und für dynamische Inhalte spezielle Methoden wie AddPageField() verwendet werden. Für die Ausrichtung muss Format.Alignment eingestellt werden.

IronPDF stellt einfache AddTextHeader() und AddTextFooter() Methoden für das PdfDocument Objekt bereit. Der Platzhalter {page} fügt automatisch die aktuelle Seitenzahl ein. Für komplexere Header können Sie HtmlHeaderFooter mit voller HTML/CSS-Unterstützung verwenden. Siehe die Kopf- und Fußzeilen-Dokumentation für erweiterte Optionen.


Kritische Hinweise zur Migration

Seitennummern-Platzhalter-Syntax

Die wichtigste Änderung für Kopf- und Fußzeilen ist die Syntax der Platzhalter:

// 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}"
$vbLabelText   $csharpLabel

Formateigenschaften in CSS

Die Format-Eigenschaften von MigraDoc werden CSS zugeordnet:

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

Einheitsumwandlung

MigraDoc verwendet verschiedene Einheiten;IronPDF verwendet Millimeter-Ränder:

  • "1 cm" = 10 mm
  • "1in" = 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

Rendering-Muster ändern

Das gesamte Rendering-Muster ändert sich:

// 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")
$vbLabelText   $csharpLabel

Fehlerbehebung

Problem 1: Dokument/Abschnitt nicht gefunden

Problem: Die Klassen Document und Section existieren nicht in IronPDF.

Lösung: Ersetzen Sie dies durch die HTML-Struktur:

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

Ausgabe 2: AddParagraph nicht gefunden

Problem: Die Methode AddParagraph() existiert nicht.

Lösung: HTML-Elemente verwenden:

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

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

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

Ausgabe 3: PdfDocumentRenderer nicht gefunden

Problem: Die Klasse PdfDocumentRenderer existiert nicht.

Lösung: Verwenden Sie 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

Ausgabe 4: AddPageField funktioniert nicht

Problem: Die Methode AddPageField() existiert nicht.

Lösung: Verwenden Sie die IronPDFPlatzhaltersyntax:

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

Migrations-Checkliste

Vor der Migration

  • Identifizieren Sie alle MigraDocusing-Anweisungen
  • Dokumenttabellenstrukturen (Spalten, Zeilen, Formatierung)
  • Beachten Sie den Inhalt von Kopf- und Fußzeile sowie die Verwendung der Seitenfelder.
  • Liste der benutzerdefinierten Stile auf, die mit document.Styles definiert wurden -IronPDF-Lizenzschlüssel erhalten

Paketänderungen

  • Entfernen Sie das Paket PdfSharp-MigraDoc
  • Entfernen Sie das Paket PdfSharp-MigraDoc-GDI
  • Installieren Sie das NuGet Paket IronPdf: dotnet add package IronPdf
  • Namespace-Importe aktualisieren

Code-Änderungen

  • Lizenzschlüsselkonfiguration beim Start hinzufügen
  • Ersetzen Sie Section durch die HTML-Struktur
  • Konvertiere AddParagraph() in HTML <p> Elemente
  • Konvertiere Cell in die HTML-Struktur <table>
  • Ersetzen Sie AddPageField() durch den Platzhalter {page}
  • Ersetzen Sie AddNumPagesField() durch den Platzhalter {total-pages}
  • Konvertiere Format-Eigenschaften in CSS-Stile
  • Ersetzen Sie PdfDocumentRenderer durch ChromePdfRenderer

Testen

  • Vergleich der visuellen Darstellung alter und neuer PDFs
  • Überprüfen Sie, ob die Seitenumbrüche korrekt funktionieren.
  • Überprüfen Sie die Darstellung von Kopf- und Fußzeilen sowie die Seitenzahlen.
  • Tabellenformatierung und Rahmen prüfen
  • Test mit komplexen, mehrseitigen Dokumenten

Nach der Migration

  • Entfernen Sie die MigraDoc-bezogene Dokumentation
  • Aktualisierung der Teamschulungsmaterialien
  • Neue Speicherorte für HTML-Vorlagen dokumentieren

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron Support Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an