C#でMigraDocからIronPDFに移行する方法
MigraDocからIronPDFへの移行は、あなたの.NET PDFワークフローを、手作業による要素ごとの構築を必要とする冗長なプログラムドキュメントモデルから、既存のWeb開発スキルを活用する最新のHTML/CSSベースのアプローチに変えます。 このガイドでは、プロの.NET開発者向けに、MigraDoc独自のドキュメント・オブジェクト・モデルの険しい学習曲線を解消する、包括的な移行パスを段階的に提供します。
なぜMigraDocからIronPDFに移行するのか
MigraDocの課題
MigraDocは、プログラムによるPDF生成には強力ですが、現代の開発ワークフローに影響を与える基本的な制限があります:
- HTML サポートなし:MigraDocは HTML を直接サポートしません。
Document、Section、Paragraph、Tableオブジェクトを使用して、要素ごとに手作業でドキュメントを作成する必要があります。
2.独自のドキュメント モデル:MigraDocでは、 AddSection() 、 AddParagraph() 、 AddTable() 、 AddRow() 、 AddCell()などの概念を含む独自のドキュメント モデルを学習する必要があります。 この急な学習曲線は、ウェブ開発の経歴を持つ開発者にとって特に難しいものです。
3.スタイル オプションの制限:MigraDocは強力なドキュメント構造管理機能を提供しますが、そのスタイル機能は最新の Web ツールと比較すると控えめです。 Format.Font.Size、Format.Font.Bold、Format.Alignment などのプロパティは、完全な CSS3 に比べて制限されています。
4.冗長なコード:単純なレイアウトを作成する場合でも、数十行のコードが必要になります。 ヘッダー付きの基本的な表であれば、15~20行のMigraDocコードが必要です。
- JavaScript をサポートしていません:MigraDocは動的なコンテンツをレンダリングしたり、JavaScript を実行したりできないため、最新のチャートやインタラクティブな要素のオプションが制限されます。
6.チャートは基本的:MigraDocのチャート機能は、Chart.js や D3 などの最新のJavaScriptチャート ライブラリと比較すると制限されています。
MigraDocとIronPDFの比較
| フィーチャー | MigraDoc | IronPDF |
|---|---|---|
| コンテンツの定義 | プログラム (ドキュメント/セクション/パラグラフ) | HTML/CSS |
| 学習曲線 | Steep (プロプライエタリ DOM) | 簡単(ウェブスキル) |
| スタイリング | 限定プロパティ | 完全なCSS3 |
| JavaScript | なし | Chromiumの完全な実行 |
| 表 | 手動による列/行の定義 | HTMLの<table>とCSS |
| チャート | MigraDocの基本チャート | あらゆるJavaScriptチャートライブラリ |
| 画像 | マニュアルサイジング/ポジショニング | 標準的なHTML <img> |
| レスポンシブレイアウト | サポートされていません | フレックスボックス、グリッド |
| ライセンス | オープンソース(MIT) | 商用 |
2025年、2026年まで.NET 10とC# 14の導入を計画しているチームにとって、IronPDFは開発者が独自のドキュメントモデルを学ぶのではなく、慣れ親しんだHTML/CSSスキルを使用することを可能にする、将来を見据えた基盤を提供します。
マイグレーションの複雑さの評価
機能別の見積もり作業
| フィーチャー | 移行の複雑さ | ノート |
|---|---|---|
| シンプルなテキスト | 低レベル | パラグラフ → HTML要素 |
| 表 | 低レベル | 表/行/セル → HTML <コード><表><コード |
| ヘッダー/フッター | 低レベル | セクション.ヘッダー → RenderingOptions |
| スタイル | 中規模 | フォーマットプロパティ → CSSクラス |
| 画像 | 低レベル | AddImage → HTML <コード> |
| チャート | 中規模 | JavaScriptライブラリが必要です。 |
パラダイムシフト
このMigraDoc移行における基本的な変化は、プログラムによるドキュメント構築からHTML ファーストのレンダリングへの変化です。
MigraDoc: ドキュメント → 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.comからライセンスキーを取得します。
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";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 同等物 | ノート |
|---|---|---|
| <コード>ドキュメント</コード | <コード>ChromePdfRenderer</コード | ドキュメントではなく、レンダラーを使用してください |
| <コード>セクション</コード | HTML <body>または<div>を使用してください。 | 構造コンテナ |
| <コード>段落</コード | HTML <p>、<h1>など。 | テキスト要素 |
| <コード>フォーマットテキスト</コード | HTML <span>、<strong>など。 | インラインフォーマット |
| <コード>表</コード | HTML <コード><テーブル><コード></コード | CSSスタイリング |
| <コード>行</コード | HTML <tr> | 表行 |
| <コード>コラム</コード | HTML <col>またはCSS | コラムのスタイル |
| <コード>セル</コード | HTML <td>、<th>。 | 表セル |
| <コード>PdfDocumentRenderer</コード | <コード>ChromePdfRenderer</コード | メインレンダラー |
メソッドマッピング
| MigraDocメソッド | IronPDF 同等物 | ノート |
|---|---|---|
document.AddSection(). | HTML構造 | <div>または<section>を使用してください。 |
section.AddParagraph(text)を追加します。 | <p>text</p> | HTML段落 |
section.AddTable()のようにします。 | <table> | HTMLテーブル |
table.AddColumn(width)のようにします。 | CSS widthプロパティ | <th>または<td>上のスタイル |
table.AddRow(). | <tr> | HTML行 |
row.Cells[n].AddParagraph()。 | <td>content</td> | HTMLセル |
renderer.RenderDocument()。 | RenderHtmlAsPdf(html)を使用してください。 | PDFへのレンダリング |
pdfDocument.Save(パス)。 | pdf.SaveAs(path)のようにします。 | ファイルを保存 |
プレースホルダーのマッピング(ヘッダー/フッター)
| MigraDocメソッド | IronPDF プレースホルダー | ノート |
|---|---|---|
| <コード>AddPageField()</コード | <コード>{ページ}</コード | 現在のページ番号 |
AddNumPagesField()。 | <コード>{総ページ数}</コード | 総ページ数 |
| <コード>AddDateField()</コード | {date}<//code> | 現在の日付 |
コード移行の例
例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");
}
}翻訳後(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");
}
}この例はMigraDocとIronPDFの基本的な違いを示しています。 MigraDocでは、Documentを作成し、Sectionを追加し、Paragraphを追加し、AddFormattedText()をTextFormat.Boldを使用し、Format.Font.Sizeを設定し、PdfDocumentRendererを作成し、ドキュメントを割り当て、RenderDocument()を呼び出し、最後に保存します。 複数のオブジェクトを含む10行以上のコードです。
IronPdfは3行で同じ結果を達成します: レンダラーを作成し、HTMLをレンダリングし、保存します。 HTMLの<h1>タグは、当然、太字で大きな見出しのスタイルを提供します。 その他のレンダリングオプションについては、HTML to PDF documentationを参照してください。
例 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");
}
}翻訳後(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");
}
}MigraDocのテーブル作成では、Table、Column、Row、Cellの階層を理解する必要があります。 AddColumn()で明示的に列を追加し、AddRow()で行を作成し、Cells[n]でインデックスによってセルにアクセスし、AddParagraph()でコンテンツを追加しなければなりません。 ボーダーは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");
}
}翻訳後(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");
}
}MigraDocのヘッダーとフッターは、section.Headers.Primaryとsection.Footers.Primaryにアクセスし、その中に段落を作成し、AddText()でテキストを追加し、動的コンテンツのためにAddPageField()のような特別なメソッドを使用する必要があります。 アライメントには、Format.Alignmentの設定が必要です。
IronPDFはシンプルなAddTextHeader()とAddTextFooter()メソッドをPdfDocumentオブジェクトに提供します。 {page}プレースホルダは、現在のページ番号を自動的に挿入します。 より複雑なヘッダーについては、HTML/CSSを完全にサポートするHtmlHeaderFooterを使用できます。 高度なオプションについては、headers and footers documentationを参照してください。
重要な移行に関する注意事項
ページ番号プレースホルダーの構文
ヘッダーとフッターの最も重要な変更点は、プレースホルダーの構文です:
//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}"フォーマット プロパティを 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はさまざまな単位を使用します; IronPDFのマージンにはミリメートルを使用しています:
- "1cm = 10mm
- "1in" = 25.4mm
- "72pt" = 25.4mm
// 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");トラブルシューティング
問題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);課題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();問題 4: AddPageField が動作しない
問題: AddPageField()メソッドが存在しません。
解決策:IronPDFプレースホルダー構文を使用します。
// MigraDoc
footerPara.AddPageField();
// IronPDF
pdf.AddTextFooter("Page {page}");// MigraDoc
footerPara.AddPageField();
// IronPDF
pdf.AddTextFooter("Page {page}");移行チェックリスト
移行前
- ステートメント
usingすべてのMigraDocを識別する - ドキュメントの表構造(列、行、スタイル)
- ヘッダー/フッターの内容とページフィールドの使用状況をメモします
document.Stylesで定義されたカスタム スタイルを一覧表示します。- IronPDFライセンスキーを取得する
パッケージの変更
PdfSharp-MigraDocパッケージを削除するPdfSharp-MigraDoc-GDIパッケージを削除するIronPdfNuGet パッケージをインストールします:dotnet add package IronPdf- 名前空間のインポートを更新する
コードの変更
- 起動時にライセンスキー設定を追加する -<コード>ドキュメント</コード/<コード>セクション</コードHTML構造に置き換える
AddParagraph()を HTML に変換する<p>要素 -<コード>表</コード/<コード>行</コード/CellをHTMLに変換する<table>構造AddPageField()を{page}プレースホルダーに置き換えますAddNumPagesField()を{total-pages}プレースホルダーに置き換えますFormatプロパティをCSSスタイルに変換する -<コード>PdfDocumentRenderer</コードChromePdfRendererに置き換えます
テスティング
- 古いPDFと新しいPDFの視覚的な出力を比較する
- ページ区切りが正しく機能していることを確認する
- ヘッダー/フッターのレンダリングとページ番号を確認する
- 表の書式と境界線を検証する
- 複雑な複数ページのドキュメントでテストする
移行後
- MigraDoc関連のドキュメントを削除する
- チームのトレーニング資料を更新する
- 新しい HTML テンプレートの場所を文書化する






