フッターコンテンツにスキップ
ビデオ

How to Convert XML to PDF Using C#

MigraDocからIronPDFへの移行は、あなた for .NET PDFワークフローを、手作業による要素ごとの構築を必要とする冗長なプログラムドキュメントモデルから、既存のWeb開発スキルを活用する最新のHTML/CSSベースのアプローチに変えます。 このガイドでは、プロ for .NET開発者向けに、MigraDoc独自のドキュメント・オブジェクト・モデルの険しい学習曲線を解消する、包括的な移行パスを段階的に提供します。

なぜMigraDocからIronPDFに移行するのか

MigraDocの課題

MigraDocはPDFsharpの上に構築されたレイアウトエンジンであり、PDFsharpパッケージに依存し、PDFsharp PdfDocumentにレンダリングします。 MIT ライセンスの元で empira / PDFsharp-Team によって管理され、プログラム的な生成に強力です。しかし、現代の開発ワークフローに影響を与える基本的な制限があります:

  1. HTML サポートなし:MigraDocは HTML を直接サポートしません。 ドキュメントを手動で要素ごとにTableオブジェクトを使用して構築する必要があり、既存のHTML/CSSデザインを活用することはできません。

  2. 独自のドキュメントモデル: MigraDocではAddCell()といった概念を持つ独自のドキュメントモデルを学ぶ必要があります。 この急な学習曲線は、ウェブ開発の経歴を持つ開発者にとって特に難しいものです。

3.スタイル オプションの制限:MigraDocは強力なドキュメント構造管理機能を提供しますが、そのスタイル機能は最新の Web ツールと比較すると控えめです。 プロパティFormat.Alignmentは、完全なCSS3と比較すると制限があります。

4.冗長なコード:単純なレイアウトを作成する場合でも、数十行のコードが必要になります。 ヘッダー付きの基本的な表であれば、15~20行のMigraDocコードが必要です。

  1. JavaScript をサポートしていません:MigraDocは動的なコンテンツをレンダリングしたり、 JavaScriptを実行したりできないため、最新のチャートやインタラクティブな要素のオプションが制限されます。

6.チャートは基本的:MigraDocのチャート機能は、Chart.js や D3 などの最新 for JavaScriptチャート ライブラリと比較すると制限されています。

MigraDocとIronPDFの比較

フィーチャー MigraDoc IronPDF
コンテンツの定義 プログラム (ドキュメント/セクション/パラグラフ) HTML/CSS
学習曲線 Steep (プロプライエタリ DOM) 簡単(ウェブスキル)
スタイリング 限定プロパティ 完全なCSS3
JavaScript None Chromiumの完全な実行
手動による列/行の定義 HTML <table> with CSS
チャート MigraDocの基本チャート あらゆるJavaScriptチャートライブラリ
画像 マニュアルサイジング/ポジショニング Standard HTML <img>
レスポンシブレイアウト サポートされていません フレックスボックス、グリッド
ライセンス オープンソース(MIT) 商用

モダン .NET をターゲットにするチームには、IronPDF は開発者が独自のドキュメント モデルを学習するのではなく、既知のHTML/CSSスキルを使用できるようにします。


マイグレーションの複雑さの評価

機能別の見積もり作業

フィーチャー 移行の複雑さ
シンプルなテキスト 低レベル
低レベル
ヘッダー/フッター 低レベル
スタイル 中規模
画像 低レベル
チャート 中規模

パラダイムシフト

このMigraDoc移行における基本的な変化は、プログラムによるドキュメント構築からHTML ファーストのレンダリングへの変化です。

MigraDoc: ドキュメント → 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 (package IDs are case-sensitive on nuget.org)
dotnet remove package PDFsharp-MigraDoc
dotnet remove package PDFsharp-MigraDoc-GDI
dotnet remove package PDFsharp-MigraDoc-WPF

# Install IronPDF
dotnet add package IronPdf
# RemoveMigraDocpackages (package IDs are case-sensitive on nuget.org)
dotnet remove package PDFsharp-MigraDoc
dotnet remove package PDFsharp-MigraDoc-GDI
dotnet remove package PDFsharp-MigraDoc-WPF

# 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> or <div>
Paragraph HTML <h1>など
FormattedText HTML <strong>など
Table HTML <table>
Row HTML <tr>
Column HTML <col> or CSS
Cell HTML <th>
PdfDocumentRenderer ChromePdfRenderer

メソッドマッピング

MigraDocメソッド IronPDF 同等物
document.AddSection() HTML構造
section.AddParagraph(text) <p>text</p>
section.AddTable() <table>
table.AddColumn(width) CSS width property
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

翻訳後(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はAddFormattedText() with 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");
    }
}
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

翻訳後(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のテーブル作成には、Cell階層の理解が必要です。 列をAddParagraph()でコンテンツを追加する必要があります。 境界線はtable.Borders.Widthで設定されます。

IronPDFはウェブ開発者なら誰でも知っている標準的なHTMLテーブル構文を使用しています。 <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

翻訳後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter
        {
            CenterText = "Document Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter
        {
            CenterText = "Page {page}"
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter
        {
            CenterText = "Document Header"
        };
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter
        {
            CenterText = "Page {page}"
        };

        var pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>");
        pdf.SaveAs("header-footer.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
            .CenterText = "Document Header"
        }
        renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
            .CenterText = "Page {page}"
        }

        Dim pdf = renderer.RenderHtmlAsPdf("<h1>Main content of the document</h1>")
        pdf.SaveAs("header-footer.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

MigraDocのヘッダーとフッターはAddPageField()のような特別な方法を使用して動的なコンテンツを作成する必要があります。 配置はFormat.Alignmentの設定を必要とします。

IronPDFはRenderingOptions.TextHeader / RightText地域を持っています。 {page}プレースホルダーは現在のページ番号を自動的に挿入します。 よりリッチなレイアウトのために、HtmlHeader / HtmlHeaderFooterとの完全なHTML/CSSサポートを使用してください。 高度なオプションについては、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}"
' 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のマージンにはミリメートルを使用しています:

  • "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;">
' 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: ドキュメント/セクションが見つかりません

問題: SectionクラスはIronPDFに存在しません。

解決策: 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
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    CenterText = "Page {page}"
};
// MigraDoc
footerPara.AddPageField();

// IronPDF
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    CenterText = "Page {page}"
};
' MigraDoc
footerPara.AddPageField()

' IronPDF
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .CenterText = "Page {page}"
}
$vbLabelText   $csharpLabel

移行チェックリスト

移行前

  • すべてのMigraDoc using文を特定する
  • ドキュメントの表構造(列、行、スタイル)
  • ヘッダー/フッターの内容とページフィールドの使用法をメモする
  • document.Stylesで定義されたカスタムスタイルをリストアップする
  • IronPDFライセンスキーを取得する

パッケージの変更

  • PDFsharp-MigraDoc-WPFパッケージを削除する
  • IronPdf NuGetパッケージをインストールします: dotnet add package IronPdf
  • 名前空間のインポートを更新する

コードの変更

  • 起動時にライセンスキー設定を追加する
  • SectionをHTML構造に置き換える
  • AddParagraph()をHTML <p>要素に変換する
  • CellをHTML <table>構造に変換する
  • {page}プレースホルダーに置き換える
  • {total-pages}プレースホルダーに置き換える
  • FormatプロパティをCSSスタイルに変換する
  • ChromePdfRendererに置き換える

テスティング

  • 古いPDFと新しいPDFの視覚的な出力を比較する
  • ページ区切りが正しく機能していることを確認する
  • ヘッダー/フッターのレンダリングとページ番号を確認する
  • 表の書式と境界線を検証する
  • 複雑な複数ページのドキュメントでテストする

移行後

  • MigraDoc関連のドキュメントを削除する
  • チームのトレーニング資料を更新する
  • 新しい HTML テンプレートの場所を文書化する

ご注意MigraDocおよびPDFSharpはそれぞれの所有者の登録商標です。 このサイトはempira Software GmbHとは提携、推奨、または支援されていません。 すべての製品名、ロゴ、およびブランドは各所有者の所有物です。 比較は情報提供のみを目的としており、執筆時点で公開されている情報を反映しています。

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね