C#에서 ExpertPdf에서 IronPDF로 마이그레이션하는 방법
ExpertPdf는 수년간 개발자를 위해 서비스해온 상업용 HTML-to-PDF 변환기입니다. 그러나 ExpertPdf는 오늘날 빠르게 변화하는 개발 환경에서 상당한 도전에 직면하고 있습니다: 2018년 이후 업데이트되지 않은 문서, 최신 CSS3 기능이 없는 이전 Chrome 버전에 의존, 구식 기술에 대해 $550-$1,200의 프리미엄 요금, 병합, 보안, 분할에 대한 별도의 라이선스가 필요한 분절된 제품 Suite. 이 포괄적인 가이드는 최신 Chromium 렌더링, 월별 업데이트 및 올인원 패키지 아키텍처를 갖춘 현대 .NET PDF 라이브러리인 IronPDF로의 단계별 마이그레이션 경로를 제공합니다.
왜 ExpertPdf에서 IronPDF로 마이그레이션해야 하는가?
ExpertPdf는 개발 팀이 현대적인 대안을 평가하도록 동기를 부여하는 여러 도전을 제시합니다. 이러한 문제를 이해하는 것은 마이그레이션 전략을 계획하는 데 필수적입니다.
ExpertPdf문제들
-
2018년 이후 업데이트되지 않은 문서: ExpertPdf의 문서는 6년 이상 동안 업데이트되지 않았습니다. .NET 생태계가 진화함에 따라 현재 정보, 예제 및 모범 사례를 찾는 것이 점점 어려워지고 있습니다.
-
이전 Chrome 버전: ExpertPdf는 렌더링에 이전 버전의 Chrome을 사용합니다. 최신 CSS3 기능 (Flexbox, Grid, CSS Variables)이 올바르게 렌더링되지 않을 수 있으며, 보안 패치는 적용되지 않습니다.
-
유산 기술에 대한 프리미엄 요금: $550-$1,200의 라이선스 비용에도 불구하고 ExpertPdf는 구식 랜더링 기술을 제공합니다.
-
분절된 제품 Suite: ExpertPdf는 HtmlToPdf 변환기, PDF 병합기, PDF 보안, PDF 분할기, PDF to Image와 같은 기능을 위한 별도 패키지를 판매하며 각각 별도의 라이센스가 필요합니다.
- 제한된 현대 .NET 지원: ExpertPdf는 .NET Core 패키지를 가지고 있지만, 현대 .NET 버전 및 관행에 뒤떨어진다.
아키텍처 비교
| 측면 | ExpertPdf | IronPDF |
|---|---|---|
| 문서화 | 2018년 이후로 동결 | 지속적으로 업데이트됨 |
| 렌더링 엔진 | 레거시 Chrome | 최신 Chromium |
| CSS 지원 | 제한된 CSS3 | 전체 CSS3 (Flexbox, Grid) |
| 가격 | $550-$1,200 | 경쟁력 있는 가격 |
| 업데이트 빈도 | 드문드문함 | 월별 릴리스 |
| 제품 모델 | 조각화된 (5+ DLLs) | 모든 기능 통합된 라이브러리 |
| 최신 .NET | 제한적 | .NET 6/7/8/9+ 네이티브 |
| 비동기 지원 | 제한적 | 완전한 async/await |
주요 마이그레이션 혜택
- 현대적 렌더링: 최신 Chromium 엔진을 사용한 픽셀-퍼펙트 출력
- 올인원 패키지: PDF 생성, 병합, 보안, 추출이 하나의 NuGet에 포함됨
- 활발한 개발: 매달 새로운 기능과 보안 패치가 포함된 업데이트
- 더 나은 문서화: 포괄적인 튜토리얼 및 예제
- 진정한 크로스 플랫폼: Windows, Linux, macOS, Docker 지원
이전 준비
필수 조건
환경이 다음 요구 사항을 충족하는지 확인하세요:
- .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ 또는 VS Code와 C# 확장
- NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)
ExpertPdf사용 감사
해당 명령어를 솔루션 디렉토리에서 실행하여 모든ExpertPdf참조를 식별하세요:
# Find allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
# Find allExpertPdfreferences
grep -r "ExpertPdf\|PdfConverter\|PDFMerge\|PdfSecurityManager" --include="*.cs" .
# Check NuGet packages
dotnet list package | grep -i "ExpertPdf"
일반적인ExpertPdf패키지를 찾으세요:
ExpertPdf.HtmlToPdf- HTML에서 PDF로 변환ExpertPdf.PDFMerge- PDF 병합ExpertPdf.PDFSecurity- 암호화 및 비밀번호ExpertPdf.PDFSplit- PDF 분할ExpertPdf.PdfToImage- PDF에서 이미지로 변환
핵심 패턴 변경 이해하기
ExpertPdf는 직접 바이트 배열 반환 메서드를 사용하는 PdfConverter을 사용합니다. IronPDF는 ChromePdfRenderer을 사용하여 저장 전에 추가 조작 기능을 제공하는 PdfDocument 객체를 반환합니다.
단계별 마이그레이션 프로세스
1단계: NuGet 패키지 업데이트
모든ExpertPdf패키지를 제거하고 IronPDF를 설치하세요:
# Remove allExpertPdfpackages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage
# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove allExpertPdfpackages
dotnet remove package ExpertPdf.HtmlToPdf
dotnet remove package ExpertPdf.PDFMerge
dotnet remove package ExpertPdf.PDFSecurity
dotnet remove package ExpertPdf.PDFSplit
dotnet remove package ExpertPdf.PdfToImage
# InstallIronPDF(includes all features)
dotnet add package IronPdf
2단계: 네임스페이스 참조 업데이트
ExpertPdf 네임스페이스를 IronPDF로 교체하세요:
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
// Remove these
using ExpertPdf.HtmlToPdf;
// Add this
using IronPdf;
Imports IronPdf
3단계: 라이선스 구성
ExpertPdf는 변환기별 라이센싱을 사용합니다. 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"
완전한 API 마이그레이션 참조
핵심 클래스 매핑
| ExpertPdf 클래스 | IronPDF 동등 |
|---|---|
PdfConverter |
ChromePdfRenderer |
PdfDocumentOptions |
ChromePdfRenderOptions |
PdfHeaderOptions |
TextHeaderFooter 또는 HtmlHeaderFooter |
PdfFooterOptions |
TextHeaderFooter 또는 HtmlHeaderFooter |
PDFMerge |
PdfDocument.Merge() |
메서드 매핑
| ExpertPdf 메서드 | IronPDF 메소드 |
|---|---|
pdfConverter.GetPdfBytesFromHtmlString(html) |
renderer.RenderHtmlAsPdf(html).BinaryData |
pdfConverter.GetPdfBytesFromUrl(url) |
renderer.RenderUrlAsPdf(url).BinaryData |
pdfConverter.GetPdfBytesFromHtmlFile(path) |
renderer.RenderHtmlFileAsPdf(path).BinaryData |
pdfConverter.SavePdfFromUrlToFile(url, path) |
renderer.RenderUrlAsPdf(url).SaveAs(path) |
옵션 매핑
| ExpertPdf 옵션 | IronPDF RenderingOptions |
|---|---|
PdfDocumentOptions.PdfPageSize = PdfPageSize.A4 |
PaperSize = PdfPaperSize.A4 |
PdfDocumentOptions.PdfPageOrientation = Portrait |
PaperOrientation = PdfPaperOrientation.Portrait |
PdfDocumentOptions.MarginTop |
MarginTop |
PdfHeaderOptions.HeaderText |
TextHeader.CenterText |
PdfFooterOptions.FooterText |
TextFooter.RightText |
페이지 번호 토큰 변환
ExpertPdf와 IronPDF는 페이지 번호에 대해 다른 플레이스홀더 구문을 사용합니다:
| ExpertPdf | IronPDF |
|---|---|
&p; |
{page} |
&P; |
{total-pages} |
코드 마이그레이션 예제
HTML을 PDF로 변환
기본 HTML에서 PDF로 변환은 ExpertPdf의 바이트 배열 패턴에서 IronPDF의 문서 객체 접근으로의 변경을 보여줍니다.
ExpertPdf 구현:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Convert HTML string to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
Console.WriteLine("PDF created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Convert HTML string to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlString("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
Console.WriteLine("PDF created successfully!")
End Sub
End Module
IronPDF 구현:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF from HTML string
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>");
// Save to file
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF from HTML string
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF document.</p>")
' Save to file
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully!")
End Sub
End Class
IronPDF의 접근 방식은 추가 조작(병합, 워터마킹, 보안)을 가능하게 하여 저장하기 전에 PdfDocument 객체를 반환합니다. 더 많은 옵션을 보려면 HTML to PDF 문서를 참조하세요.
페이지 설정이 있는 URL을 PDF로
ExpertPdf 구현:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;
// Convert URL to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromUrl("https://www.example.com");
// Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Module Program
Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Set page size and orientation
pdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4
pdfConverter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait
' Convert URL to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromUrl("https://www.example.com")
' Save to file
System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes)
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Module
IronPDF 구현:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
// Convert URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
// Save to file
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Set page size and orientation
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
' Convert URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
' Save to file
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully!")
End Sub
End Class
IronPDF의 RenderingOptions은 페이지 설정을 위한 직접적인 속성 접근을 제공합니다. 더 많은 옵션을 보려면 URL to PDF 문서를 참조하세요.
페이지 번호가 있는 헤더 및 푸터
이 예에서는 헤더/풋터 설정의 중요한 차이를 보여줍니다. ExpertPdf는 &P; 토큰이 있는 별도의 PdfHeaderOptions 및 PdfFooterOptions 클래스를 사용하는 반면, IronPDF는 TextHeaderFooter을 {total-pages} 플레이스홀더와 함께 사용합니다.
ExpertPdf 구현:
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package ExpertPdf.HtmlToPdf
using ExpertPdf.HtmlToPdf;
using System;
class Program
{
static void Main()
{
// Create the PDF converter
PdfConverter pdfConverter = new PdfConverter();
// Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = true;
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header";
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center;
// Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = true;
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;";
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right;
// Convert HTML file to PDF
byte[] pdfBytes = pdfConverter.GetPdfBytesFromHtmlFile("input.html");
// Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes);
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports ExpertPdf.HtmlToPdf
Imports System
Class Program
Shared Sub Main()
' Create the PDF converter
Dim pdfConverter As New PdfConverter()
' Enable header
pdfConverter.PdfHeaderOptions.ShowHeader = True
pdfConverter.PdfHeaderOptions.HeaderText = "Document Header"
pdfConverter.PdfHeaderOptions.HeaderTextAlignment = HorizontalTextAlign.Center
' Enable footer with page numbers
pdfConverter.PdfFooterOptions.ShowFooter = True
pdfConverter.PdfFooterOptions.FooterText = "Page &p; of &P;"
pdfConverter.PdfFooterOptions.FooterTextAlignment = HorizontalTextAlign.Right
' Convert HTML file to PDF
Dim pdfBytes As Byte() = pdfConverter.GetPdfBytesFromHtmlFile("input.html")
' Save to file
System.IO.File.WriteAllBytes("output-with-header-footer.pdf", pdfBytes)
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
IronPDF 구현:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
// Create a PDF renderer
var renderer = new ChromePdfRenderer();
// Configure header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "Document Header",
DrawDividerLine = true
};
// Configure footer with page numbers
renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true
};
// Convert HTML file to PDF
var pdf = renderer.RenderHtmlFileAsPdf("input.html");
// Save to file
pdf.SaveAs("output-with-header-footer.pdf");
Console.WriteLine("PDF with headers and footers created successfully!");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
' Create a PDF renderer
Dim renderer = New ChromePdfRenderer()
' Configure header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "Document Header",
.DrawDividerLine = True
}
' Configure footer with page numbers
renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True
}
' Convert HTML file to PDF
Dim pdf = renderer.RenderHtmlFileAsPdf("input.html")
' Save to file
pdf.SaveAs("output-with-header-footer.pdf")
Console.WriteLine("PDF with headers and footers created successfully!")
End Sub
End Class
IronPDF의 TextHeaderFooter은 선택적 분할선이 있는 LeftText, CenterText 및 RightText 속성을 제공합니다. HTML 기반 헤더의 경우 HtmlHeaderFooter을 사용하십시오. 더 많은 옵션은 헤더 및 푸터 문서를 참조하세요.
중요한 마이그레이션 노트
라이센스 키 위치
ExpertPdf는 변환기별 라이센싱을 사용합니다. IronPDF는 시작 시 한 번 설정되는 하나의 글로벌 라이센스를 사용합니다:
//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
//ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE";
//IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE";
'ExpertPdf- per converter
pdfConverter.LicenseKey = "EXPERTPDF-LICENSE"
'IronPDF- global, set once
IronPdf.License.LicenseKey = "IRONPDF-LICENSE"
페이지 번호 토큰 변환
ExpertPdf 토큰을IronPDF플레이스홀더로 교체하세요:
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
// ExpertPdf
"Page &p; of &P;"
// IronPDF
"Page {page} of {total-pages}"
분산된 패키지 통합
ExpertPdf의 개별 패키지(PDFMerge, PDFSecurity, PDFSplit, PdfToImage)는 IronPDF의 하나의 패키지에 모두 포함됩니다:
//ExpertPdf- requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
//ExpertPdf- requires separate PDFMerge package
var merger = new PdfMerge();
merger.AppendPDFFile("file1.pdf");
merger.AppendPDFFile("file2.pdf");
merger.SaveMergedPDFToFile("merged.pdf");
//IronPDF- included in main package
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
'ExpertPdf- requires separate PDFMerge package
Dim merger As New PdfMerge()
merger.AppendPDFFile("file1.pdf")
merger.AppendPDFFile("file2.pdf")
merger.SaveMergedPDFToFile("merged.pdf")
'IronPDF- included in main package
Dim pdf1 As PdfDocument = PdfDocument.FromFile("file1.pdf")
Dim pdf2 As PdfDocument = PdfDocument.FromFile("file2.pdf")
Dim merged As PdfDocument = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
더 많은 병합 옵션을 보려면 PDF 병합 문서를 참조하세요.
맞춤 페이지 크기
ExpertPdf는 포인트를 사용합니다. IronPDF는 밀리미터를 사용합니다. 변환: points / 72 * 25.4 = mm
마이그레이션 후 점검 목록
코드 마이그레이션을 완료한 후, 다음을 확인하십시오:
- 생성된 PDF의 시각적 비교
- 헤더/푸터 및 페이지 번호 확인
- 보안/암호화 설정 테스트
- 병합 작업 확인
- 사용자 정의 페이지 크기 확인
- 성능 벤치마킹
- 크로스 플랫폼 테스트 -ExpertPdf라이센스 파일 제거
- 문서 업데이트
PDF 인프라의 미래 대비
.NET 10이 다가오고 C# 14가 새로운 언어 기능을 도입함에 따라 활성 개발과 현대적 렌더링을 지원하는 PDF 라이브러리를 선택하는 것은 장기적인 호환성을 보장합니다. IronPDF의 매월 업데이트와 최신 Chromium 엔진은 프로젝트가 2025년과 2026년으로 확장됨에 따라 CSS3 레이아웃(Flexbox, Grid)과 함께 계속 올바르게 작동할 PDF 생성의 기초를 제공합니다. ExpertPdf의 구식 Chrome 버전과는 다릅니다.
추가 리소스
ExpertPdf에서 IronPDF로의 전환은 고정된 문서, 구식 Chrome 렌더링, 조각화된 제품 라이선싱, 제한된 현대적 .NET 지원의 문제를 없앱니다. 최신 Chromium 엔진을 사용하는 활발히 유지 보수되는 라이브러리로의 전환은 PDF 생성을 진화하는 웹 표준과 .NET Framework와 동기화되게 합니다.

