跳過到頁腳內容
遷移指南

如何用 C# 從 MigraDoc 轉移到 IronPDF

從MigraDoc轉換到IronPDF可將您的 .NET PDF 工作流程從需要手動逐個元素建構的冗長程式化文件模型轉換為基於HTML/CSS的現代方法,充分利用現有的 Web 開發技能。 本指南為專業的 .NET 開發人員提供了一個全面、循序漸進的轉換路徑,消除了MigraDoc專屬文件物件模型的陡峭學習曲線。

為什麼要從MigraDoc轉移到 IronPDF?

MigraDoc的挑戰

MigraDoc 雖然在程式化 PDF 產生方面功能強大,但卻有一些基本的限制,會影響現代的開發工作流程:

1.不支援 HTML:MigraDoc不直接支援 HTML。 您必須使用 DocumentSectionParagraphTable 物件逐一元素手動建立文件—您無法利用現有的HTML/CSS設計。

2.專有文件模型:MigraDoc需要學習一個獨特的文檔模型,其中包含 AddSection()AddParagraph()AddTable()AddRow() 和 @@--CODE-17993--@@。 這種陡峭的學習曲線對於具有 Web 開發背景的開發人員而言尤其具有挑戰性。

3.樣式選項有限:雖然MigraDoc提供了強大的文件結構管理功能,但與現代 Web 工具相比,其樣式功能較為有限。 與完整的 CSS3 相比,Format.Font.SizeFormat.Font.BoldFormat.Alignment 等屬性的功能有限。

4.冗長的程式碼:即使是創建簡單的佈局也需要幾十行程式碼。 一個帶標頭的基本表格可能需要 15-20 行MigraDoc程式碼。

5.不支援 JavaScript:MigraDoc無法渲染動態內容或執行 JavaScript,限制了現代圖表和互動元素的選擇。

6.圖表功能較為基礎:與 Chart.js 或 D3 等現代JavaScript圖表函式庫相比,MigraDoc 的圖表功能較為有限。

MigraDoc與IronPDF的比較

特點 MigraDoc IronPDF
內容定義 程式化 (文件/章節/段落) HTML/CSS
學習曲線 Steep (專屬 DOM) 簡易(網路技能)
造型設計 屬性有限 完整的 CSS3
JavaScript 完整的 Chromium 執行
表格 手動定義列/行 HTML <table> 與 CSS
圖表 MigraDoc 基本圖表 任何JavaScript圖表庫
圖片 手冊尺寸/定位 標準 HTML <img>
回應式佈局 不支援 Flexbox、網格
許可證 開放原始碼 (MIT) 商業的

對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了一個面向未來的基礎,讓開發人員可以使用熟悉的HTML/CSS技能,而無需學習專屬的文件模型。


遷移複雜性評估

按功能估計的工作量

特點 遷移複雜性
簡單文字 非常低
表格
頁首/頁尾
風格 語言
圖片
圖表 語言

範式轉移

MigraDoc 遷移的根本轉變是從程式化文件建置轉向HTML 優先渲染:

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

這種範式的轉變可大幅降低程式碼的複雜度,同時透過 CSS 提供無限的造型能力。


開始之前

先決條件

  1. .NET環境: .NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet存取權限:能夠安裝NuGet套件
  3. IronPDF許可證:請從IronPDF取得您的許可證密鑰。

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

授權組態

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

說明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

完整的 API 參考資料

類別對應

MigraDoc 類別 IronPDF 同等級產品
Document ChromePdfRenderer
Section HTML <body><div>
Paragraph HTML <p>, <h1> 等。
FormattedText HTML <span>, <strong> 等。
Table HTML <table>
Row HTML <tr>
Column HTML <col> 或 CSS
Cell HTML <td>, <th>
PdfDocumentRenderer ChromePdfRenderer

方法對應

MigraDoc 方法 IronPDF 同等級產品
document.AddSection() HTML 結構
section.AddParagraph(text) <p>text</p>
section.AddTable() <table>
table.AddColumn(width) CSS 屬性
table.AddRow() <tr>
row.Cells[n].AddParagraph() <td>content</td>
renderer.RenderDocument() RenderHtmlAsPdf(html)
pdfDocument.Save(path) pdf.SaveAs(path)

占位符對應(頁首/頁腳)

MigraDoc 方法 IronPDF 占位符
AddPageField() {page}
AddNumPagesField() {total-pages}
AddDateField() {date}

程式碼遷移範例

範例 1:基本 HTML 到 PDF(基本差異)

之前 (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

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

本範例說明MigraDoc與IronPDF的基本差異。MigraDoc需要建立 Document,新增 Section,新增 Paragraph,將 AddFormattedText()TextFormat.BoldCODE-18047--@@ 與 TextFormat.Bold 一起使用,設定 @CO-- PdfDocumentRenderer,分配文檔,呼叫 RenderDocument(),最後儲存。 這是 10 行以上的程式碼,包含多個物件。

IronPDF 只需 3 行即可達成相同的結果:建立渲染器、渲染 HTML 並儲存。 HTML <h1> 標籤自然提供了粗體、大標題樣式。 請參閱 HTML to PDF 文件,以瞭解其他渲染選項。

範例 2:建立表格

之前 (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

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

建立MigraDoc表需要了解 TableColumnRowCell 層級結構。 您必須使用 AddColumn() 明確新增列,使用 AddRow() 建立行,使用 Cells[n] 透過索引存取儲存格,並使用 @@--CODE-18060--@@ 新增內容。 邊框由 table.Borders.Width 設定。

IronPDF 使用任何網頁開發人員都知道的標準 HTML 表格語法。 border='1' 屬性提供邊框,<th> 元素建立標題單元格,<td> 元素建立資料單元格。 可加入 CSS 以進行進階造型,例如斑馬紋、懸浮效果或回應式佈局。 進一步了解 在 PDF 中建立表格

範例 3:帶有頁碼的頁首和頁尾

之前 (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

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

MigraDoc 的頁首和頁腳需要訪問 section.Headers.Primarysection.Footers.Primary,在其中創建段落,使用 AddText() 添加文本,以及使用 AddPageField() 等特殊方法來處理動態內容。 對齊需要設定 Format.Alignment

IronPDF 為 AddTextHeader()AddTextFooter() 物件提供了簡單的 PdfDocument 方法。 {page} 佔位符會自動插入目前頁碼。 對於更複雜的標頭,您可以使用 HtmlHeaderFooter,它完全支援 HTML/CSS。 有關進階選項,請參閱 headers and footers 文件


關鍵遷移注意事項

頁碼占位符語法

頁首和頁尾最重要的改變是佔位符語法:

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

格式屬性轉換為 CSS

MigraDoc 的 Format 屬性對應到 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

單位轉換

MigraDoc 使用各種單位;IronPDF頁邊使用毫米:

  • 1公分 = 10毫米
  • "1in" = 25.4mm
  • "72pt" = 25.4毫米
// 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

渲染模式變更

整個呈現模式會改變:

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

疑難排解

問題 1:找不到文件/章節

問題:IronPDF中不存在 DocumentSection 類別。

解決方案:替換為 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

問題 2:未找到 AddParagraph。

問題: AddParagraph() 方法不存在。

解決方案:使用 HTML 元素:

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

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

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

問題 3:PdfDocumentRenderer 未找到

問題: PdfDocumentRenderer 類別不存在。

解:使用 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

問題 4:AddPageField 無法運作

問題: AddPageField() 方法不存在。

解決方法:使用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

遷移清單

預遷移

  • 辨識所有MigraDocusing 語句
  • 文件表格結構(列、行、樣式)
  • 注意頁首/頁尾內容和頁面欄位的使用
  • 列出使用 document.Styles 定義的自訂樣式
  • 取得IronPDF許可證密鑰

套件變更

  • 刪除 PdfSharp-MigraDoc 套件
  • 刪除 PdfSharp-MigraDoc-GDI 套件 安裝 IronPdf NuGet 套件:dotnet add package IronPdf
  • 更新命名空間匯入

程式碼變更

  • 在啟動時新增許可證金鑰配置
  • Document/Section 替換為 HTML 結構 將 AddParagraph() 轉換為 HTML <p> 元素 將 Table/Row/Cell 轉換為 HTML <table> 結構
  • AddPageField() 替換為 {page} 佔位符
  • AddNumPagesField() 替換為 {total-pages} 佔位符
  • Format 屬性轉換為 CSS 樣式
  • PdfDocumentRenderer 替換為 ChromePdfRenderer

測試

  • 對比新舊PDF檔案的視覺效果
  • 驗證分頁符號是否正常運作 檢查頁首/頁尾渲染和頁碼
  • 檢查表格格式和邊框
  • 使用複雜的多頁文件進行測試

後遷移

  • 刪除與MigraDoc相關的文檔
  • 更新團隊培訓資料
  • 記錄新的 HTML 範本位置

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我