푸터 콘텐츠로 바로가기
마이그레이션 가이드

C#에서 MigraDoc에서 IronPDF로 마이그레이션하는 방법

MigraDoc에서 IronPDF로 마이그레이션하면 .NET PDF 워크플로우가 수작업으로 요소를 하나씩 구축해야 하는 장황한 프로그래밍 문서 모델에서 기존 웹 개발 기술을 활용하는 최신 HTML/CSS기반 접근 방식으로 전환됩니다. 이 가이드는 전문 .NET 개발자를 위해 MigraDoc의 독점적 문서 객체 모델의 가파른 학습 곡선을 제거하는 포괄적이며 단계별 마이그레이션 경로를 제공합니다.

왜 MigraDoc에서 IronPDF로 마이그레이션해야 하는가?

MigraDoc의 문제점

MigraDoc는 PDFsharp 위에 있는 레이아웃 엔진으로, PDFsharp 패키지에 의존하며 PDFsharp PdfDocument로 렌더링합니다. MIT 라이선스 하에 empira / PDFsharp-Team에 의해 유지 관리되고 있으며, 프로그래밍 생성을 위한 강력한 기능을 제공하지만 현대 개발 워크플로우에 영향을 미치는 근본적인 제한 사항이 있습니다:

  1. HTML 지원 없음: MigraDoc는 HTML을 직접 지원하지 않습니다. Document, Section, Paragraph, 그리고 Table 객체를 사용하여 요소별로 문서를 수동으로 구성해야 하며, 기존 HTML/CSS디자인을 활용할 수 없습니다.

  2. 독점 문서 모델: MigraDoc는 AddSection(), AddParagraph(), AddTable(), AddRow(), 그리고 AddCell() 같은 개념이 포함된 고유한 문서 모델을 학습해야 합니다. 이 가파른 학습 곡선은 웹 개발 배경이 있는 개발자에게 특히 어렵습니다.

  3. 제한적인 스타일링 옵션: MigraDoc는 강력한 문서 구조 관리 기능을 제공하지만, 그 스타일링 기능은 현대 웹 도구에 비해 부족합니다. Format.Font.Size, Format.Font.Bold, 그리고 Format.Alignment 같은 속성은 전체 CSS3에 비해 제한적입니다.

  4. 장황한 코드: 간단한 레이아웃을 만들기 위해서도 수십 줄의 코드가 필요합니다. 기본 테이블에 머리글을 추가하려면 15-20 줄의MigraDoc코드가 필요할 수 있습니다.

  5. JavaScript 지원 없음: MigraDoc는 동적 콘텐츠를 렌더링하거나 JavaScript를 실행할 수 없어 현대적인 차트와 상호작용 요소의 옵션을 제한합니다.

  6. 기본 차트: MigraDoc의 차트 기능은 Chart.js나 D3와 같은 현대적인JavaScript차트 라이브러리에 비해 제한적입니다.

MigraDocvsIronPDF비교

기능 MigraDoc IronPDF
콘텐츠 정의 프로그래밍 방식 (문서/섹션/단락) HTML/CSS
학습 곡선 어려움 (독점 DOM) 쉬움 (웹 기술)
스타일링 제한된 속성 전체 CSS3
JavaScript None 전체 Chromium 실행
수동 열/행 정의 HTML 와 CSS
차트 기본적인MigraDoc차트 모든JavaScript차트 라이브러리
이미지 수동 크기 조정/위치 설정 표준 HTML
반응형 레이아웃 지원되지 않음 플렉스박스, 그리드
라이선스 오픈 소스 (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.com에서 라이선스 키를 획득하세요

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 또는
Paragraph HTML

,

, 등

FormattedText HTML , , 등
Table HTML 또는 CSS
Row HTML
Column HTML
Cell HTML ,
PdfDocumentRenderer ChromePdfRenderer

메서드 매핑

MigraDoc 메서드 IronPDF 동등
document.AddSection() HTML 구조
section.AddParagraph(text) <p>text</p>
section.AddTable() <table>
table.AddColumn(width) CSS width 속성
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는 Document를 생성하고, Section를 추가하고, Paragraph를 추가하며, AddFormattedText()TextFormat.Bold를 사용하고, Format.Font.Size을 설정하고, 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

이후 (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 테이블 생성은 Table, Column, Row, Cell 계층 구조를 이해해야 합니다. AddColumn()로 열을 명시적으로 추가하고, AddRow()로 행을 생성하고, Cells[n]로 인덱스를 통해 셀을 접근하며, AddParagraph()로 내용을 추가해야 합니다. 테두리는 table.Borders.Width로 설정됩니다.

IronPDF는 모든 웹 개발자가 아는 표준 HTML 테이블 구문을 사용합니다. border='1' 속성은 테두리를 제공하며,

요소는 헤더 셀을 생성하고, 요소는 데이터 셀을 생성합니다. 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 헤더와 바닥글은 section.Headers.Primarysection.Footers.Primary 접근, 그 안에 단락 생성, AddText()로 텍스트 추가, AddPageField() 같은 특별한 방법으로 동적 콘텐츠 사용을 요구합니다. 정렬은 Format.Alignment 설정이 필요합니다.

IronPDF는 TextHeaderFooter을 사용하여 RenderingOptions.TextHeader / RenderingOptions.TextFooter에 헤더와 바닥글을 구성하며, LeftText, CenterText, RightText 영역을 포함합니다. {page} 자리표시는 현재 페이지 번호를 자동으로 삽입합니다. 더 풍부한 레이아웃을 위해 HtmlHeader / HtmlFooterHtmlHeaderFooter와 함께 사용하여 완전한 HTML/CSS지원을 제공합니다. 고급 옵션에 대해서는 헤더와 푸터 문서를 참조하세요.


중요한 마이그레이션 노트

페이지 번호 플레이스홀더 문법

헤더와 푸터에 가장 중요한 변화는 플레이스홀더 문법입니다:

//MigraDocfield methods:
footerPara.AddPageField();       // Current page
footerPara.AddNumPagesField();   // Total pages

//IronPDF placeholders:
"Page {page} of {total-pages}"
//MigraDocfield methods:
footerPara.AddPageField();       // Current page
footerPara.AddNumPagesField();   // Total pages

//IronPDF placeholders:
"Page {page} of {total-pages}"
' MigraDocfield 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");

//IronPDF pattern:
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");

//IronPDF pattern:
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
' MigraDoc pattern (DELETE):
Dim pdfRenderer As New PdfDocumentRenderer()
pdfRenderer.Document = document
pdfRenderer.RenderDocument()
pdfRenderer.PdfDocument.Save("output.pdf")

' IronPDF pattern:
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
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

마이그레이션 체크리스트

사전 마이그레이션

  • 모든MigraDocusing 문을 식별
  • 문서 테이블 구조(열, 행, 스타일링)를 문서화하세요
  • 헤더/푸터 콘텐츠 및 페이지 필드 사용을 기록하세요
  • document.Styles로 정의된 사용자 지정 스타일 목록 -IronPDF라이센스 키를 받으세요

패키지 변경 사항

  • PDFsharp-MigraDoc, PDFsharp-MigraDoc-GDI, PDFsharp-MigraDoc-WPF 패키지 제거
  • IronPdf NuGet Install-Package: dotnet add package IronPdf
  • 네임스페이스 가져오기 업데이트

코드 변경 사항

  • 시작 시 라이선스 키 구성 추가
  • Section을 HTML 구조로 대체
  • AddParagraph()을 HTML

    요소로 변환

  • Cell을 HTML 구조로 변환
  • AddPageField(){page} 자리표시자로 대체
  • AddNumPagesField(){total-pages} 자리표시자로 대체
  • Format 속성을 CSS 스타일로 변환
  • PdfDocumentRendererChromePdfRenderer으로 대체
  • 테스트

    • 기존과 새로운 PDF 간의 시각적 출력을 비교하세요
    • 페이지 나누기가 올바르게 작동하는지 확인하세요
    • 헤더/푸터 렌더링 및 페이지 번호를 확인하세요
    • 테이블 형식 및 테두리를 검증하세요
    • 복잡한 다중 페이지 문서로 테스트하세요

    마이그레이션 이후

    -MigraDoc관련 문서 제거

    • 팀 교육 자료 업데이트
    • 새 HTML 템플릿 위치 문서화

    참고해 주세요MigraDoc과 PDFSharp은 각 해당 소유자의 등록 상표입니다. 이 사이트는 empira Software GmbH와 관련이 없으며, 지지되지 않거나, 후원되지 않습니다. 모든 제품명, 로고 및 브랜드는 해당 소유자의 자산입니다. 비교는 정보 제공 목적으로만 사용되며, 작성 시점에 공개적으로 이용 가능한 정보를 반영합니다.

    Curtis Chau
    기술 문서 작성자

    커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

    커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

    아이언 서포트 팀

    저희는 주 5일, 24시간 온라인으로 운영합니다.
    채팅
    이메일
    전화해