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

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

DynamicPDF에서 IronPDF로 마이그레이션해야 하는 이유는?

DynamicPDF의 제품 분할이 마이그레이션의 주요 요인입니다. 라이선스 모델을 이해하는 것은 현재 구현의 실제 비용을 평가하는 데 필수적입니다.

제품 분할 문제

DynamicPDF는 개별 제품과 개별 라이선스로 판매됩니다:

  1. DynamicPDF Generator: 처음부터 PDF 생성
  2. DynamicPDF Merger: 기존 PDF 병합, 분할 및 조작(별도 구매)
  3. DynamicPDF Core Suite: Generator와 Merger 결합
  4. DynamicPDF ReportWriter: 보고서 생성
  5. DynamicPDF HTML Converter: HTML을 PDF로 변환(별도 추가 기능)
  6. DynamicPDF Print Manager: 프로그래밍 방식으로 PDF 인쇄

완전한 PDF 솔루션을 위해서는 DynamicPDF로 3-5개의 개별 라이선스가 필요합니다. IronPDF는 모든 것을 한 패키지에 포함시킵니다.

아키텍처 비교

측면 DynamicPDF IronPDF
제품 모델 단편화된 (5개 이상의 제품) 모든 기능 통합된 라이브러리
라이선스 여러 라이선스 필요 단일 라이선스
HTML to PDF 별도 애드온 구매 필요 내장, Chromium 기반
CSS 지원 제한됨 (애드온 요구) 전체 CSS3와 Flexbox/Grid 제공
API 스타일 좌표 기반 포지셔닝 HTML/CSS + 조작 API
학습 곡선 가파름 (여러 API) 완만함 (웹 기술)
최신 .NET .NET Standard 2.0 .NET 6/7/8/9+ 네이티브

주요 마이그레이션 혜택

  1. 단일 패키지: 하나의 NuGet 패키지가 3-5개의DynamicPDF패키지를 대체함
  2. 현대적 렌더링: Chromium 엔진 대 레거시 렌더링
  3. 웹 기술: 좌표 기반 위치 지정 대신 HTML/CSS 사용
  4. 간편한 API: 코드가 적고, 읽기 쉽고, 유지 보수가 간편함
  5. 추가 구매 없음: HTML, 병합, 보안 모두 포함

이전 준비

필수 조건

환경이 다음 요구 사항을 충족하는지 확인하세요:

  • .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ 또는 VS Code와 C# 확장
  • NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)

DynamicPDF사용 감사

해결책 디렉토리에서 이 명령을 실행하여 모든DynamicPDF참조를 식별합니다:

# Find allDynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
# Find allDynamicPDFreferences
grep -r "ceTe.DynamicPDF\|DynamicPDF" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep -i dynamic
SHELL

찾을 일반 패키지:

  • ceTe.DynamicPDF.CoreSuite.NET
  • ceTe.DynamicPDF.Generator.NET
  • ceTe.DynamicPDF.Merger.NET
  • ceTe.DynamicPDF.HtmlConverter.NET

패러다임 변화 이해

DynamicPDF에서 IronPDF로 마이그레이션할 때 가장 큰 변화는 문서 생성에 대한 기본적인 접근 방식입니다. DynamicPDF는 특정 X,Y 좌표에 요소를 배치하는 좌표 기반 위치 지정을 사용합니다. IronPDF는 웹 기술을 사용하여 디자인하는 HTML/CSS 렌더링을 사용합니다.

이 패러다임 전환은 Label, TextAreaTable2 요소를 HTML 등가물로 변환하는 것을 의미합니다. 이는 일반적으로 더 읽기 쉽고 유지 관리하기 쉬운 코드로 이어집니다.

단계별 마이그레이션 프로세스

1단계: NuGet 패키지 업데이트

모든DynamicPDF패키지를 제거하고 IronPDF를 설치합니다:

# RemoveDynamicPDFpackages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET

# Install IronPDF
dotnet add package IronPdf
# RemoveDynamicPDFpackages
dotnet remove package ceTe.DynamicPDF.CoreSuite.NET
dotnet remove package ceTe.DynamicPDF.Generator.NET
dotnet remove package ceTe.DynamicPDF.Merger.NET
dotnet remove package ceTe.DynamicPDF.HtmlConverter.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

2단계: 네임스페이스 참조 업데이트

DynamicPDF 네임스페이스를 IronPDF로 대체합니다:

// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;
// Remove these
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;
using ceTe.DynamicPDF.Conversion;

// Add this
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

3단계: 라이선스 구성

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

완전한 API 마이그레이션 참조

핵심 클래스 매핑

DynamicPDF클래스 IronPDF 동등
Document ChromePdfRenderer
Document PdfDocument
Page 페이지 나눔이 있는 HTML <div>
MergeDocument PdfDocument.Merge()
HtmlConverter ChromePdfRenderer

페이지 요소를 HTML에 매핑하기

DynamicPDF PageElement IronPDF/HTML 동등한 요소
Label <p>, <span>, <div>
TextArea CSS와 함께 <div>, <p>
Image <img> 태그
Table2 HTML <table>
PageNumberingLabel {page} / {total-pages} 플레이스홀더

주요 API 매핑

DynamicPDF IronPDF
Document + Page ChromePdfRenderer
Label, TextArea HTML <p>, <div>
Table2 HTML <table>
MergeDocument PdfDocument.Merge()
HtmlConverter ChromePdfRenderer
document.Draw() pdf.SaveAs() / pdf.BinaryData
PageNumberingLabel %%CP%% {page} 플레이스홀더

코드 마이그레이션 예제

HTML을 PDF로 변환

HTML에서 PDF로의 변환은 IronPDF의 내장된 Chromium 렌더링과 달리 별도의 HtmlConverter 애드온이 필요한 DynamicPDF의 요구 사항을 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Conversion;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        HtmlConverter converter = new HtmlConverter(html);
        converter.Convert("output.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Conversion

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim converter As New HtmlConverter(html)
        converter.Convert("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim html As String = "<html><body><h1>Hello World</h1></body></html>"
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF의 ChromePdfRenderer는 별도의 애드온 구매 없이도 전체 CSS3 지원과 Chromium 기반 렌더링을 제공합니다. 더 많은 옵션을 보려면 HTML to PDF 문서를 참조하세요.

여러 PDF 병합

PDF 병합은 Merger 제품 라이선스가 필요한 DynamicPDF의 MergeDocument 클래스와 IronPDF의 내장된 정적 Merge 메서드 간의 차이점을 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.Merger;

class Program
{
    static void Main()
    {
        MergeDocument document = new MergeDocument("document1.pdf");
        document.Append("document2.pdf");
        document.Draw("merged.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.Merger

Class Program
    Shared Sub Main()
        Dim document As New MergeDocument("document1.pdf")
        document.Append("document2.pdf")
        document.Draw("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")
        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF의 정적 Merge 메서드는 여러 PdfDocument 객체를 직접 수락합니다. 더 많은 옵션은 PDF 병합 문서를 참조하십시오.

PDF에 텍스트 추가

텍스트 배치는 DynamicPDF의 좌표 기반 Label 요소에서 IronPDF의 HTML 기반 TextStamper로의 패러다임 전환을 보여줍니다.

DynamicPDF 구현:

// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}
// NuGet: Install-Package ceTe.DynamicPDF.CoreSuite.NET
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;

class Program
{
    static void Main()
    {
        Document document = new Document();
        Page page = new Page(PageSize.Letter);
        Label label = new Label("Hello from DynamicPDF!", 0, 0, 504, 100);
        page.Elements.Add(label);
        document.Pages.Add(page);
        document.Draw("output.pdf");
    }
}
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements

Class Program
    Shared Sub Main()
        Dim document As New Document()
        Dim page As New Page(PageSize.Letter)
        Dim label As New Label("Hello from DynamicPDF!", 0, 0, 504, 100)
        page.Elements.Add(label)
        document.Pages.Add(page)
        document.Draw("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF 구현:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>");
        var textStamper = new TextStamper()
        {
            Text = "Hello from IronPDF!",
            FontSize = 20,
            VerticalAlignment = VerticalAlignment.Top
        };
        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf("<html><body></body></html>")
        Dim textStamper As New TextStamper() With {
            .Text = "Hello from IronPDF!",
            .FontSize = 20,
            .VerticalAlignment = VerticalAlignment.Top
        }
        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF의 TextStamper는 좌표 기반 배치 대신 정렬 기반의 위치 설정을 제공하여 레이아웃이 다른 페이지 크기에서도 더 적응 가능합니다. 더 많은 옵션은 워터마크 및 스탬핑 문서를 참조하세요.

전체 문서 생성 예제

이 종합 예제는 복수의 요소를 가진DynamicPDF문서를 IronPDF의 HTML 접근 방식으로 변환하는 방법을 보여줍니다.

DynamicPDF 구현:

using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
using ceTe.DynamicPDF;
using ceTe.DynamicPDF.PageElements;
using ceTe.DynamicPDF.Merger;

// Generation (requires Generator license)
Document document = new Document();
Page page = new Page(PageSize.A4);
Label title = new Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18);
title.Align = TextAlign.Center;
page.Elements.Add(title);

Table2 table = new Table2(40, 60, 515, 500);
// ... complex table setup with columns, rows, cells...
page.Elements.Add(table);
document.Pages.Add(page);
document.Draw("invoice.pdf");

// Merging (requires Merger license)
MergeDocument mergeDoc = new MergeDocument("cover.pdf");
mergeDoc.Append("invoice.pdf");
mergeDoc.Draw("final.pdf");
Imports ceTe.DynamicPDF
Imports ceTe.DynamicPDF.PageElements
Imports ceTe.DynamicPDF.Merger

' Generation (requires Generator license)
Dim document As New Document()
Dim page As New Page(PageSize.A4)
Dim title As New Label("Invoice Report", 0, 0, 595, 30, Font.HelveticaBold, 18)
title.Align = TextAlign.Center
page.Elements.Add(title)

Dim table As New Table2(40, 60, 515, 500)
' ... complex table setup with columns, rows, cells...
page.Elements.Add(table)
document.Pages.Add(page)
document.Draw("invoice.pdf")

' Merging (requires Merger license)
Dim mergeDoc As New MergeDocument("cover.pdf")
mergeDoc.Append("invoice.pdf")
mergeDoc.Draw("final.pdf")
$vbLabelText   $csharpLabel

IronPDF 구현:

using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// All features in one library
var html = @"
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>";

var invoice = renderer.RenderHtmlAsPdf(html);

// Merging included - no separate license
var cover = PdfDocument.FromFile("cover.pdf");
var final = PdfDocument.Merge(cover, invoice);
final.SaveAs("final.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' All features in one library
Dim html As String = "
<html>
<head>
    <style>
        body { font-family: Helvetica, sans-serif; padding: 40px; }
        h1 { text-align: center; font-size: 18pt; }
        table { width: 100%; border-collapse: collapse; margin-top: 20px; }
        th, td { border: 1px solid #ccc; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice Report</h1>
    <table>
        <tr><th>Product</th><th>Qty</th><th>Price</th></tr>
        <tr><td>Widget</td><td>10</td><td>$99.99</td></tr>
    </table>
</body>
</html>"

Dim invoice As PdfDocument = renderer.RenderHtmlAsPdf(html)

' Merging included - no separate license
Dim cover As PdfDocument = PdfDocument.FromFile("cover.pdf")
Dim final As PdfDocument = PdfDocument.Merge(cover, invoice)
final.SaveAs("final.pdf")
$vbLabelText   $csharpLabel

중요한 마이그레이션 노트

좌표 기반에서 HTML/CSS 위치 지정으로 전환

근본적인 패러다임 전환은 X,Y 좌표 위치를 CSS 기반 레이아웃으로 변환해야 합니다:

//DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
//DynamicPDF- coordinate-based
var label = new Label("Hello World", 100, 200, 300, 50);

//IronPDF- CSS positioning (if absolute positioning needed)
var html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>";

//IronPDF- preferred approach (flow-based)
var html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>";
' DynamicPDF- coordinate-based
Dim label = New Label("Hello World", 100, 200, 300, 50)

' IronPDF- CSS positioning (if absolute positioning needed)
Dim html = "<div style='position:absolute; left:100px; top:200px; width:300px;'>Hello World</div>"

' IronPDF- preferred approach (flow-based)
html = "<div style='margin-left:100px; margin-top:200px;'>Hello World</div>"
$vbLabelText   $csharpLabel

페이지 번호 매기기 구문

DynamicPDF와 IronPDF는 페이지 번호를 위한 서로 다른 placeholder 구문을 사용합니다:

//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

//IronPDFplaceholders
"Page {page} of {total-pages}"
//DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

//IronPDFplaceholders
"Page {page} of {total-pages}"
'DynamicPDFplaceholders
"Page %%CP%% of %%TP%%"

'IronPDFplaceholders
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

머리말과 바닥글

DynamicPDF Template 요소를IronPDFHtmlHeaderFooter로 변환:

//IronPDFheader/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
//IronPDFheader/footer
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};
'IronPDFheader/footer
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
    .HtmlFragment = "<div style='text-align:center;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}
$vbLabelText   $csharpLabel

더 많은 헤더/푸터 옵션은 헤더 및 푸터 문서를 참조하세요.

보안 설정

//IronPDFsecurity
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
//IronPDFsecurity
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.UserPassword = "userPassword";
'IronPDFsecurity
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.UserPassword = "userPassword"
$vbLabelText   $csharpLabel

포괄적인 보안 옵션은 암호화 문서를 참조하십시오.

마이그레이션 후 점검 목록

코드 마이그레이션을 완료한 후, 다음을 확인하십시오:

  • 생성된 PDF의 시각적 비교
  • 텍스트 위치 및 레이아웃 확인
  • 표 렌더링 및 오버플로우 테스트
  • 모든 페이지의 헤더/푸터 확인
  • 양식 채우기 기능 테스트
  • 보안/암호화 확인
  • 성능 벤치마킹
  • 사용하지 않는DynamicPDF라이선스 파일 제거
  • 문서 업데이트

PDF 인프라의 미래 대비

.NET 10이 다가오고 C# 14가 새로운 언어 기능을 도입함에 따라, 현대 .NET 패턴을 수용하는 PDF 라이브러리를 선택하면 장기적인 호환성을 보장합니다. IronPDF의 .NET 6/7/8/9+에 대한 네이티브 지원은 프로젝트가 2025년과 2026년까지 확장됨에 따라 명확한 길을 제공합니다—여러 제품 라이선스를 관리하거나 분리된 API를 탐색하는 복잡성 없이 말이죠.

추가 리소스


DynamicPDF에서 IronPDF로의 이전은 여러 제품 라이선스를 관리하는 복잡성을 제거하면서 현대적인 Chromium 기반 렌더링과 전체 CSS3 지원을 제공합니다. 좌표 기반 위치 지정에서 HTML/CSS 디자인으로의 전환은 일반적으로 더 유지보수가 용이한 코드로 이어지며, 익숙한 웹 기술을 활용합니다.

커티스 차우
기술 문서 작성자

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

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

아이언 서포트 팀

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