Wie man PDF-Revisionsgeschichte in C# speichert und bearbeitet
Durch die Migration von MigraDoczu 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 MigraDoczu IronPDF migrieren
Die MigraDoc-Herausforderungen
MigraDoc ist eine Layout-Engine, die auf PDFsharp aufbaut — sie hängt vom PDFsharp-Paket ab und rendert in ein PDFsharp PdfDocument. Wird von empira / dem PDFsharp-Team unter der MIT-Lizenz gepflegt, ist es leistungsfähig für die programmatische Generierung, hat jedoch grundlegende Einschränkungen, die moderne Entwicklungs-Workflows beeinflussen:
-
Keine HTML-Unterstützung: MigraDocunterstützt HTML nicht direkt. Sie müssen Dokumente manuell Element für Element mit
Document,Section,ParagraphundTableObjekten erstellen — Sie können keine vorhandenen HTML/CSS-Designs nutzen. -
Proprietäres Dokumentenmodell: MigraDocerfordert das Erlernen eines einzigartigen Dokumentenmodells mit Konzepten wie
AddSection(),AddParagraph(),AddTable(),AddRow()undAddCell(). Diese steile Lernkurve ist besonders für Entwickler mit Webentwicklungshintergrund eine Herausforderung. -
Begrenzte Gestaltungsmöglichkeiten: MigraDocbietet zwar eine robuste Dokumentenstrukturverwaltung, seine Gestaltungsmöglichkeiten sind jedoch im Vergleich zu modernen Webtools eher bescheiden. Eigenschaften wie
Format.Font.Size,Format.Font.BoldundFormat.Alignmentsind im Vergleich zu vollem CSS3 begrenzt. -
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.
-
Keine JavaScriptUnterstützung: MigraDockann keine dynamischen Inhalte rendern oder JavaScriptausführen, was die Möglichkeiten für moderne Diagramme und interaktive Elemente einschränkt.
- Diagramme sind einfach: Die Diagrammfunktionalität von MigraDocist im Vergleich zu modernen JavaScriptDiagrammbibliotheken wie Chart.js oder D3 eingeschränkt.
MigraDocvs IronPDF Vergleich
| 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 | None | 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 modernes .NET anvisieren, lässt IronPDF Entwicklern vertraute HTML/CSS-Kenntnisse 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
- .NET -Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet -Zugriff: Möglichkeit zur Installation von NuGet -Paketen
- IronPDF -Lizenz: Ihren Lizenzschlüssel erhalten Sie unter IronPDF.
NuGet-Paketänderungen
# Remove MigraDocpackages (package IDs are case-sensitive on nuget.org)
dotnet remove package PDFsharp-MigraDoc
dotnet remove package PDFsharp-MigraDoc-GDI
dotnet remove package PDFsharp-MigraDoc-WPF
# Install IronPDF
dotnet add package IronPdf
# Remove MigraDocpackages (package IDs are case-sensitive on nuget.org)
dotnet remove package PDFsharp-MigraDoc
dotnet remove package PDFsharp-MigraDoc-GDI
dotnet remove package PDFsharp-MigraDoc-WPF
# Install IronPDF
dotnet add package IronPdf
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"
Die Verwendung von MigraDocidentifizieren
# 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" .
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 | IronPDF Platzhalter |
|---|---|
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()
{
// 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
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
Dieses Beispiel verdeutlicht den grundlegenden Unterschied zwischen MigraDocund IronPDF. MigraDocerfordert das Erstellen eines Document, das Hinzufügen eines Section, das Hinzufügen eines Paragraph, die Verwendung von AddFormattedText() mit TextFormat.Bold, das Setzen von Format.Font.Size, das Erstellen eines PdfDocumentRenderer, das Zuweisen des Dokuments, das Aufrufen 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. Das HTML <h1> Tag bietet von Natur aus den fetten, großen Überschriftenstil. 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
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
Die Erstellung von MigraDoc-Tabellen erfordert das Verständnis der Table, Column, Row und Cell Hierarchie. Sie müssen explizit Spalten mit AddColumn() hinzufügen, Zeilen mit AddRow() erstellen, Zellen durch Index mit Cells[n] ansprechen 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 border='1' Attribut stellt den Rahmen bereit, <th> Elemente erstellen Kopfzellen, und <td> Elemente erstellen 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
Nach (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Document Header"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");
pdf.SaveAs("header-footer.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
CenterText = "Document Header"
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");
pdf.SaveAs("header-footer.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
.CenterText = "Document Header"
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.CenterText = "Page {page}"
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>")
pdf.SaveAs("header-footer.pdf")
End Sub
End Class
MigraDoc-Kopf- und Fußzeilen erfordern den Zugriff auf section.Headers.Primary und section.Footers.Primary, das Erstellen von Absätzen darin, das Hinzufügen von Text mit AddText() und die Verwendung spezieller Methoden wie AddPageField() für dynamische Inhalte. Ausrichtung erfordert das Setzen von Format.Alignment.
IronPDF konfiguriert Kopf- und Fußzeilen auf RenderingOptions.TextHeader / RenderingOptions.TextFooter mit TextHeaderFooter, mit LeftText, CenterText und RightText Regionen. Der {page} Platzhalter fügt automatisch die aktuelle Seitenzahl ein. Für reichere Layouts verwenden Sie HtmlHeader / HtmlFooter mit HtmlHeaderFooter für volle HTML/CSS-Unterstützung. 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:
// MigraDocfield methods:
footerPara.AddPageField(); // Current page
footerPara.AddNumPagesField(); // Total pages
//IronPDF placeholders:
"Page {page} of {total-pages}"
// MigraDocfield methods:
footerPara.AddPageField(); // Current page
footerPara.AddNumPagesField(); // Total pages
//IronPDF placeholders:
"Page {page} of {total-pages}"
' MigraDocfield methods:
footerPara.AddPageField() ' Current page
footerPara.AddNumPagesField() ' Total pages
' IronPDF placeholders:
"Page {page} of {total-pages}"
Formateigenschaften in CSS
MigraDocs Format Eigenschaften korrelieren mit 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;">
Einheitsumwandlung
MigraDoc verwendet verschiedene Einheiten;IronPDF verwendet Millimeter-Ränder:
- "1 cm" = 10 mm
- "1in" = 25.4mm
- "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;">
Rendering-Muster ändern
Das gesamte Rendering-Muster ändert sich:
// MigraDocpattern (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");
// MigraDocpattern (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");
' MigraDocpattern (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")
Fehlerbehebung
Problem 1: Dokument/Abschnitt nicht gefunden
Problem: Document und Section Klassen 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)
Ausgabe 2: AddParagraph nicht gefunden
Problem: AddParagraph() Methode 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>"
Ausgabe 3: PdfDocumentRenderer nicht gefunden
Problem: PdfDocumentRenderer Klasse 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()
Ausgabe 4: AddPageField funktioniert nicht
Problem: AddPageField() Methode existiert nicht.
Lösung: Verwenden Sie die IronPDF Platzhaltersyntax:
// MigraDoc
footerPara.AddPageField();
// IronPDF
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
// MigraDoc
footerPara.AddPageField();
// IronPDF
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
CenterText = "Page {page}"
};
' MigraDoc
footerPara.AddPageField()
' IronPDF
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
.CenterText = "Page {page}"
}
Migrations-Checkliste
Vor der Migration
- Identifizieren Sie alle MigraDoc
usingAnweisungen - Dokumenttabellenstrukturen (Spalten, Zeilen, Formatierung)
- Beachten Sie den Inhalt von Kopf- und Fußzeile sowie die Verwendung der Seitenfelder.
- Listen Sie benutzerdefinierte Stile auf, die mit
document.Stylesdefiniert wurden -IronPDF-Lizenzschlüssel erhalten
Paketänderungen
- Entfernen Sie
PDFsharp-MigraDoc,PDFsharp-MigraDoc-GDIundPDFsharp-MigraDoc-WPFPakete - Installieren Sie das
IronPdfNuGet-Paket:dotnet add package IronPdf - Namespace-Importe aktualisieren
Code-Änderungen
- Lizenzschlüsselkonfiguration beim Start hinzufügen
- Ersetzen Sie
Sectionmit HTML-Struktur - Konvertieren Sie
AddParagraph()zu HTML<p>Elementen - Konvertieren Sie
Cellzu HTML<table>Struktur - Ersetzen Sie
AddPageField()mit{page}Platzhalter - Ersetzen Sie
AddNumPagesField()mit{total-pages}Platzhalter - Konvertieren Sie
FormatEigenschaften zu CSS-Stilen - Ersetzen Sie
PdfDocumentRenderermitChromePdfRenderer
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

