PeachPDF에서 IronPDF로의 마이그레이션 방법 (C#)
PeachPDF에서 IronPDF로의 마이그레이션은 포괄적인 기능, 활발한 개발, 전문적인 지원을 갖춘 Enterprise급 PDF 생성에 대한 접근을 제공합니다. 이 가이드는 기본 HTML-대-PDF 워크플로우를 최신 Chromium 렌더링, 고급 보안 옵션, 광범위한 조작 기능을 갖춘 전체 기능의 PDF 솔루션으로 변환하는 완전한 단계별 마이그레이션 경로를 제공합니다.
PeachPDF에서 IronPDF로 마이그레이션해야 하는 이유
PeachPDF이해
PeachPDF는 HTML을 PDF로 변환해야 하는 개발자를 위한 .NET 생태계의 비교적 새로운 구성원입니다. 라이브러리로서 PeachPDF는 순수 .NET 구현을 약속하며, 외부 프로세스에 의존하지 않아 .NET을 지원하는 플랫폼 간에 원활하게 통합될 수 있습니다. 이 특성은 PeachPDF를 가볍고 관리되는 라이브러리 솔루션을 찾고 있는 프로젝트에 매력적인 선택으로 만듭니다.
잠재력에도 불구하고 PeachPDF는 여전히 개발 중이며, 흥미로운 가능성과 주목할 만한 제약을 모두 강조합니다. PeachPDF는 순수 .NET Core로 다양한 환경에서 간단한 배포를 약속하기 때문에 매력적입니다. 그러나 이는 제한된 채택으로도 이어지며, 더 작은 사용자 기반과 커뮤니티 기반 지원을 의미합니다.
PeachPDF의 한계
PeachPDF는 성숙함, 기능, 지원이 부족한 상대적으로 새로운, 덜 알려진 PDF 라이브러리입니다. 마이그레이션해야 하는 주요 이유:
-
제한된 기능 집합: PeachPDF는 디지털 서명,PDF/A준수 및 정교한 텍스트 추출과 같은 고급 기능이 부족합니다.
-
작은 커뮤니티: 제한된 문서, 예제 및 커뮤니티 지원. 사용자 기반이 작기 때문에 커뮤니티 지원이 드물 수 있으며, 도움을 받거나 광범위한 문서를 찾는 것이 어려울 수 있습니다.
-
불확실한 미래: 확립된 기록이 없는 새로운 라이브러리는 채택 위험을 수반합니다.
-
기본 HTML 지원: CSS 및JavaScript렌더링 기능이 제한적입니다.
- Enterprise 지원 없음: 전문 지원 또는 SLA 옵션이 없습니다.
PeachPDF대IronPDF비교
| 기능/특성 | PeachPDF | IronPDF |
|---|---|---|
| 구현 | 순수 .NET | 광범위한 호환성으로 관리됨 |
| 라이선스 | 오픈 소스 (BSD-3-Clause) | 상업적 |
| 사용자 기반 | 작음 | 큰 (4천만+ 다운로드) |
| 지원 | 커뮤니티 주도 | 전용 지원이 있는 전문적 |
| HTML 렌더링 | 기초적인 | 전체 Chromium |
| CSS 지원 | 제한적 | 전체 CSS3 |
| JavaScript | 기초적인 | 전체 ES2024 |
| 디지털 서명 | 아니요 | 예 |
| PDF/A 준수 | 아니요 | 예 |
| 문서화 | 제한적 | 광범위함 |
| 개발 상태 | 개발 중 | 성숙하고 안정적인 릴리스 |
IronPDF는 HTML-PDF 변환뿐만 아니라 OCR, 워터마크 작업 및 기타 고급 기능을 지원하는 광범위한 기능으로 두각을 나타냅니다. 전문적인 지원 구조는 개발자가 겪는 문제를 신속하게 해결할 수 있는 명확한 이점을 제공합니다.
.NET 10 및 C# 14 채택을 계획하는 팀에게 IronPDF는 장기적인 안정성과 최신 .NET Framework와의 호환성을 보장하는 포괄적인 기능과 활발한 유지 관리를 제공합니다.
시작하기 전에
필수 조건
- .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
- IronPDF 라이선스: ironpdf.com에서 라이선스 키를 획득하세요
NuGet 패키지 변경 사항
# Remove PeachPDF
dotnet remove package PeachPDF
# Install IronPDF
dotnet add package IronPdf
# Remove PeachPDF
dotnet remove package PeachPDF
# Install IronPDF
dotnet add package IronPdf
라이선스 구성
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
PeachPDF사용 식별
# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
# AuditPeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "HtmlToPdfConverter\|Convert\|ConvertUrl" --include="*.cs" .
완전한 API 참조
네임스페이스 변경
// Before: PeachPDF
using PeachPDF;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: PeachPDF
using PeachPDF;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports IronPdf
Imports IronPdf.Rendering
Imports System.IO
핵심 API 매핑
| PeachPDF | IronPDF |
|---|---|
new HtmlToPdfConverter() |
new ChromePdfRenderer() |
converter.Convert(html) |
renderer.RenderHtmlAsPdf(html) |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
converter.Header |
renderer.RenderingOptions.HtmlHeader |
converter.Footer |
renderer.RenderingOptions.HtmlFooter |
File.WriteAllBytes(path, pdf) |
pdf.SaveAs(path) |
pdf (byte[]) |
pdf.BinaryData |
PdfReader.LoadFromFile(path) |
PdfDocument.FromFile(path) |
document.MergeWith(other) |
PdfDocument.Merge(pdfs) |
코드 마이그레이션 예제
예제 1: HTML 문자열을 PDF로 변환
이전 (PeachPDF):
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PeachPDF
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var html = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
이 예시는 두 라이브러리 간의 기본적인 차이점을 보여줍니다. PeachPDF는 HtmlToPdfConverter을 사용하며, Convert() 메서드를 사용하여 byte[]을 반환하며, 저장을 위한 File.WriteAllBytes()이 필요합니다. IronPDF는 ChromePdfRenderer을 사용하며, RenderHtmlAsPdf()으로 PdfDocument 객체를 반환하며, 내장된 SaveAs() 메서드를 가지고 있습니다.
IronPDF의 접근 방식의 주요 이점: PdfDocument 객체는 저장하기 전에 (워터마크 추가, 병합, 보안 설정) 추가 조작이 가능하지만, PeachPDF의 바이트 배열은 최종 출력입니다. IronPDF의 접근법은 현대 .NET 애플리케이션과의 더 나은 통합과 더 나은 문법을 제공합니다. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.
예제 2: URL에서 PDF로 변환
이전 (PeachPDF):
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
var pdf = converter.ConvertUrl(url);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var url = "https://www.example.com";
var pdf = converter.ConvertUrl(url);
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports PeachPDF
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim url = "https://www.example.com"
Dim pdf = converter.ConvertUrl(url)
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim url = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
End Sub
End Class
PeachPDF는 ConvertUrl()을 사용하고 IronPDF는 RenderUrlAsPdf()을 사용합니다. IronPDF의 메서드 명칭은 보다 설명적입니다. URL이 PDF로 렌더링되고 있음을 명확히 나타냅니다. 두 라이브러리는 URL-PDF 변환을 유사하게 처리하지만 IronPDF의 전체 Chromium 엔진은 복잡한 CSS 및 JavaScript를 사용하는 최신 웹 페이지를 우수하게 렌더링합니다. 더 많은 정보를 보려면 튜토리얼을 참조하세요.
예제 3: 헤더와 푸터 추가
이전 (PeachPDF):
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.Header = "<div style='text-align:center'>My Header</div>";
converter.Footer = "<div style='text-align:center'>Page {page}</div>";
var html = "<html><body><h1>Document Content</h1></body></html>";
var pdf = converter.Convert(html);
File.WriteAllBytes("document.pdf", pdf);
}
}
using PeachPDF;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.Header = "<div style='text-align:center'>My Header</div>";
converter.Footer = "<div style='text-align:center'>Page {page}</div>";
var html = "<html><body><h1>Document Content</h1></body></html>";
var pdf = converter.Convert(html);
File.WriteAllBytes("document.pdf", pdf);
}
}
Imports PeachPDF
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
converter.Header = "<div style='text-align:center'>My Header</div>"
converter.Footer = "<div style='text-align:center'>Page {page}</div>"
Dim html = "<html><body><h1>Document Content</h1></body></html>"
Dim pdf = converter.Convert(html)
File.WriteAllBytes("document.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
var html = "<html><body><h1>Document Content</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
var html = "<html><body><h1>Document Content</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>My Header</div>"}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:center'>Page {page}</div>"}
Dim html As String = "<html><body><h1>Document Content</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("document.pdf")
End Sub
End Module
이 예제는 중요한 구조적 차이점을 보여줍니다. PeachPDF는 헤더와 푸터를 위한 간단한 문자열 속성 (converter.Header 및 converter.Footer)을 사용합니다. IronPDF는 HtmlHeaderFooter 객체를 RenderingOptions.HtmlHeader 및 RenderingOptions.HtmlFooter에 할당하여 사용합니다.
IronPDF 접근 방식은 더욱 유연성을 제공합니다. HtmlHeaderFooter 객체는 헤더/푸터 크기를 제어할 수 있는 MaxHeight과 같은 추가 속성을 포함할 수 있습니다. 두 라이브러리 모두 페이지 번호 자리 표시자로 {page}을 사용한다는 점에 유의하십시오. IronPDF는 총 페이지 수를 위한 {total-pages}도 지원합니다.
IronPDF에 필요한 추가 네임스페이스: using IronPdf.Rendering;은 HtmlHeaderFooter 클래스를 위해 필요합니다.
중요한 마이그레이션 노트
변환기 클래스 변경
PeachPDF는 HtmlToPdfConverter을 사용합니다; IronPDF는 ChromePdfRenderer을 사용합니다:
// PeachPDF
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
// PeachPDF
var converter = new HtmlToPdfConverter();
// IronPDF
var renderer = new ChromePdfRenderer();
' PeachPDF
Dim converter As New HtmlToPdfConverter()
' IronPDF
Dim renderer As New ChromePdfRenderer()
반환 타입 변경
PeachPDF는 byte[]을 반환합니다; IronPDF는 PdfDocument을 반환합니다:
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);
// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
// PeachPDF: Returns byte array
byte[] pdf = converter.Convert(html);
File.WriteAllBytes("output.pdf", pdf);
// IronPDF: Returns PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;
' PeachPDF: Returns byte array
Dim pdf As Byte() = converter.Convert(html)
File.WriteAllBytes("output.pdf", pdf)
' IronPDF: Returns PdfDocument object
Dim pdfDoc As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDoc.SaveAs("output.pdf")
' Or get bytes: Dim bytes As Byte() = pdfDoc.BinaryData
헤더/푸터 속성 변경
// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";
// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div>Footer</div>"
};
// PeachPDF: Simple string properties
converter.Header = "<div>Header</div>";
converter.Footer = "<div>Footer</div>";
// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div>Footer</div>"
};
' PeachPDF: Simple string properties
converter.Header = "<div>Header</div>"
converter.Footer = "<div>Footer</div>"
' IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div>Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.HtmlFragment = "<div>Footer</div>"
}
메서드 이름 변경
| PeachPDF | IronPDF |
|---|---|
Convert(html) |
RenderHtmlAsPdf(html) |
ConvertUrl(url) |
RenderUrlAsPdf(url) |
File.WriteAllBytes() |
SaveAs() |
이동 후 새로운 기능
IronPDF로 마이그레이션한 후 PeachPDF가 제공할 수 없는 기능을 얻게 됩니다:
PDF 병합
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
CONVERTER NOT RUNNING
HTML을 사용한 워터마크
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");
Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>")
pdf.SaveAs("watermarked.pdf")
비밀번호 보호
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SaveAs("protected.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SaveAs("protected.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>")
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SaveAs("protected.pdf")
디지털 서명
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningReason = "Document Approval",
SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningReason = "Document Approval",
SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf.Signing
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
.SigningReason = "Document Approval",
.SigningLocation = "New York"
}
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
비동기 작업
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");
Dim renderer As New ChromePdfRenderer()
Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>")
pdf.SaveAs("async_output.pdf")
기능 비교 요약
| 기능 | PeachPDF | IronPDF |
|---|---|---|
| HTML to PDF | 기초적인 | 전체 Chromium |
| URL을 PDF로 변환 | 제한적 | 예 |
| CSS Grid/Flexbox | 아니요 | 예 |
| JavaScript | 제한적 | 전체 ES2024 |
| PDF 병합 | 예 | 예 |
| PDF 분할 | 제한적 | 예 |
| 워터마크 | 제한적 | 전체 HTML |
| 헤더/푸터 | 기초적인 | 전체 HTML |
| 디지털 서명 | 아니요 | 예 |
| PDF/A | 아니요 | 예 |
| 폼 채우기 | 제한적 | 예 |
| 텍스트 추출 | 기초적인 | 예 |
| 이미지 추출 | 아니요 | 예 |
| 비동기 지원 | 제한적 | 예 |
| 크로스 플랫폼 | 알 수 없음 | 예 |
일반적인 마이그레이션 문제
문제 1: 다른 API 패턴
문제: PeachPDF는 바이트 배열 출력을 사용하는 변환기 패턴을 사용합니다; IronPDF는 PdfDocument 출력을 사용하는 렌더러 패턴을 사용합니다.
해결책:
//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);
//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
//PeachPDFpattern
var converter = new HtmlToPdfConverter();
var pdf = converter.Convert(html);
File.WriteAllBytes(path, pdf);
//IronPDFpattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
' PeachPDFpattern
Dim converter As New HtmlToPdfConverter()
Dim pdf As Byte() = converter.Convert(html)
File.WriteAllBytes(path, pdf)
' IronPDFpattern
Dim renderer As New ChromePdfRenderer()
Dim pdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdfDocument.SaveAs(path)
문제 2: 저장 메서드 차이
문제: PeachPDF는 File.WriteAllBytes()이 필요합니다; IronPDF는 내장 SaveAs()을 가지고 있습니다.
해결책: File.WriteAllBytes("path", pdf)을 pdf.SaveAs("path")으로 대체하십시오.
문제 3: 헤더/푸터 개체
문제: PeachPDF는 문자열 속성을 사용합니다; IronPDF는 개체 속성을 사용합니다.
해결책: HTML 문자열을 HtmlHeaderFooter 객체에 HtmlFragment 속성과 함께 래핑하십시오.
마이그레이션 체크리스트
사전 마이그레이션
- 코드베이스에서PeachPDF사용을 감사하라
- 사용자 정의 구성 문서화
- 모든 헤더/푸터 구현을 기록
- ironpdf.com에서IronPDF라이선스 키 획득 -IronPDF체험판 라이선스로 먼저 테스트
패키지 변경 사항
PeachPDFNuGet 패키지를 제거하십시오IronPdfNuGet 패키지를 설치하십시오:dotnet add package IronPdf
코드 변경 사항
- 네임스페이스 가져오기를 업데이트하십시오 (
using PeachPDF;→using IronPdf;) - 헤더/푸터 기능을 위해
using IronPdf.Rendering;을 추가하십시오 HtmlToPdfConverter을ChromePdfRenderer으로 대체하십시오converter.Convert(html)을renderer.RenderHtmlAsPdf(html)으로 대체하십시오converter.ConvertUrl(url)을renderer.RenderUrlAsPdf(url)으로 대체하십시오File.WriteAllBytes(path, pdf)을pdf.SaveAs(path)으로 대체하십시오Footer을HtmlFooter객체로 대체하십시오- 애플리케이션 시작 시 라이선스 초기화 추가
마이그레이션 이후
- HTML 렌더링 품질 테스트
- PDF 출력이 기대와 일치하는지 확인
- 페이지 번호와 함께 헤더/푸터 렌더링 테스트
- 필요에 따라 새 기능(보안, 워터마크, 병합) 추가

