C#에서 PDF Duo에서 IronPDF로 마이그레이션하는 방법
PDF Duo .NET에서 IronPDF로의 마이그레이션은 명확한 유지 관리 상태가 불분명한 불명확하고 문서화가 부족한 라이브러리에서 안정적이고 잘 문서화되며 적극적으로 유지 관리되는 솔루션으로 .NET PDF 워크플로를 이동합니다. 이 가이드는 포기된 라이브러리와 관련된 위험을 제거하면서 PDF Duo는 제공할 수 없는 고급 기능에 액세스할 수 있는 포괄적이고 단계별 마이그레이션 경로를 제공합니다.
왜 PDF Duo에서 IronPDF로 마이그레이션해야 하는가
PDF Duo 위험 문제
PDF Duo .NET은 .NET 생태계에서 찾기 어렵고 잘 알려지지 않은 라이브러리입니다. 간단함을 추구하는 개발자에게 호소력을 가졌을지 모르지만, 이 라이브러리의 불분명성은 프로덕션 애플리케이션에 중대한 도전을 제기합니다:
-
불분명한 기원: 입증 가능한 회사 후원이 없는 알 수 없는 개발자. GitHub 저장소나 소스 코드가 보이지 않고, 제한된 NuGet 다운로드 통계와 불확실한 라이선스 조건이 있습니다.
-
문서 부족: 신뢰할 수 있는 정보를 찾기 거의 불가능합니다. 공식적인 API 참조가 없으며, 드문드문한 커뮤니티 예와 공식 튜토리얼이나 가이드가 없습니다. PDF Duo를 사용하려는 모든 시도는 신뢰할 수 있는 문서의 부족으로 인해 방해받습니다.
-
포기되거나 비활성화된 상태: 드문드문하거나 업데이트가 없는 것이 방치의 징후를 드러냅니다. 지원 포럼에 2019년의 게시물이 응답 없이 있습니다. 포기의 매우 실제적인 위험은 중요한 프로젝트에 대한 실행 가능성을 위협합니다.
-
제한된 기능: 기본적인 기능만—간단한 HTML을 PDF로 변환하고 기본적인 PDF 병합만 있으며, 양식, 보안 또는 워터마크와 같은 고급 기능이 없습니다.
-
알 수 없는 렌더링 엔진: 내부에 대해 명확한 정보가 없습니다. CSS/JavaScript 지원은 알 수 없으며, 렌더링 품질은 예측 불가능하고 모던 웹 기능 지원이 불확실합니다.
- 지원 위험: 문제가 발생할 때 해결 방법이 없습니다. 전문적인 지원도 없고, 도움을 줄 커뮤니티도 없으며, 포기의 완전한 위험이 있습니다.
PDF Duo와IronPDF비교
| 측면 | PDF Duo .NET | IronPDF |
|---|---|---|
| 유지보수 | 알 수 없음/비활성 | 적극적인 정기 업데이트 |
| 문서화 | 희박/누락 | 포괄적 |
| 지원 | 없음 | 전문적인 지원 팀 |
| Community | ~0명 사용자 | 4100만+ NuGet 다운로드 |
| 렌더링 | 알 수 없는 엔진 | 최신 크로뮴 |
| 기능 | 기초적인 | 풀 기능 |
| 안정성 | 알 수 없음 | 생산에서 검증됨 |
| 라이센스 | 불분명 | 투명 |
.NET 10과 C# 14를 2025년과 2026년에 도입할 계획인 팀에게 IronPDF는 적극적인 개발과 포괄적인 문서화를 통해 안정적인 기반을 제공하며, 포기된 라이브러리에 의존해야 하는 불확실성을 제거합니다.
시작하기 전에
필수 조건
- .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
- 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
라이선스 구성
// 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"
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" .
완전한 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
이후 (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
여기에서 근본적인 차이는 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
이후 (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
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
이후 (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
이 예는 근본적인 아키텍처 차이를 보여줍니다. 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")
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")
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")
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")
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()
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
저장 메서드 명명
저장에 대한 메서드 명칭이 다릅니다:
// 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")
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")
설정 객체에서 속성으로
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
기능 비교
| 기능 | 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.NETNuGet 패키지 제거IronPdfNuGet Install-Package:dotnet add package IronPdf- 네임스페이스 임포트를
using PDFDuo;에서using IronPdf;로 업데이트
코드 변경 사항
- 시작 시 라이선스 키 구성 추가
HtmlToPdfConverter를ChromePdfRenderer로 대체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의 현대적 엔진이 더 잘 처리해야 함)
- 새로운 기능 추가(머리글, 바닥글, 워터마크, 보안)
- 문서 업데이트

