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

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

PDF Duo .NET에서 IronPDF로의 마이그레이션은 명확한 유지 관리 상태가 불분명한 불명확하고 문서화가 부족한 라이브러리에서 안정적이고 잘 문서화되며 적극적으로 유지 관리되는 솔루션으로 .NET PDF 워크플로를 이동합니다. 이 가이드는 포기된 라이브러리와 관련된 위험을 제거하면서 PDF Duo는 제공할 수 없는 고급 기능에 액세스할 수 있는 포괄적이고 단계별 마이그레이션 경로를 제공합니다.

왜 PDF Duo에서 IronPDF로 마이그레이션해야 하는가

PDF Duo 위험 문제

PDF Duo .NET은 .NET 생태계에서 찾기 어렵고 잘 알려지지 않은 라이브러리입니다. 간단함을 추구하는 개발자에게 호소력을 가졌을지 모르지만, 이 라이브러리의 불분명성은 프로덕션 애플리케이션에 중대한 도전을 제기합니다:

  1. 불분명한 기원: 입증 가능한 회사 후원이 없는 알 수 없는 개발자. GitHub 저장소나 소스 코드가 보이지 않고, 제한된 NuGet 다운로드 통계와 불확실한 라이선스 조건이 있습니다.

  2. 문서 부족: 신뢰할 수 있는 정보를 찾기 거의 불가능합니다. 공식적인 API 참조가 없으며, 드문드문한 커뮤니티 예와 공식 튜토리얼이나 가이드가 없습니다. PDF Duo를 사용하려는 모든 시도는 신뢰할 수 있는 문서의 부족으로 인해 방해받습니다.

  3. 포기되거나 비활성화된 상태: 드문드문하거나 업데이트가 없는 것이 방치의 징후를 드러냅니다. 지원 포럼에 2019년의 게시물이 응답 없이 있습니다. 포기의 매우 실제적인 위험은 중요한 프로젝트에 대한 실행 가능성을 위협합니다.

  4. 제한된 기능: 기본적인 기능만—간단한 HTML을 PDF로 변환하고 기본적인 PDF 병합만 있으며, 양식, 보안 또는 워터마크와 같은 고급 기능이 없습니다.

  5. 알 수 없는 렌더링 엔진: 내부에 대해 명확한 정보가 없습니다. CSS/JavaScript 지원은 알 수 없으며, 렌더링 품질은 예측 불가능하고 모던 웹 기능 지원이 불확실합니다.

  6. 지원 위험: 문제가 발생할 때 해결 방법이 없습니다. 전문적인 지원도 없고, 도움을 줄 커뮤니티도 없으며, 포기의 완전한 위험이 있습니다.

PDF Duo와IronPDF비교

측면 PDF Duo .NET IronPDF
유지보수 알 수 없음/비활성 적극적인 정기 업데이트
문서화 희박/누락 포괄적
지원 없음 전문적인 지원 팀
Community ~0명 사용자 4100만+ NuGet 다운로드
렌더링 알 수 없는 엔진 최신 크로뮴
기능 기초적인 풀 기능
안정성 알 수 없음 생산에서 검증됨
라이센스 불분명 투명

.NET 10과 C# 14를 2025년과 2026년에 도입할 계획인 팀에게 IronPDF는 적극적인 개발과 포괄적인 문서화를 통해 안정적인 기반을 제공하며, 포기된 라이브러리에 의존해야 하는 불확실성을 제거합니다.


시작하기 전에

필수 조건

  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 패키지 변경 사항

# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# Install IronPDF
dotnet add package IronPdf
# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# 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

PDF Duo 사용 여부 식별

# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
SHELL

완전한 API 참조

네임스페이스 변경

PDF Duo .NET IronPDF
using PDFDuo; using IronPdf;
using PDFDuo.Document; using IronPdf;
using PDFDuo.Rendering; using IronPdf.Rendering;
using PDFDuo.Settings; using IronPdf;

HTML을 PDF로 변환 매핑

PDF Duo .NET IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
converter.ConvertHtmlString(html, path) renderer.RenderHtmlAsPdf(html).SaveAs(path)
converter.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url).SaveAs(path)
converter.ConvertFile(htmlPath, pdfPath) renderer.RenderHtmlFileAsPdf(htmlPath).SaveAs(pdfPath)

페이지 구성 매핑

PDF Duo .NET IronPDF
settings.PageSize = PageSize.A4 RenderingOptions.PaperSize = PdfPaperSize.A4
settings.PageSize = PageSize.Letter RenderingOptions.PaperSize = PdfPaperSize.Letter
settings.Orientation = Landscape RenderingOptions.PaperOrientation = Landscape
new Margins(top, right, bottom, left) 개별 여백 속성

여백 매핑

PDF Duo .NET IronPDF
new Margins(top, right, bottom, left) 개별 속성
margins.Top RenderingOptions.MarginTop
margins.Right RenderingOptions.MarginRight
margins.Bottom RenderingOptions.MarginBottom
margins.Left RenderingOptions.MarginLeft

문서 작업 매핑

PDF Duo .NET IronPDF
PDFDocument.Load(path) PdfDocument.FromFile(path)
document.Save(path) pdf.SaveAs(path)
document.ToBytes() pdf.BinaryData
new PdfMerger() PdfDocument.Merge()
merger.AddFile(path) PdfDocument.FromFile(path)
merger.Merge(output) merged.SaveAs(output)

PDF Duo에 없는 새로운 기능

기능 IronPDF
헤더/푸터 RenderingOptions.HtmlHeader, HtmlFooter
페이지 번호 {page}, {total-pages} 자리 표시자
워터마크 pdf.ApplyWatermark(html)
암호 보호 pdf.SecuritySettings
양식 채우기 pdf.Form.Fields
디지털 서명 pdf.SignWithFile()
텍스트 추출 pdf.ExtractAllText()
PDF를 이미지로 pdf.RasterizeToImageFiles()

코드 마이그레이션 예제

예제 1: HTML에서 PDF로 변환

이전 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports PDFDuo
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        converter.ConvertHtmlString(htmlContent, "output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

여기에서 근본적인 차이는 API 패턴입니다. PDF Duo의 HtmlToPdfConverter.ConvertHtmlString()는 HTML과 출력 경로를 한 번의 호출로 받아들여 변환과 저장을 함께 처리합니다. IronPDF의 ChromePdfRenderer.RenderHtmlAsPdf()는 먼저 PdfDocument 객체를 반환하고, 이후 SaveAs()으로 저장합니다.

이 객체 지향 접근 방식은 매우 중요한 장점을 제공합니다: 저장하기 전에 PDF를 조작할 수 있습니다 (워터마크 추가, 문서 병합, 보안 추가, 텍스트 추출). 이는 PDF Duo의 직접 파일 접근 방식으로는 불가능합니다. HTML to PDF 문서에서 추가 렌더링 옵션을 참조하십시오.

예제 2: URL에서 PDF로 변환

이전 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports PDFDuo
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        converter.ConvertUrl("https://www.example.com", "webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Module
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDF Duo는 ConvertUrl(url, outputPath)을 사용하여 URL 변환에 동일한 HtmlToPdfConverter 클래스를 사용합니다. IronPDF는 전용 RenderUrlAsPdf(url) 메서드와 함께 ChromePdfRenderer를 사용하여 PdfDocument 객체를 반환합니다.

주요 이점은 IronPDF의 Chromium 기반 렌더링 엔진이 최신 CSS3 및 JavaScript 지원을 제공하는 반면, PDF Duo의 알 수 없는 렌더링 엔진은 CSS/JavaScript 지원이 불확실하고 렌더링 품질이 예측 불가능하다는 점입니다. URL에서 PDF로 변환에 대해 더 알아보세요.

예제 3: PDF 병합

이전 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports PDFDuo
Imports System

Class Program
    Shared Sub Main()
        Dim merger As New PdfMerger()
        merger.AddFile("document1.pdf")
        merger.AddFile("document2.pdf")
        merger.Merge("merged.pdf")
        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

이후 (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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");
        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports IronPdf
Imports System

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")
        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

이 예는 근본적인 아키텍처 차이를 보여줍니다. PDF Duo는 전용 PdfMerger 클래스를 사용하여 파일을 큐에 넣고, AddFile() 메서드를 사용하여 하나의 단계에서 결합하고 저장합니다.

IronPDF는 다른 패턴을 사용합니다: PdfDocument.FromFile()을 사용하여 각 PDF를 PdfDocument으로 로드한 다음, 정적 PdfDocument.Merge() 메서드를 사용하여 결합합니다. 이것은 새로운 PdfDocument 객체를 반환하며, SaveAs()으로 별도로 저장합니다.

IronPDF 접근 방식은 더 많은 유연성을 제공합니다. 병합 전에 모든 PDF를 조작할 수 있고, 병합된 결과에 워터마크를 추가하거나 보안 설정을 적용하는 등의 작업을 수행할 수 있습니다. 여러 파일을 병합하려면 LINQ를 사용할 수 있습니다:

var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

PDF 병합 및 분할에 대해 더 알아보세요.


이동 후 새로운 기능

IronPDF로 이동한 후, PDF Duo에서는 제공할 수 없는 기능을 얻을 수 있습니다:

페이지 번호가 있는 헤더 및 푸터

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    .MaxHeight = 25
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("report.pdf")
$vbLabelText   $csharpLabel

PDF Duo는 머리글이나 바닥글을 지원하지 않으며, 이에 해당하는 기능이 없습니다. IronPDF는 페이지 번호와 같은 동적 콘텐츠에 대한 내장 플레이스홀더를 사용한 전체 HTML/CSS 지원을 제공합니다. 머리글 및 바닥글 가이드를 참조하세요.

워터마크

using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing

Dim pdf = PdfDocument.FromFile("document.pdf")

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)

pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

PDF Duo는 워터마크를 지원하지 않습니다. IronPDF는 전체 CSS 스타일링 지원을 갖춘 HTML 기반의 워터마크를 제공합니다.

비밀번호 보호

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

PDF Duo는 비밀번호 보호나 보안 설정을 지원하지 않습니다.

텍스트 추출

var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

PDF Duo는 텍스트 추출을 지원하지 않습니다.


중요한 마이그레이션 노트

개별 속성으로의 여백 객체

PDF Duo는 단일 Margins 객체를 사용합니다; IronPDF는 개별 속성을 사용합니다:

// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
' PDF Duo:
New Margins(top:=20, right:=15, bottom:=20, left:=15)

' IronPDF:
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
$vbLabelText   $csharpLabel

저장 메서드 명명

저장에 대한 메서드 명칭이 다릅니다:

// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
document.Save("output.pdf")

' IronPDF:
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

PDF 로드하기

로드에 대한 메서드 명칭이 다릅니다:

// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
' PDF Duo:
PDFDocument.Load("document.pdf")

' IronPDF:
PdfDocument.FromFile("document.pdf")
$vbLabelText   $csharpLabel

설정 객체에서 속성으로

PDF Duo는 생성자에 전달되는 설정 객체를 사용합니다; IronPDF는 속성을 사용합니다:

// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDF Duo:
Dim settings As New PDFSettings With {.PageSize = PageSize.A4}
Dim converter As New HtmlToPdfConverter(settings)

' IronPDF:
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
$vbLabelText   $csharpLabel

기능 비교

기능 PDF Duo .NET IronPDF
HTML to PDF 기초적인 전체 CSS3, JavaScript
URL을 PDF로 변환 기초적인 인증 지원 포함
PDF 병합
헤더/푸터 아니요 전체 HTML 지원
페이지 번호 아니요 내장된 플레이스홀더
워터마크 아니요 HTML 기반
비밀번호 보호 아니요 전체 보안 옵션
폼 채우기 아니요
디지털 서명 아니요
텍스트 추출 아니요
PDF를 이미지로 아니요
비동기 지원 알 수 없음 완전한 async/await
.NET Core/5+ 알 수 없음 지원됨

마이그레이션 체크리스트

사전 마이그레이션

  • 코드베이스에서 모든 PDF Duo 참조 찾기
  • 현재 설정(페이지 크기, 여백 등) 문서화
  • 사용된 모든 PDF 작업 목록 작성
  • 새로운 기능(머리글, 워터마크, 보안) 기회 식별 -IronPDF라이센스 키를 받으세요

패키지 변경 사항

  • PDFDuo.NET NuGet 패키지 제거
  • IronPdf NuGet Install-Package: dotnet add package IronPdf
  • 네임스페이스 임포트를 using PDFDuo;에서 using IronPdf;로 업데이트

코드 변경 사항

  • 시작 시 라이선스 키 구성 추가
  • HtmlToPdfConverterChromePdfRenderer로 대체
  • ConvertHtmlString(html, path)RenderHtmlAsPdf(html).SaveAs(path)로 대체
  • ConvertUrl(url, path)RenderUrlAsPdf(url).SaveAs(path)로 대체
  • PdfMerger 패턴을 PdfDocument.Merge() 패턴으로 대체
  • Margins 객체를 개별 마진 속성으로 변환
  • Save()SaveAs()로 대체
  • Load()FromFile()로 대체

마이그레이션 이후

  • PDF 출력 비교 회귀 테스트 실행
  • 페이지 크기와 여백이 일치하는지 확인
  • 복잡한 HTML/CSS로 테스트(IronPDF의 현대적 엔진이 더 잘 처리해야 함)
  • 새로운 기능 추가(머리글, 바닥글, 워터마크, 보안)
  • 문서 업데이트

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

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

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

아이언 서포트 팀

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