Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

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:

  1. 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, Paragraph i Table — nie możesz korzystać z istniejących projektów HTML/CSS.

  2. Własny model dokumentu:MigraDocwymaga opanowania unikalnego modelu dokumentu z pojęciami takimi jak AddSection(), AddParagraph(), AddTable(), AddRow() oraz AddCell(). Ta stroma krzywa uczenia się stanowi szczególne wyzwanie dla programistów z doświadczeniem w tworzeniu stron internetowych.

  3. 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.Bold i Format.Alignment są ograniczone w porównaniu z pełnym CSS3.

  4. 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.

  5. 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.

  6. 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

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. 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
SHELL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lista kontrolna migracji

Przed migracją

  • Zidentyfikuj wszystkie instrukcjeMigraDocusing
  • 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 Section strukturą HTML
  • Zamień AddParagraph() na elementy HTML <p>
  • Przekonwertuj Cell na strukturę HTML <table>
  • Zastąp AddPageField() symbolem zastępczym {page}
  • Zastąp AddNumPagesField() symbolem zastępczym {total-pages}
  • Przekształć właściwości Format na style CSS
  • Zastąp PdfDocumentRenderer przez ChromePdfRenderer

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

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie