C#에서 ComPDFKit에서 IronPDF로 마이그레이션하는 방법
ComPDFKit은 강력한 PDF 조작 기능을 제공하지만 몇 가지 요인 때문에 개발 팀이 더 확립된 대안을 고려하게 됩니다.
시장 성숙도 및 생태계 비교
ComPDFKit은 새로 진입한 시장 진입자에게 흔한 문서화 간극, 작은 커뮤니티, 제한된 Stack Overflow 커버리지와 같은 문제를 겪고 있습니다. IronPDF의 10년간의 정제는 대규모 프로젝트가 요구하는 안정성과 리소스를 제공합니다.
| 측면 | ComPDFKit | IronPDF |
|---|---|---|
| HTML-에서-PDF | 수동 HTML 파싱 필요 | 코드 기본 Chromium 렌더링 |
| 시장 성숙도 | 신입 참가자 | 10년 이상, 배틀 테스트됨 |
| 커뮤니티 규모 | 작고 제한된 Stack Overflow | 큰 활발한 커뮤니티 |
| 문서화 | 일부 갭 | 광범위한 튜토리얼 및 가이드 |
| 다운로드 | 성장 중 | 1,000만 이상의 NuGet 다운로드 |
| API 스타일 | C++의 영향을 받은, 장황한 | 현대 .NET 유창 API |
| 메모리 관리 | 수동 Release() 호출 |
자동 GC 처리 |
기능 패리티
두 라이브러리 모두 포괄적인 PDF 기능을 지원합니다:
| 기능 | ComPDFKit | IronPDF |
|---|---|---|
| HTML to PDF | 기본/수동 | ✅네이티브 Chromium |
| URL을 PDF로 변환 | 수동 구현 | ✅내장 |
| 처음부터 PDF 생성 | ✅ | ✅ |
| PDF 편집 | ✅ | ✅ |
| 텍스트 추출 | ✅ | ✅ |
| 병합/분할 | ✅ | ✅ |
| 디지털 서명 | ✅ | ✅ |
| 양식 채우기 | ✅ | ✅ |
| 워터마크 | ✅ | ✅ |
| 크로스 플랫폼 | 윈도우, 리눅스, macOS | 윈도우, 리눅스, macOS |
주요 마이그레이션 혜택
- 우수한 HTML 렌더링: IronPDF의 Chromium 엔진은 최신 CSS3, JavaScript 및 반응형 레이아웃을 네이티브로 처리합니다
- 성숙한 생태계: 10년 이상의 개선, 폭넓은 문서화 및 검증된 안정성
- 더 간단한 API: 보일러플레이트 코드 감소,
Release()호출로 수동 메모리 관리 불필요 - 더 나은 .NET 통합: 네이티브 async/await, LINQ 지원, 플루언트 인터페이스
- 광범위한 리소스: 수천 개의 Stack Overflow 답변 및 커뮤니티 예제
이전 준비
필수 조건
환경이 다음 요구 사항을 충족하는지 확인하세요:
- .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9
- Visual Studio 2019+ 또는 VS Code와 C# 확장
- NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공)
ComPDFKit사용 감사
해결책 디렉토리에서 이러한 명령어를 실행하여 모든ComPDFKit참조를 식별하세요:
# Find allComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .
# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
# Find allComPDFKitusages in your codebase
grep -r "using ComPDFKit" --include="*.cs" .
grep -r "CPDFDocument\|CPDFPage\|CPDFAnnotation" --include="*.cs" .
# Find NuGet package references
grep -r "ComPDFKit" --include="*.csproj" .
예상해야 할 주요 변경사항
| 변경 | ComPDFKit | IronPDF | 영향 |
|---|---|---|---|
| 문서 로딩 | CPDFDocument.InitWithFilePath() |
PdfDocument.FromFile() |
메소드명 변경 |
| 저장 | document.WriteToFilePath() |
pdf.SaveAs() |
메소드명 변경 |
| 메모리 정리 | document.Release() 필요 |
자동 (GC) | 수동 정리 제거 |
| 페이지 접근 | document.PageAtIndex(i) |
pdf.Pages[i] |
배열 스타일 접근 |
| 페이지 인덱싱 | 0 기반 | 0 기반 | 변경 필요 없음 |
| HTML 렌더링 | 수동 구현 | RenderHtmlAsPdf() |
주요 단순화 |
| 텍스트 추출 | textPage.GetText() |
pdf.ExtractAllText() |
단순화된 API |
단계별 마이그레이션 프로세스
1단계: NuGet 패키지 업데이트
ComPDFKit 패키지를 제거하고 IronPDF를 설치하세요:
# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework
# Install IronPDF
dotnet add package IronPdf
# RemoveComPDFKitpackages
dotnet remove package ComPDFKit.NetCore
dotnet remove package ComPDFKit.NetFramework
# Install IronPDF
dotnet add package IronPdf
2단계: 네임스페이스 참조 업데이트
ComPDFKit 네임스페이스를 IronPDF로 교체하세요:
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;
// Add this
using IronPdf;
// Remove these
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFPage;
using ComPDFKit.PDFAnnotation;
using ComPDFKit.Import;
// Add this
using IronPdf;
Imports IronPdf
3단계: 라이선스 구성
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Global.asax)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
완전한 API 마이그레이션 참조
문서 작업
| 작업 | ComPDFKit | IronPDF |
|---|---|---|
| 빈 문서 만들기 | CPDFDocument.CreateDocument() |
new PdfDocument() |
| 파일에서 로드 | CPDFDocument.InitWithFilePath(path) |
PdfDocument.FromFile(path) |
| 스트림에서 로드 | CPDFDocument.InitWithStream(stream) |
PdfDocument.FromStream(stream) |
| 파일에 저장 | document.WriteToFilePath(path) |
pdf.SaveAs(path) |
| 페이지 수 가져오기 | document.PageCount |
pdf.PageCount |
| 릴리스/처리 | document.Release() |
필요하지 않음 |
HTML을 PDF로 변환
| 작업 | ComPDFKit | IronPDF |
|---|---|---|
| HTML 문자열을 PDF로 변환 | 수동 구현 필요 | renderer.RenderHtmlAsPdf(html) |
| HTML 파일을 PDF로 변환 | 수동 구현 필요 | renderer.RenderHtmlFileAsPdf(path) |
| URL을 PDF로 변환 | 수동 구현 필요 | renderer.RenderUrlAsPdf(url) |
| 페이지 크기 설정 | 페이지 생성 매개변수를 통해 | renderer.RenderingOptions.PaperSize |
| 여백 설정 | 편집자 구성을 통해 | renderer.RenderingOptions.MarginTop 등 |
병합 및 분할 작업
| 작업 | ComPDFKit | IronPDF |
|---|---|---|
| 문서 병합 | doc1.ImportPagesAtIndex(doc2, range, index) |
PdfDocument.Merge(pdf1, pdf2) |
| 문서 분할 | 페이지를 새 문서로 추출 | pdf.CopyPages(start, end) |
코드 마이그레이션 예제
HTML을 PDF로 변환
ComPDFKit과 IronPDF의 가장 큰 차이점은 HTML 렌더링입니다. ComPDFKit은 수동 텍스트 배치를 필요로 하는 반면 IronPDF는 자사 Chromium 엔진으로 HTML을 네이티브로 렌더링합니다.
ComPDFKit 구현:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;
class Program
{
static void Main()
{
// ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
// The closest equivalent is to create a blank document and lay
// out primitives manually, or call ComPDFKit's separate cloud
// Conversion API (a different SKU).
var document = CPDFDocument.CreateDocument();
document.InsertPage(0, 595, 842, string.Empty);
document.WriteToFilePath("output.pdf");
document.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using System;
class Program
{
static void Main()
{
// ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
// The closest equivalent is to create a blank document and lay
// out primitives manually, or call ComPDFKit's separate cloud
// Conversion API (a different SKU).
var document = CPDFDocument.CreateDocument();
document.InsertPage(0, 595, 842, string.Empty);
document.WriteToFilePath("output.pdf");
document.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports System
Module Program
Sub Main()
' ComPDFKit's .NET SDK has no native HTML-to-PDF rendering.
' The closest equivalent is to create a blank document and lay
' out primitives manually, or call ComPDFKit's separate cloud
' Conversion API (a different SKU).
Dim document = CPDFDocument.CreateDocument()
document.InsertPage(0, 595, 842, String.Empty)
document.WriteToFilePath("output.pdf")
document.Release()
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.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>");
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is HTML content.</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
IronPDF의 ChromePdfRenderer는 수동 텍스트 위치 지정 및 편집기 관리의 필요성을 없애줍니다. 더 많은 HTML 변환 옵션은 HTML to PDF 문서를 참조하십시오.
여러 PDF 병합
ComPDFKit 구현:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;
class Program
{
static void Main()
{
var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
// Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
document1.WriteToFilePath("merged.pdf");
document1.Release();
document2.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.Import;
using System;
class Program
{
static void Main()
{
var document1 = CPDFDocument.InitWithFilePath("file1.pdf");
var document2 = CPDFDocument.InitWithFilePath("file2.pdf");
// Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" + (document2.PageCount - 1), document1.PageCount);
document1.WriteToFilePath("merged.pdf");
document1.Release();
document2.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.Import
Imports System
Module Program
Sub Main()
Dim document1 = CPDFDocument.InitWithFilePath("file1.pdf")
Dim document2 = CPDFDocument.InitWithFilePath("file2.pdf")
' Import pages from document2 into document1
document1.ImportPagesAtIndex(document2, "0-" & (document2.PageCount - 1), document1.PageCount)
document1.WriteToFilePath("merged.pdf")
document1.Release()
document2.Release()
End Sub
End Module
IronPDF 구현:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("file1.pdf");
var pdf2 = PdfDocument.FromFile("file2.pdf");
var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("file1.pdf")
Dim pdf2 = PdfDocument.FromFile("file2.pdf")
Dim merged = PdfDocument.Merge(New List(Of PdfDocument) From {pdf1, pdf2})
merged.SaveAs("merged.pdf")
End Sub
End Module
IronPDF의 정적 Merge 메소드는 페이지 범위 문자열을 사용한 자세한 ImportPagesAtIndex 패턴을 없애줍니다. 더 많은 옵션은 PDF 병합 문서를 참조하십시오.
워터마크 추가
워터마킹은 ComPDFKit의 속성 기반 CPDFWatermark 구성과 IronPDF의 HTML 기반 스타일링의 차이를 보여줍니다.
ComPDFKit 구현:
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;
class Program
{
static void Main()
{
var document = CPDFDocument.InitWithFilePath("input.pdf");
CPDFWatermark watermark = document.InitWatermark(
C_Watermark_Type.WATERMARK_TYPE_TEXT);
watermark.SetText("CONFIDENTIAL");
watermark.SetFontName("Helvetica");
watermark.SetFontSize(48);
watermark.SetTextRGBColor(255, 0, 0);
watermark.SetRotation(45);
watermark.SetOpacity(76); // 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
watermark.SetPages($"0-{document.PageCount - 1}");
watermark.SetFront(true);
watermark.CreateWatermark();
document.WriteToFilePath("watermarked.pdf");
document.Release();
}
}
// NuGet: Install-Package ComPDFKit.NetCore
using ComPDFKit.PDFDocument;
using ComPDFKit.PDFWatermark;
using System;
class Program
{
static void Main()
{
var document = CPDFDocument.InitWithFilePath("input.pdf");
CPDFWatermark watermark = document.InitWatermark(
C_Watermark_Type.WATERMARK_TYPE_TEXT);
watermark.SetText("CONFIDENTIAL");
watermark.SetFontName("Helvetica");
watermark.SetFontSize(48);
watermark.SetTextRGBColor(255, 0, 0);
watermark.SetRotation(45);
watermark.SetOpacity(76); // 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
watermark.SetPages($"0-{document.PageCount - 1}");
watermark.SetFront(true);
watermark.CreateWatermark();
document.WriteToFilePath("watermarked.pdf");
document.Release();
}
}
Imports ComPDFKit.PDFDocument
Imports ComPDFKit.PDFWatermark
Imports System
Class Program
Shared Sub Main()
Dim document = CPDFDocument.InitWithFilePath("input.pdf")
Dim watermark As CPDFWatermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT)
watermark.SetText("CONFIDENTIAL")
watermark.SetFontName("Helvetica")
watermark.SetFontSize(48)
watermark.SetTextRGBColor(255, 0, 0)
watermark.SetRotation(45)
watermark.SetOpacity(76) ' 0..255
watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER)
watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER)
watermark.SetPages($"0-{document.PageCount - 1}")
watermark.SetFront(True)
watermark.CreateWatermark()
document.WriteToFilePath("watermarked.pdf")
document.Release()
End Sub
End Class
IronPDF 구현:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("input.pdf");
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation: 45,
verticalAlignment: VerticalAlignment.Middle,
horizontalAlignment: HorizontalAlignment.Center);
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Imports System
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("input.pdf")
pdf.ApplyWatermark("<h1 style='color:rgba(255,0,0,0.3);'>CONFIDENTIAL</h1>",
rotation:=45,
verticalAlignment:=VerticalAlignment.Middle,
horizontalAlignment:=HorizontalAlignment.Center)
pdf.SaveAs("watermarked.pdf")
End Sub
End Module
IronPDF는 다단계 CPDFWatermark 구성을 HTML/CSS 스타일링을 사용한 단일 메서드 호출로 줄입니다. 더 많은 옵션은 워터마크 문서를 참조하세요.
텍스트 추출
ComPDFKit 구현:
using ComPDFKit.PDFDocument;
using System.Text;
var document = CPDFDocument.InitWithFilePath("document.pdf");
// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
var page = document.PageAtIndex(i);
var textPage = page.GetTextPage();
allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
textPage.Release();
page.Release();
}
document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
using ComPDFKit.PDFDocument;
using System.Text;
var document = CPDFDocument.InitWithFilePath("document.pdf");
// Extract text (verbose)
var allText = new StringBuilder();
for (int i = 0; i < document.PageCount; i++)
{
var page = document.PageAtIndex(i);
var textPage = page.GetTextPage();
allText.AppendLine(textPage.GetText(0, textPage.CountChars()));
textPage.Release();
page.Release();
}
document.WriteToFilePath("output.pdf");
document.Release(); // Must remember to release!
Imports ComPDFKit.PDFDocument
Imports System.Text
Dim document = CPDFDocument.InitWithFilePath("document.pdf")
' Extract text (verbose)
Dim allText As New StringBuilder()
For i As Integer = 0 To document.PageCount - 1
Dim page = document.PageAtIndex(i)
Dim textPage = page.GetTextPage()
allText.AppendLine(textPage.GetText(0, textPage.CountChars()))
textPage.Release()
page.Release()
Next
document.WriteToFilePath("output.pdf")
document.Release() ' Must remember to release!
IronPDF 구현:
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text (one-liner)
string allText = pdf.ExtractAllText();
pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
using IronPdf;
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text (one-liner)
string allText = pdf.ExtractAllText();
pdf.SaveAs("output.pdf");
// No Release() needed - GC handles cleanup
Imports IronPdf
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract text (one-liner)
Dim allText As String = pdf.ExtractAllText()
pdf.SaveAs("output.pdf")
' No Release() needed - GC handles cleanup
IronPDF는 수동 Release() 호출이 필요한 여러 줄 텍스트 추출을 단일 메서드로 줄여줍니다. 추출 옵션에 대한 자세한 내용은 텍스트 추출 문서를 참조하십시오.
비밀번호 보호
IronPDF 구현:
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
using IronPdf;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>");
// Set security
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Confidential Document</h1>")
' Set security
pdf.SecuritySettings.UserPassword = "userPassword"
pdf.SecuritySettings.OwnerPassword = "ownerPassword"
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")
포괄적인 보안 옵션은 암호화 문서를 참조하십시오.
중요한 마이그레이션 노트
모든 Release() 호출 제거
가장 영향을 미치는 변경은 수동 메모리 관리 제거입니다. ComPDFKit은 문서, 페이지 및 텍스트 페이지에 대해 명시적인 Release() 호출을 요구합니다. IronPDF는 .NET 가비지 콜렉션을 통해 자동으로 이를 처리합니다:
//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();
//IronPDF- no equivalent needed
// GC handles cleanup automatically
//ComPDFKit- manual cleanup required
document.Release();
page.Release();
textPage.Release();
//IronPDF- no equivalent needed
// GC handles cleanup automatically
'ComPDFKit- manual cleanup required
document.Release()
page.Release()
textPage.Release()
'IronPDF- no equivalent needed
' GC handles cleanup automatically
네이티브 HTML 렌더링
ComPDFKit은 편집자 API로 수동 텍스트 배치를 필요로 합니다. IronPDF는 최신 CSS3, JavaScript 및 반응형 레이아웃을 지원하는 자사 Chromium 엔진으로 HTML/CSS를 네이티브로 렌더링합니다.
동일한 페이지 인덱싱
두 라이브러리는 0 기반 인덱스를 사용합니다 (Pages[0]가 첫 번째 페이지임) — 페이지 접근 코드에 변경이 필요하지 않습니다.
단순화된 텍스트 추출
멀티라인 GetTextPage() + GetText() + Release() 패턴을 단일 ExtractAllText() 호출로 대체하세요.
플루언트 머지 API
ImportPagesAtIndex(doc2, "0-9", pageCount)를 단순한 Merge(pdf1, pdf2)로 대체하세요.
마이그레이션 후 점검 목록
코드 마이그레이션을 완료한 후, 다음을 확인하십시오:
- PDF 생성이 올바르게 작동하는지 확인하기 위해 모든 단위 테스트를 수행합니다
- PDF 출력 품질을 비교하세요 (IronPDF의 Chromium 엔진은 보통 더 나은 렌더링을 제공합니다)
- 복잡한 CSS와 JavaScript로 HTML 렌더링 테스트
- 텍스트 추출 정확성을 확인합니다
- 양식 기능 테스트
- 묶음 작업에 대한 성능 테스트
- 모든 대상 환경에서 테스트합니다
- CI/CD 파이프라인을 업데이트하세요 -ComPDFKit라이선스 파일 제거
추가 리소스
ComPDFKit에서 IronPDF로의 마이그레이션은 수동 메모리 관리와 Release() 호출의 필요성을 없애고 ComPDFKit에서 부족한 네이티브 HTML-PDF 렌더링을 제공합니다. IronPDF의 성숙한 생태계로의 전환은 문서의 깊이, 커뮤니티 지원 및 기업 프로젝트가 요구하는 검증된 안정성을 제공합니다.

