如何用 C# 從 MigraDoc 轉移到 IronPDF
從MigraDoc轉換到IronPDF可將您的 .NET PDF 工作流程從需要手動逐個元素建構的冗長程式化文件模型轉換為基於HTML/CSS的現代方法,充分利用現有的 Web 開發技能。 本指南為專業的 .NET 開發人員提供了一個全面、循序漸進的轉換路徑,消除了MigraDoc專屬文件物件模型的陡峭學習曲線。
為什麼要從MigraDoc轉移到 IronPDF?
MigraDoc的挑戰
MigraDoc 雖然在程式化 PDF 產生方面功能強大,但卻有一些基本的限制,會影響現代的開發工作流程:
1.不支援 HTML:MigraDoc不直接支援 HTML。 您必須使用 Document、Section、Paragraph 和 Table 物件逐一元素手動建立文件—您無法利用現有的HTML/CSS設計。
2.專有文件模型:MigraDoc需要學習一個獨特的文檔模型,其中包含 AddSection()、AddParagraph()、AddTable()、AddRow() 和 @@--CODE-17993--@@。 這種陡峭的學習曲線對於具有 Web 開發背景的開發人員而言尤其具有挑戰性。
3.樣式選項有限:雖然MigraDoc提供了強大的文件結構管理功能,但與現代 Web 工具相比,其樣式功能較為有限。 與完整的 CSS3 相比,Format.Font.Size、Format.Font.Bold 和 Format.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 提供無限的造型能力。
開始之前
先決條件
- .NET環境: .NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet存取權限:能夠安裝NuGet套件
- 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
授權組態
// 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"
說明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" .
完整的 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
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
本範例說明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
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
建立MigraDoc表需要了解 Table、Column、Row 和 Cell 層級結構。 您必須使用 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
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
MigraDoc 的頁首和頁腳需要訪問 section.Headers.Primary 和 section.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}"
格式屬性轉換為 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;">
單位轉換
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;">
渲染模式變更
整個呈現模式會改變:
//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")
疑難排解
問題 1:找不到文件/章節
問題:IronPDF中不存在 Document 和 Section 類別。
解決方案:替換為 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)
問題 2:未找到 AddParagraph。
問題: AddParagraph() 方法不存在。
解決方案:使用 HTML 元素:
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
// MigraDoc
section.AddParagraph("Hello World");
// IronPDF
"<p>Hello World</p>"
問題 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()
問題 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}")
遷移清單
預遷移
- 辨識所有MigraDoc
using語句 - 文件表格結構(列、行、樣式)
- 注意頁首/頁尾內容和頁面欄位的使用
- 列出使用
document.Styles定義的自訂樣式 - 取得IronPDF許可證密鑰
套件變更
- 刪除
PdfSharp-MigraDoc套件 - 刪除
PdfSharp-MigraDoc-GDI套件 安裝IronPdfNuGet 套件: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 範本位置

