Jak przeprowadzić migrację z MigraDoc do IronPDF w języku C#
Przejście zMigraDocnaIronPDFzmienia proces pracy z plikami PDF w środowisku .NET z rozbudowanego modelu programowego, wymagającego ręcznego tworzenia elementów, na nowoczesne podejście oparte na HTML/CSS, które wykorzystuje istniejące umiejętności w zakresie tworzenia stron internetowych. Niniejszy przewodnik zawiera kompleksową, szczegółową ścieżkę migracji, która eliminuje trudności związane z nauką obsługi zastrzeżonego modelu obiektowego dokumentówMigraDocdla profesjonalnych programistów .NET.
Dlaczego warto przejść zMigraDocna IronPDF
Wyzwania związane z MigraDoc
MigraDoc, choć jest potężnym narzędziem do programowego generowania plików PDF, ma fundamentalne ograniczenia, które wpływają na nowoczesne procesy programistyczne:
-
Brak obsługi HTML:MigraDocnie obsługuje bezpośrednio HTML. Musisz ręcznie tworzyć dokumenty element po elemencie, używając obiektów
Document,Section,ParagraphiTable— nie możesz korzystać z istniejących projektów HTML/CSS. -
Własny model dokumentu:MigraDocwymaga opanowania unikalnego modelu dokumentu z pojęciami takimi jak
AddSection(),AddParagraph(),AddTable(),AddRow()orazAddCell(). Ta stroma krzywa uczenia się stanowi szczególne wyzwanie dla programistów z doświadczeniem w tworzeniu stron internetowych. -
Ograniczone opcje stylizacji: ChociażMigraDocoferuje solidne zarządzanie strukturą dokumentów, jego możliwości stylizacyjne są skromne w porównaniu z nowoczesnymi narzędziami internetowymi. Właściwości takie jak
Format.Font.Size,Format.Font.BoldiFormat.Alignmentsą ograniczone w porównaniu z pełnym CSS3. -
Rozbudowany kod: Tworzenie nawet prostych układów wymaga dziesiątek linii kodu. Prosta tabela z nagłówkami może wymagać 15–20 wierszy kodu MigraDoc.
-
Brak obsługi JavaScript:MigraDocnie może renderować treści dynamicznych ani wykonywać kodu JavaScript, co ogranicza możliwości tworzenia nowoczesnych wykresów i elementów interaktywnych.
- Wykresy są podstawowe: Funkcjonalność wykresów wMigraDocjest ograniczona w porównaniu z nowoczesnymi bibliotekami wykresów JavaScript, takimi jak Chart.js czy D3.
PorównanieMigraDoci IronPDF
| Funkcja | MigraDoc | IronPDF |
|---|---|---|
| Definicja treści | Programowe (dokument/sekcja/akapit) | HTML/CSS |
| Krzywa uczenia się | Steep (zastrzeżony DOM) | Łatwe (umiejętności internetowe) |
| Stylizacja | Ograniczone właściwości | Pełny CSS3 |
| JavaScript | None | Pełne wykonanie w Chromium |
| Tabele | Ręczne definiowanie kolumn/wierszy | HTML <table> z CSS |
| Wykresy | Podstawowe wykresyMigraDoc | Dowolna biblioteka do tworzenia wykresów wJavaScript |
| Obrazy | Ręczne dopasowywanie rozmiaru/pozycjonowanie | Standardowy HTML <img> |
| Responsywne układy | Nieobsługiwane | Flexbox, Grid |
| Licencja | Open Source (MIT) | Komercjalne |
Dla zespołów planujących wdrożenie .NET 10 i C# 14 w latach 2025 i 2026,IronPDFzapewnia przyszłościową platformę, która pozwala programistom korzystać z dobrze znanych umiejętnościHTML/CSSzamiast uczyć się zastrzeżonego modelu dokumentów.
Ocena złożoności migracji
Szacowany nakład pracy według funkcji
| Funkcja | Złożoność migracji |
|---|---|
| Prosty tekst | Bardzo niski |
| Tabele | Low |
| Nagłówki/stopki | Low |
| Style | Medium |
| Obrazy | Low |
| Wykresy | Medium |
Zmiana paradygmatu
Podstawową zmianą w tej migracjiMigraDocjest Shift od programowego tworzenia dokumentów do renderowania opartego na HTML:
MigraDoc: Document → AddSection() → AddParagraph() → PdfDocumentRenderer → Save()
IronPDF: ChromePdfRenderer → RenderHtmlAsPdf(html) → SaveAs()
Ta zmiana paradygmatu radykalnie zmniejsza złożoność kodu, zapewniając jednocześnie nieograniczone możliwości stylizacji za pomocą CSS.
Zanim zaczniesz
Wymagania wstępne
- Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
- Dostęp do NuGet: Możliwość instalowania pakietów NuGet
- Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com
Zmiany w pakiecie NuGet
# RemoveMigraDocpackages
dotnet remove package PdfSharp-MigraDoc
dotnet remove package PdfSharp-MigraDoc-GDI
dotnet remove package PDFsharp.MigraDoc.Standard
# Install IronPDF
dotnet add package IronPdf
# RemoveMigraDocpackages
dotnet remove package PdfSharp-MigraDoc
dotnet remove package PdfSharp-MigraDoc-GDI
dotnet remove package PDFsharp.MigraDoc.Standard
# Install IronPDF
dotnet add package IronPdf
Konfiguracja licencji
// 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"
Zidentyfikuj zastosowanie MigraDoc
# Find allMigraDocreferences
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
# Find allMigraDocreferences
grep -r "using MigraDoc\|PdfDocumentRenderer\|AddSection\|AddParagraph" --include="*.cs" .
grep -r "AddTable\|AddRow\|AddColumn\|AddCell\|AddImage" --include="*.cs" .
Kompletna dokumentacija API
Mapowania klas
| KlasaMigraDoc | OdpowiednikIronPDF |
|---|---|
Document |
ChromePdfRenderer |
Section |
HTML <body> lub <div> |
Paragraph |
HTML <p>, <h1> itp. |
FormattedText |
HTML <span>, <strong> itp. |
Table |
HTML <table> |
Row |
HTML <tr> |
Column |
HTML <col> lub CSS |
Cell |
HTML <td>, <th> |
PdfDocumentRenderer |
ChromePdfRenderer |
Mapowanie metod
| MetodaMigraDoc | OdpowiednikIronPDF |
|---|---|
document.AddSection() |
Struktura HTML |
section.AddParagraph(text) |
<p>text</p> |
section.AddTable() |
<table> |
table.AddColumn(width) |
Właściwość CSS width |
table.AddRow() |
<tr> |
row.Cells[n].AddParagraph() |
<td>content</td> |
renderer.RenderDocument() |
RenderHtmlAsPdf(html) |
pdfDocument.Save(path) |
pdf.SaveAs(path) |
Mapowanie symboli zastępczych (nagłówki/stopki)
| MetodaMigraDoc | IronPDF Placeholder |
|---|---|
AddPageField() |
{page} |
AddNumPagesField() |
{total-pages} |
AddDateField() |
{date} |
Przykłady migracji kodu
Przykład 1: Podstawowe konwersje z HTML do PDF (podstawowa różnica)
Przed (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
Po (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
Ten przykład ilustruje zasadniczą różnicę międzyMigraDoca IronPdf.MigraDocwymaga utworzenia Document, dodania Section, dodania Paragraph, użycia AddFormattedText() z TextFormat.Bold, ustawienie Format.Font.Size, utworzenie PdfDocumentRenderer, przypisanie dokumentu, wywołanie RenderDocument() i wreszcie zapisanie. To ponad 10 wierszy kodu z wieloma obiektami.
IronPDF osiąga ten sam rezultat w trzech krokach: utworzenie renderera, renderowanie HTML i zapisanie. Tag HTML <h1> w naturalny sposób zapewnia styl pogrubionego, dużego nagłówka. Dodatkowe opcje renderowania można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.
Przykład 2: Tworzenie tabel
Przed (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
Po (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
Tworzenie tabeliMigraDocwymaga zrozumienia hierarchii Table, Column, Row i Cell. Należy wyraźnie dodawać kolumny za pomocą AddColumn(), tworzyć wiersze za pomocą AddRow(), uzyskiwać dostęp do komórek według indeksu za pomocą Cells[n] oraz dodawać treść za pomocą AddParagraph(). Obramowanie jest ustawiane za pomocą table.Borders.Width.
IronPDF wykorzystuje standardową składnię tabel HTML, znaną każdemu programiście stron internetowych. Atrybut border='1' zapewnia obramowanie, elementy <th> tworzą komórki nagłówkowe, a elementy <td> tworzą komórki danych. Można dodać CSS w celu uzyskania zaawansowanych stylów, takich jak paski zebry, efekty najechania kursorem lub responsywne układy. Dowiedz się więcej o tworzeniu tabel w plikach PDF.
Przykład 3: Nagłówki i stopki z numerami stron
Przed (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
Po (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
Nagłówki i stopkiMigraDocwymagają dostępu do section.Headers.Primary i section.Footers.Primary, tworzenia akapitów w ich obrębie, dodawania tekstu za pomocą AddText() oraz stosowania specjalnych metod, takich jak AddPageField(), w celu uzyskania treści dynamicznej. Wyrównanie wymaga ustawienia Format.Alignment.
IronPDF udostępnia proste metody AddTextHeader() i AddTextFooter() w obiekcie PdfDocument. Symbol zastępczy {page} automatycznie wstawia bieżący numer strony. W przypadku bardziej złożonych nagłówków można użyć HtmlHeaderFooter z pełną obsługą HTML/CSS. Aby zapoznać się z opcjami zaawansowanymi, zapoznaj się z dokumentacją dotyczącą nagłówków i stopek.
Ważne uwagi dotyczące migracji
Składnia symbolu zastępczego numeru strony
Najważniejszą zmianą w nagłówkach i stopkach jest składnia symboli zastępczych:
//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}"
' MigraDoc field methods:
footerPara.AddPageField() ' Current page
footerPara.AddNumPagesField() ' Total pages
' IronPDF placeholders:
"Page {page} of {total-pages}"
Właściwości formatowania do CSS
Właściwości Format wMigraDocodpowiadają następującym właściwościom 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;">
Przeliczanie jednostek
MigraDoc wykorzystuje różne jednostki; WIronPDFmarginesy są podawane w milimetrach:
- "1 cm" = 10 mm
- "1 cal" = 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;">
Zmiana wzorca renderowania
Cały wzorzec renderowania ulega zmianie:
//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")
Rozwiązywanie problemów
Problem 1: Nie znaleziono dokumentu/sekcji
Problem: klasy Document i Section nie istnieją w IronPDF.
Rozwiązanie: Zastąp strukturą 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)
Problem 2: Nie znaleziono akapitu AddParagraph
Problem: metoda AddParagraph() nie istnieje.
Rozwiązanie: Użyj elementów HTML:
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
Problem 3: Nie znaleziono PdfDocumentRenderer
Problem: PdfDocumentRenderer klasa nie istnieje.
Rozwiązanie: Użyj 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()
Problem 4: AddPageField nie działa
Problem: metoda AddPageField() nie istnieje.
Rozwiązanie: Użyj składni symboli zastępczych 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 kontrolna migracji
Przed migracją
- Zidentyfikuj wszystkie instrukcjeMigraDoc
using - Struktury tabel w dokumentach (kolumny, wiersze, stylizacja)
- Zwróć uwagę na zawartość nagłówków/stopek oraz wykorzystanie pól na stronie
- Lista niestandardowych stylów zdefiniowanych za pomocą
document.Styles - Uzyskaj klucz licencyjny IronPDF
Zmiany w pakiecie
- Usuń pakiet
PdfSharp-MigraDoc - Usuń pakiet
PdfSharp-MigraDoc-GDI - Zainstaluj pakiet NuGet
IronPdf:dotnet add package IronPdf - Zaktualizuj importy przestrzeni nazw
Zmiany w kodzie
- Dodaj konfigurację klucza licencyjnego podczas uruchamiania
- Zastąp
Sectionstrukturą HTML - Zamień
AddParagraph()na elementy HTML<p> - Przekonwertuj
Cellna strukturę HTML<table> - Zastąp
AddPageField()symbolem zastępczym{page} - Zastąp
AddNumPagesField()symbolem zastępczym{total-pages} - Przekształć właściwości
Formatna style CSS - Zastąp
PdfDocumentRendererprzezChromePdfRenderer
Testowanie
- Porównaj wygląd starych i nowych plików PDF
- Sprawdź, czy podziały stron działają poprawnie
- Sprawdź renderowanie nagłówków/stopek oraz numerów stron
- Sprawdź formatowanie tabeli i obramowania
- Przetestuj na złożonych dokumentach wielostronicowych
Po migracji
- Usuń dokumentację związaną z MigraDoc
- Aktualizacja materiałów szkoleniowych dla zespołu
- Dokumentowanie nowych lokalizacji szablonów HTML

