C#에서 pdforge에서 IronPDF로 마이그레이션하는 방법
pdforge에서 IronPDF로 이동하는 이유
pdforge이해하기
pdforge는 클라우드 기반의 PDF 생성 API로, API 호출을 통해 응용 프로그램과 통합하여 PDF 파일을 쉽게 생성할 수 있게 해줍니다. PDF 생성 작업을 외부 API로 오프로드함으로써 개발자는 개발 과정을 단순화할 수 있습니다. 그러나 pdforge는 외부 종속성, 제한된 사용자 지정 옵션, 그리고 지속적인 구독 비용과 같은 단점을 제공하며, 개발자는 이에 유의해야 합니다.
클라우드 API 종속 문제
pdforge는 모든 문서를 외부 클라우드 서버에서 처리합니다. 이 아키텍처는 생산 응용 프로그램에 상당한 우려를 야기합니다:
-
외부 서버 처리: 생성하는 모든 PDF는 HTML/데이터를 pdforge의 서버로 보내야 하며—문서는 기반 시설을 떠납니다.
-
개인정보 보호 및 준수 위험: 민감한 데이터는 인터넷을 통해 제3자 서버로 이동합니다. pdforge를 사용할 때, 개발자는 외부 API로 보내지는 데이터와 관련된 보안 문제를 수용해야 합니다. PDF 내용에 민감한 정보가 포함된 경우, 이는 중요한 고려 사항이 될 수 있습니다.
-
지속적인 구독 비용: 월간 요금은 자산 소유 없이 무기한 누적됩니다. pdforge의 SaaS 모델은 지속적인 운영 비용을 도입하여 시간이 지남에 따라 누적될 수 있습니다.
-
인터넷 의존성: 네트워크가 사용할 수 없는 경우 PDF 생성이 이루어지지 않습니다.
-
속도 제한: API 사용 한도가 대량 응용 프로그램을 제약할 수 있습니다.
- 네트워크 지연: 왕복 시간은 각 PDF 생성에 초 단위의 시간이 추가됩니다.
pdforge대IronPDF비교
| 기능 | pdforge | IronPDF |
|---|---|---|
| 배포 유형 | 클라우드 기반 API | 로컬 라이브러리 |
| 종속성 | 인터넷과 API 인증 필요 | 외부 종속성 없음 |
| 커스터마이제이션 | PDF 생성에 대한 제한된 통제 | 사용자 정의에 대한 완전한 통제 |
| 비용 구조 | 지속 구독 | 일회성 구매 옵션 |
| 보안 | 웹을 통해 전송된 데이터와 관련된 잠재적 우려 | 데이터 처리를 전적으로 로컬 환경에서 유지 |
| 설치 복잡성 | 외부 처리를 통해 초기 설정 더 쉬움 | 더 많은 초기 설정 및 구성 필요 |
IronPDF는 개발자가 PDF 생성 과정에 완전한 통제를 가질 수 있는 완전한 로컬 라이브러리를 제공함으로써 자신을 차별화합니다. 이는 파일의 내부 처리가 더 선호되는 응용 프로그램이나 외부 API 호출이 보안 문제를 초래하는 경우 특히 유리합니다. IronPDF는 이러한 위험을 최소화하면서 모든 것을 로컬에서 처리합니다.
2025년 및 2026년까지 .NET 10 및 C# 14 채택을 계획하는 팀을 위해, IronPDF는 클라우드 종속성을 제거하면서 종합적인 PDF 조작 기능을 추가하는 로컬 처리 기반을 제공합니다.
시작하기 전에
필수 조건
- .NET 환경: .NET Framework 4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 접근 권한: NuGet 패키지를 설치할 수 있는 능력
- IronPDF 라이선스: ironpdf.com에서 라이선스 키를 획득하세요
NuGet 패키지 변경 사항
# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge
# Install IronPDF
dotnet add package IronPdf
# Removepdforgepackages
dotnet remove package pdforge
dotnet remove package PdfForge
# 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"
pdforge사용 식별하기
# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .
# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
# Findpdforgeusage
grep -r "PdForge\|PdfClient\|HtmlToPdfRequest\|HtmlToPdfConverter" --include="*.cs" .
# Find placeholder patterns to migrate
grep -r "{totalPages}" --include="*.cs" .
완전한 API 참조
네임스페이스 변경
// Before: pdforge
using PdfForge;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: pdforge
using PdfForge;
using System.IO;
// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
' Before: pdforge
Imports PdfForge
Imports System.IO
' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
핵심 클래스 매핑
| pdforge | IronPDF |
|---|---|
HtmlToPdfConverter |
ChromePdfRenderer |
PdfClient |
ChromePdfRenderer |
PageSize.A4 |
PdfPaperSize.A4 |
PageOrientation.Landscape |
PdfPaperOrientation.Landscape |
반환 타입: byte[] |
PdfDocument |
메서드 매핑
| pdforge | IronPDF |
|---|---|
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
File.WriteAllBytes(path, bytes) |
pdf.SaveAs(path) |
반환 타입: byte[] |
pdf.BinaryData |
구성 매핑
| pdforge | IronPDF (RenderingOptions) |
|---|---|
converter.PageSize = PageSize.A4 |
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 |
converter.Orientation = PageOrientation.Landscape |
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape |
Footer = "Page {page} of {totalPages}" |
TextFooter = new TextHeaderFooter { CenterText = "Page {page} of {total-pages}" } |
pdforge에서 사용할 수 없는 새로운 기능
| IronPDF기능 | 설명 |
|---|---|
PdfDocument.Merge() |
여러 개의 PDF 결합 |
pdf.ExtractAllText() |
PDF에서 텍스트 추출 |
pdf.ApplyWatermark() |
워터마크 추가 |
pdf.SecuritySettings |
암호 보호 |
pdf.Form |
양식 채우기 |
pdf.SignWithDigitalSignature() |
디지털 서명 |
코드 마이그레이션 예제
예제 1: HTML 문자열을 PDF로 변환
이전 (pdforge):
// NuGet: Install-Package PdfForge
using PdfForge;
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.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
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.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PdfForge
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.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
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;
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
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
여기서 기본적인 차이는 처리 모델과 반환 유형입니다. pdforge는 HtmlToPdfConverter을(를) ConvertHtmlString()과(와) 함께 사용하여 byte[] 배열을 반환하며, 결과를 저장하기 위해 File.WriteAllBytes()을(를) 사용해야 합니다.
IronPDF는 ChromePdfRenderer을(를) RenderHtmlAsPdf()과(와) 함께 사용하여 PdfDocument 객체를 반환합니다. 이 객체는 SaveAs()을(를) 사용하여 직접 저장할 수 있으며, 원시 바이트가 필요하다면 pdf.BinaryData에 접근할 수 있습니다. PdfDocument은(는) 또한 저장하기 전에 조작(워터마크 추가, 다른 PDF와 병합, 보안 추가)을 허용합니다. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요.
예제 2: URL에서 PDF로 변환
이전 (pdforge):
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
var pdf = converter.ConvertUrl("https://example.com");
File.WriteAllBytes("webpage.pdf", pdf);
}
}
Imports PdfForge
Imports System.IO
Class Program
Shared Sub Main()
Dim converter = New HtmlToPdfConverter()
Dim pdf = converter.ConvertUrl("https://example.com")
File.WriteAllBytes("webpage.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://example.com");
pdf.SaveAs("webpage.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
pdforge는 ConvertUrl()을(를) HtmlToPdfConverter 클래스에서 사용하여 File.WriteAllBytes()으로 작업하게 될 바이트를 반환합니다. IronPDF는 RenderUrlAsPdf()을(를) ChromePdfRenderer에서 사용하여 SaveAs() 메소드가 내장된 PdfDocument을(를) 반환합니다.
IronPDF의 주요 이점은 URL이 외부 서버에 데이터가 전송되지 않고 Chrominium 엔진을 사용하여 로컬에서 가져와 렌더링된다는 것입니다. IronPDF는 로컬 라이브러리로서 웹 요청에 왕복 시간이 없는 만큼 더 나은 성능을 제공할 수 있습니다. URL에서 PDF로 변환에 대해 더 알아보세요.
예제 3: 사용자 정의 설정으로 HTML 파일을 PDF로 변환
이전 (pdforge):
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
var htmlContent = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(htmlContent);
File.WriteAllBytes("output.pdf", pdf);
}
}
// NuGet: Install-Package PdfForge
using PdfForge;
using System.IO;
class Program
{
static void Main()
{
var converter = new HtmlToPdfConverter();
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
var htmlContent = File.ReadAllText("input.html");
var pdf = converter.ConvertHtmlString(htmlContent);
File.WriteAllBytes("output.pdf", pdf);
}
}
Imports PdfForge
Imports System.IO
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdfConverter()
converter.PageSize = PageSize.A4
converter.Orientation = PageOrientation.Landscape
Dim htmlContent As String = File.ReadAllText("input.html")
Dim pdf As Byte() = converter.ConvertHtmlString(htmlContent)
File.WriteAllBytes("output.pdf", pdf)
End Sub
End Class
이후 (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
var htmlContent = System.IO.File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
var htmlContent = System.IO.File.ReadAllText("input.html");
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
Dim htmlContent = System.IO.File.ReadAllText("input.html")
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
이 예제는 구성 패턴 차이를 보여 줍니다. pdforge는 변환기 객체(converter.PageSize = PageSize.A4, converter.Orientation = PageOrientation.Landscape)에 직접 속성을 설정합니다.
IronPDF는 강력한 타입의 열거형과 함께 RenderingOptions 속성을 사용합니다: renderer.RenderingOptions.PaperSize = PdfPaperSize.A4 및 renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape. 이것은 IntelliSense 지원과 컴파일 타임 타입 안전성을 제공합니다. IronPDF는 용지 크기와 방향 열거형을 위해 IronPdf.Rendering 네임스페이스를 가져와야 한다는 점에 유의하세요. 더 많은 구성 예제를 보려면 튜토리얼을 참조하세요.
중요한 마이그레이션 노트
반환 타입 변경
pdforge는 byte[]을(를) 반환합니다; IronPDF는 PdfDocument을(를) 반환합니다:
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Get bytes if needed
// pdforge: Returns byte[]
byte[] pdfBytes = converter.ConvertHtmlString(html);
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Returns PdfDocument
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf"); // Direct save
byte[] bytes = pdf.BinaryData; // Get bytes if needed
' pdforge: Returns byte()
Dim pdfBytes As Byte() = converter.ConvertHtmlString(html)
File.WriteAllBytes("output.pdf", pdfBytes)
' IronPDF: Returns PdfDocument
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf") ' Direct save
Dim bytes As Byte() = pdf.BinaryData ' Get bytes if needed
변환기 클래스 변경
// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();
// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// pdforge: HtmlToPdfConverter
var converter = new HtmlToPdfConverter();
// IronPDF: ChromePdfRenderer
var renderer = new ChromePdfRenderer();
' pdforge: HtmlToPdfConverter
Dim converter As New HtmlToPdfConverter()
' IronPDF: ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
메서드 이름 변경
//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
//pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
//IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
'pdforgemethods
converter.ConvertHtmlString(html)
converter.ConvertUrl(url)
'IronPDFmethods
renderer.RenderHtmlAsPdf(html)
renderer.RenderUrlAsPdf(url)
저장 방법 변경
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
// pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes);
// IronPDF: Built-in save method
pdf.SaveAs("output.pdf");
' pdforge: Manual file write
File.WriteAllBytes("output.pdf", pdfBytes)
' IronPDF: Built-in save method
pdf.SaveAs("output.pdf")
구성 위치 변경
pdforge는 변환기 속성을 사용합니다; IronPDF는 RenderingOptions를 사용합니다:
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
// pdforge: Properties on converter
converter.PageSize = PageSize.A4;
converter.Orientation = PageOrientation.Landscape;
// IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
' pdforge: Properties on converter
converter.PageSize = PageSize.A4
converter.Orientation = PageOrientation.Landscape
' IronPDF: Properties on RenderingOptions
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
헤더/푸터 플레이스홀더 구문
헤더나 푸터에 페이지 번호를 사용하는 경우, 플레이스홀더 문법이 다릅니다:
//pdforgeplaceholders
"Page {page} of {totalPages}"
//IronPDFplaceholders
"Page {page} of {total-pages}" // Note: hyphen in total-pages
//pdforgeplaceholders
"Page {page} of {totalPages}"
//IronPDFplaceholders
"Page {page} of {total-pages}" // Note: hyphen in total-pages
'pdforgeplaceholders
"Page {page} of {totalPages}"
'IronPDFplaceholders
"Page {page} of {total-pages}" ' Note: hyphen in total-pages
이동 후 새로운 기능
IronPDF로 마이그레이션한 후 pdforge가 제공할 수 없는 기능을 얻습니다:
PDF 병합
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
텍스트 추출
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string allText = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim allText As String = pdf.ExtractAllText()
워터마크
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
비밀번호 보호
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
기능 비교 요약
| 기능 | pdforge | IronPDF |
|---|---|---|
| HTML to PDF | ✓ | ✓ |
| URL을 PDF로 변환 | ✓ | ✓ |
| 페이지 설정 | ✓ | ✓ |
| 오프라인 사용 가능 | ✗ | ✓ |
| 로컬 처리 | ✗ | ✓ |
| PDF 병합 | ✗ | ✓ |
| PDF 분할 | ✗ | ✓ |
| 텍스트 추출 | ✗ | ✓ |
| 워터마크 | ✗ | ✓ |
| 폼 채우기 | ✗ | ✓ |
| 디지털 서명 | ✗ | ✓ |
| 비밀번호 보호 | ✗ | ✓ |
| 비율 제한 없음 | ✗ | ✓ |
| 일회성 라이선스 | ✗ | ✓ |
마이그레이션 체크리스트
사전 마이그레이션
- 코드베이스에 있는 모든pdforgeAPI 호출 목록 작성
- 사용 중인 현재 구성 옵션 문서화 (페이지 크기, 방향)
- 업데이트할 헤더/푸터 플레이스홀더 식별하기 (
{totalPages}→{total-pages}) -IronPDF라이선스 키 저장 계획 (환경 변수 권장) -IronPDF체험판 라이선스로 먼저 테스트
패키지 변경 사항
pdforgeNuGet 패키지 제거PdfForgeNuGet 패키지 제거IronPdfNuGet Install-Package:dotnet add package IronPdf
코드 변경 사항
- 모든 네임스페이스 가져오기를 업데이트하기 (
using PdfForge;→using IronPdf;) - 용지 크기와 방향 열거형을 위한
using IronPdf.Rendering;추가 HtmlToPdfConverter을(를)ChromePdfRenderer으로 교체ConvertHtmlString()을(를)RenderHtmlAsPdf()으로 교체ConvertUrl()을(를)RenderUrlAsPdf()으로 교체File.WriteAllBytes()을(를)pdf.SaveAs()으로 교체PageSize속성을RenderingOptions.PaperSize으로 이동Orientation속성을RenderingOptions.PaperOrientation으로 이동- 열거형 이름 업데이트하기 (
PageSize.A4→PdfPaperSize.A4) - 열거형 이름 업데이트하기 (
PageOrientation.Landscape→PdfPaperOrientation.Landscape) - 헤더/푸터의 플레이스홀더 문법 업데이트
마이그레이션 이후
- PDF 출력 품질이 기대에 부합하는지 테스트하세요
- 오프라인 작업이 작동하는지 확인
- 구성에서 API 자격 증명 제거
- 필요에 따라 새로운 기능 추가 (병합, 워터마크, 보안)

