마이그레이션 가이드 C#에서 Aspose.PDF에서 IronPDF로 마이그레이션하는 방법 커티스 차우 게시됨:1월 11, 2026 다운로드 IronPDF NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 Full Comparison Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Aspose PDF on pricing, HTML support, and licensing. View Full Comparison Aspose.PDF에서 마이그레이션해야 하는 이유는 무엇인가요? Aspose.PDF는 Enterprise급 기능을 제공하지만 PDF 생성 요구에 맞는 현대적인 대안을 찾기 위해 여러 요소가 개발 팀을 이끌고 있습니다. 비용 비교 Aspose.PDF는 연간 갱신으로 시간이 지남에 따라 상당히 누적되는 전통적인 Enterprise 라이선스 모델을 사용합니다: 측면 Aspose.PDF IronPDF 시작 가격 $1,199/개발자/년 $749 일회성 (Lite) 라이선스 모델 연간 구독 + 갱신 영구 라이선스 OEM 라이선스 $5,997+ 추가 비용 더 높은 티어에 포함됨 지원 추가 비용 티어 포함됨 총 3년 비용 $3,597+ per 개발자 $749 (한 번) HTML 렌더링 엔진 비교 Aspose.PDF는 현대 웹 표준에서 어려움을 겪고 있는 Flying Saucer CSS 엔진을 사용합니다. IronPDF는 전체 크로미엄 렌더링 엔진을 활용합니다: 기능 Aspose.PDF (Flying Saucer) IronPDF (Chromium) CSS3 지원 제한적 (오래된 CSS) 전체 CSS3 플렉스박스/그리드 지원되지 않음 지원됨 JavaScript 매우 제한적 지원됨 웹 폰트 부분적 완전함 모던 HTML5 제한적 완전함 렌더링 품질 변하기 쉬운 픽셀 완벽함 문서화된 성능 문제 사용자는 두 라이브러리 간의 성능 차이가 크다고 보고했습니다: 미터법 Aspose.PDF IronPDF HTML 렌더링 문서화된 성능 저하 (일부 경우 30배 느림) 최적화된 Chromium 엔진 대용량 문서 보고된 메모리 문제 효율적인 스트리밍 리눅스 성능 높은 CPU 사용량, 메모리 누수가 보고됨 안정적 Aspose.PDF vs. IronPDF: 주요 차이점 측면 Aspose.PDF IronPDF 가격 $1,199/개발자/연간 (구독) $749 일회성 (Lite) HTML 엔진 Flying Saucer (제한된 CSS) Chromium (전체 CSS3/JS) 성능 문서화된 속도 저하 최적화됨 라이선스 모델 연간 갱신 + .lic 파일 영구 + 코드 기반 키 Linux 지원 보고된 문제 (CPU, 메모리) 안정적 페이지 색인 1-based (Pages[1]) 0-based (Pages[0]) 이전 준비 필수 조건 환경이 다음 요구 사항을 충족하는지 확인하세요: .NET Framework 4.6.2+ 또는 .NET Core 3.1 / .NET 5-9 Visual Studio 2019+ 또는 VS Code와 C# 확장 NuGet 패키지 관리자 접근 -IronPDF라이선스 키 (ironpdf.com에서 무료 체험판 제공) Aspose.PDF 사용 감사 해당 솔루션 디렉토리에서 다음 명령을 실행하여 모든 Aspose.PDF 참조를 식별하십시오: # Find all Aspose.Pdf using statements grep -r "using Aspose.Pdf" --include="*.cs" . # Find HtmlLoadOptions usage grep -r "HtmlLoadOptions\|HtmlFragment" --include="*.cs" . # Find Facades usage grep -r "PdfFileEditor\|PdfFileMend\|PdfFileStamp" --include="*.cs" . # Find TextAbsorber usage grep -r "TextAbsorber\|TextFragmentAbsorber" --include="*.cs" . # Find all Aspose.Pdf using statements grep -r "using Aspose.Pdf" --include="*.cs" . # Find HtmlLoadOptions usage grep -r "HtmlLoadOptions\|HtmlFragment" --include="*.cs" . # Find Facades usage grep -r "PdfFileEditor\|PdfFileMend\|PdfFileStamp" --include="*.cs" . # Find TextAbsorber usage grep -r "TextAbsorber\|TextFragmentAbsorber" --include="*.cs" . SHELL 예상해야 할 주요 변경사항 Aspose.PDF 패턴 변경 필요 new Document() + Pages.Add() 대신 HTML 렌더링 사용 HtmlLoadOptions ChromePdfRenderer.RenderHtmlAsPdf() TextFragment + 수동 위치 지정 CSS 기반 위치 지정 PdfFileEditor.Concatenate() PdfDocument.Merge() TextFragmentAbsorber pdf.ExtractAllText() ImageStamp HTML 기반 워터마크 .lic 파일 라이선싱 코드 기반 라이센스 키 1-based 페이지 색인 생성 0-based 페이지 색인 생성 단계별 마이그레이션 프로세스 1단계: NuGet 패키지 업데이트 Aspose.PDF를 제거하고 IronPDF를 설치하십시오: # Remove Aspose.PDF dotnet remove package Aspose.PDF # Install IronPDF dotnet add package IronPdf # Remove Aspose.PDF dotnet remove package Aspose.PDF # Install IronPDF dotnet add package IronPdf SHELL 또는 패키지 관리자 콘솔을 통해: Uninstall-Package Aspose.PDF Install-Package IronPdf 2단계: 네임스페이스 참조 업데이트 Aspose.PDF 네임스페이스를 IronPDF로 교체하십시오: // Remove these using Aspose.Pdf; using Aspose.Pdf.Text; using Aspose.Pdf.Facades; using Aspose.Pdf.Generator; // Add these using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; // Remove these using Aspose.Pdf; using Aspose.Pdf.Text; using Aspose.Pdf.Facades; using Aspose.Pdf.Generator; // Add these using IronPdf; using IronPdf.Rendering; using IronPdf.Editing; ' Remove these ' Imports Aspose.Pdf ' Imports Aspose.Pdf.Text ' Imports Aspose.Pdf.Facades ' Imports Aspose.Pdf.Generator ' Add these Imports IronPdf Imports IronPdf.Rendering Imports IronPdf.Editing $vbLabelText $csharpLabel 3단계: 라이선스 구성 업데이트 Aspose.PDF는 .lic 파일 라이선싱을 사용합니다. IronPDF는 간단한 코드 기반 키를 사용합니다. Aspose.PDF 구현: var license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic"); var license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic"); Imports Aspose.Pdf Dim license As New License() license.SetLicense("Aspose.Pdf.lic") $vbLabelText $csharpLabel IronPDF 구현: IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY"; IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY" $vbLabelText $csharpLabel 완전한 API 마이그레이션 참조 핵심 클래스 매핑 Aspose.PDF 클래스 IronPDF 동등 Document PdfDocument HtmlLoadOptions ChromePdfRenderer TextFragmentAbsorber PdfDocument.ExtractAllText() PdfFileEditor PdfDocument.Merge() TextStamp / ImageStamp PdfDocument.ApplyWatermark() License IronPdf.License 문서 작업 Aspose.PDF 메소드 IronPDF 메소드 new Document() new PdfDocument() new Document(path) PdfDocument.FromFile(path) doc.Save(path) pdf.SaveAs(path) doc.Pages.Count pdf.PageCount doc.Pages.Delete(index) pdf.RemovePage(index) HTML을 PDF로 변환 Aspose.PDF 메소드 IronPDF 메소드 new HtmlLoadOptions() new ChromePdfRenderer() new Document(stream, htmlOptions) renderer.RenderHtmlAsPdf(html) new Document(path, htmlOptions) renderer.RenderHtmlFileAsPdf(path) 코드 마이그레이션 예제 HTML 문자열에서 PDF로 가장 일반적인 Aspose.PDF 작업은 접근 방식의 근본적인 차이를 보여줍니다—Aspose.PDF는 HTML을 MemoryStream에 래핑해야 하지만, IronPDF는 문자열을 직접 수용합니다. Aspose.PDF 구현: // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; using System.IO; using System.Text; class Program { static void Main() { string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent))) { var htmlLoadOptions = new HtmlLoadOptions(); var document = new Document(stream, htmlLoadOptions); document.Save("output.pdf"); } Console.WriteLine("PDF created from HTML string"); } } // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; using System.IO; using System.Text; class Program { static void Main() { string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"; using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent))) { var htmlLoadOptions = new HtmlLoadOptions(); var document = new Document(stream, htmlLoadOptions); document.Save("output.pdf"); } Console.WriteLine("PDF created from HTML string"); } } Imports Aspose.Pdf Imports System Imports System.IO Imports System.Text Module Program Sub Main() Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>" Using stream As New MemoryStream(Encoding.UTF8.GetBytes(htmlContent)) Dim htmlLoadOptions As New HtmlLoadOptions() Dim document As New Document(stream, htmlLoadOptions) document.Save("output.pdf") End Using Console.WriteLine("PDF created from HTML string") End Sub End Module $vbLabelText $csharpLabel IronPDF 구현: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created from HTML string"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>"; var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created from HTML string"); } } Imports IronPdf Imports System Class Program Shared Sub Main() Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML string.</p></body></html>" Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) pdf.SaveAs("output.pdf") Console.WriteLine("PDF created from HTML string") End Sub End Class $vbLabelText $csharpLabel IronPDF는 MemoryStream 래퍼를 완전히 제거하여 더 깔끔하고 직관적인 API를 제공합니다. HTML 파일을 PDF로 Aspose.PDF 구현: // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; class Program { static void Main() { var htmlLoadOptions = new HtmlLoadOptions(); var document = new Document("input.html", htmlLoadOptions); document.Save("output.pdf"); Console.WriteLine("PDF created successfully"); } } // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; class Program { static void Main() { var htmlLoadOptions = new HtmlLoadOptions(); var document = new Document("input.html", htmlLoadOptions); document.Save("output.pdf"); Console.WriteLine("PDF created successfully"); } } Imports Aspose.Pdf Imports System Class Program Shared Sub Main() Dim htmlLoadOptions As New HtmlLoadOptions() Dim document As New Document("input.html", htmlLoadOptions) document.Save("output.pdf") Console.WriteLine("PDF created successfully") End Sub End Class $vbLabelText $csharpLabel IronPDF 구현: // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlFileAsPdf("input.html"); 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 pdf = renderer.RenderHtmlFileAsPdf("input.html"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created successfully"); } } Imports IronPdf Imports System Class Program Shared Sub Main() Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlFileAsPdf("input.html") pdf.SaveAs("output.pdf") Console.WriteLine("PDF created successfully") End Sub End Class $vbLabelText $csharpLabel 여러 PDF 병합 Aspose.PDF는 페이지를 수동으로 반복해야 합니다. IronPDF는 정적 Merge 메서드를 제공합니다. Aspose.PDF 구현: // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; class Program { static void Main() { var document1 = new Document("file1.pdf"); var document2 = new Document("file2.pdf"); foreach (Page page in document2.Pages) { document1.Pages.Add(page); } document1.Save("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } // NuGet: Install-Package Aspose.PDF using Aspose.Pdf; using System; class Program { static void Main() { var document1 = new Document("file1.pdf"); var document2 = new Document("file2.pdf"); foreach (Page page in document2.Pages) { document1.Pages.Add(page); } document1.Save("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } Imports Aspose.Pdf Imports System Class Program Shared Sub Main() Dim document1 As New Document("file1.pdf") Dim document2 As New Document("file2.pdf") For Each page As Page In document2.Pages document1.Pages.Add(page) Next document1.Save("merged.pdf") Console.WriteLine("PDFs merged successfully") End Sub End Class $vbLabelText $csharpLabel 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(pdf1, pdf2); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } // 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(pdf1, pdf2); merged.SaveAs("merged.pdf"); Console.WriteLine("PDFs merged successfully"); } } 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(pdf1, pdf2) merged.SaveAs("merged.pdf") Console.WriteLine("PDFs merged successfully") End Sub End Module $vbLabelText $csharpLabel 텍스트 추출 Aspose.PDF 구현: using Aspose.Pdf; using Aspose.Pdf.Text; var document = new Document("document.pdf"); var absorber = new TextAbsorber(); foreach (Page page in document.Pages) { page.Accept(absorber); } string extractedText = absorber.Text; Console.WriteLine(extractedText); using Aspose.Pdf; using Aspose.Pdf.Text; var document = new Document("document.pdf"); var absorber = new TextAbsorber(); foreach (Page page in document.Pages) { page.Accept(absorber); } string extractedText = absorber.Text; Console.WriteLine(extractedText); Imports Aspose.Pdf Imports Aspose.Pdf.Text Dim document As New Document("document.pdf") Dim absorber As New TextAbsorber() For Each page As Page In document.Pages page.Accept(absorber) Next Dim extractedText As String = absorber.Text Console.WriteLine(extractedText) $vbLabelText $csharpLabel IronPDF 구현: using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Extract all text - one line! string allText = pdf.ExtractAllText(); Console.WriteLine(allText); // Or extract from specific page string page1Text = pdf.ExtractTextFromPage(0); using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Extract all text - one line! string allText = pdf.ExtractAllText(); Console.WriteLine(allText); // Or extract from specific page string page1Text = pdf.ExtractTextFromPage(0); Imports IronPdf Dim pdf = PdfDocument.FromFile("document.pdf") ' Extract all text - one line! Dim allText As String = pdf.ExtractAllText() Console.WriteLine(allText) ' Or extract from specific page Dim page1Text As String = pdf.ExtractTextFromPage(0) $vbLabelText $csharpLabel IronPDF는 복수 단계에서 단일 메소드 호출로 텍스트 추출을 간소화합니다. 워터마크 추가 Aspose.PDF 구현: using Aspose.Pdf; using Aspose.Pdf.Text; var document = new Document("document.pdf"); var textStamp = new TextStamp("CONFIDENTIAL"); textStamp.Background = true; textStamp.XIndent = 100; textStamp.YIndent = 100; textStamp.Rotate = Rotation.on45; textStamp.Opacity = 0.5; textStamp.TextState.Font = FontRepository.FindFont("Arial"); textStamp.TextState.FontSize = 72; textStamp.TextState.ForegroundColor = Color.Red; foreach (Page page in document.Pages) { page.AddStamp(textStamp); } document.Save("watermarked.pdf"); using Aspose.Pdf; using Aspose.Pdf.Text; var document = new Document("document.pdf"); var textStamp = new TextStamp("CONFIDENTIAL"); textStamp.Background = true; textStamp.XIndent = 100; textStamp.YIndent = 100; textStamp.Rotate = Rotation.on45; textStamp.Opacity = 0.5; textStamp.TextState.Font = FontRepository.FindFont("Arial"); textStamp.TextState.FontSize = 72; textStamp.TextState.ForegroundColor = Color.Red; foreach (Page page in document.Pages) { page.AddStamp(textStamp); } document.Save("watermarked.pdf"); Imports Aspose.Pdf Imports Aspose.Pdf.Text Dim document As New Document("document.pdf") Dim textStamp As New TextStamp("CONFIDENTIAL") textStamp.Background = True textStamp.XIndent = 100 textStamp.YIndent = 100 textStamp.Rotate = Rotation.on45 textStamp.Opacity = 0.5 textStamp.TextState.Font = FontRepository.FindFont("Arial") textStamp.TextState.FontSize = 72 textStamp.TextState.ForegroundColor = Color.Red For Each page As Page In document.Pages page.AddStamp(textStamp) Next document.Save("watermarked.pdf") $vbLabelText $csharpLabel IronPDF 구현: using IronPdf; using IronPdf.Editing; var pdf = PdfDocument.FromFile("document.pdf"); // HTML-based watermark with full styling control string watermarkHtml = @" <div style=' color: red; opacity: 0.5; font-family: Arial; font-size: 72px; font-weight: bold; text-align: center; '>CONFIDENTIAL</div>"; pdf.ApplyWatermark(watermarkHtml, rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); using IronPdf; using IronPdf.Editing; var pdf = PdfDocument.FromFile("document.pdf"); // HTML-based watermark with full styling control string watermarkHtml = @" <div style=' color: red; opacity: 0.5; font-family: Arial; font-size: 72px; font-weight: bold; text-align: center; '>CONFIDENTIAL</div>"; pdf.ApplyWatermark(watermarkHtml, rotation: 45, verticalAlignment: VerticalAlignment.Middle, horizontalAlignment: HorizontalAlignment.Center); pdf.SaveAs("watermarked.pdf"); Imports IronPdf Imports IronPdf.Editing Dim pdf = PdfDocument.FromFile("document.pdf") ' HTML-based watermark with full styling control Dim watermarkHtml As String = " <div style=' color: red; opacity: 0.5; font-family: Arial; font-size: 72px; font-weight: bold; text-align: center; '>CONFIDENTIAL</div>" pdf.ApplyWatermark(watermarkHtml, rotation:=45, verticalAlignment:=VerticalAlignment.Middle, horizontalAlignment:=HorizontalAlignment.Center) pdf.SaveAs("watermarked.pdf") $vbLabelText $csharpLabel IronPDF는 HTML/CSS 기반의 워터마킹을 사용하여 익숙한 웹 기술을 통해 전체 스타일링 제어를 제공합니다. 비밀번호 보호 Aspose.PDF 구현: using Aspose.Pdf; var document = new Document("document.pdf"); document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256); document.Save("protected.pdf"); using Aspose.Pdf; var document = new Document("document.pdf"); document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256); document.Save("protected.pdf"); Imports Aspose.Pdf Dim document As New Document("document.pdf") document.Encrypt("userPassword", "ownerPassword", DocumentPrivilege.ForbidAll, CryptoAlgorithm.AESx256) document.Save("protected.pdf") $vbLabelText $csharpLabel IronPDF 구현: using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Set passwords pdf.SecuritySettings.UserPassword = "userPassword"; pdf.SecuritySettings.OwnerPassword = "ownerPassword"; // Set permissions pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs("protected.pdf"); using IronPdf; var pdf = PdfDocument.FromFile("document.pdf"); // Set passwords pdf.SecuritySettings.UserPassword = "userPassword"; pdf.SecuritySettings.OwnerPassword = "ownerPassword"; // Set permissions pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit; pdf.SaveAs("protected.pdf"); Imports IronPdf Dim pdf = PdfDocument.FromFile("document.pdf") ' Set passwords pdf.SecuritySettings.UserPassword = "userPassword" pdf.SecuritySettings.OwnerPassword = "ownerPassword" ' Set permissions pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights pdf.SecuritySettings.AllowUserCopyPasteContent = False pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit pdf.SaveAs("protected.pdf") $vbLabelText $csharpLabel IronPDF는 강력하게 타입된 프로퍼티를 통해 권한에 대한 세분된 제어를 제공합니다. 더 많은 옵션을 보려면 암호화 문서를 참조하세요. 머리말과 바닥글 IronPDF 구현: using IronPdf; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = @" <div style='text-align:center; font-family:Arial; font-size:12px;'> Company Header </div>", DrawDividerLine = true, MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = @" <div style='text-align:center; font-family:Arial; font-size:10px;'> Page {page} of {total-pages} </div>", DrawDividerLine = true, MaxHeight = 25 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>"); pdf.SaveAs("with_headers.pdf"); using IronPdf; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = @" <div style='text-align:center; font-family:Arial; font-size:12px;'> Company Header </div>", DrawDividerLine = true, MaxHeight = 30 }; renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter { HtmlFragment = @" <div style='text-align:center; font-family:Arial; font-size:10px;'> Page {page} of {total-pages} </div>", DrawDividerLine = true, MaxHeight = 25 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>"); pdf.SaveAs("with_headers.pdf"); Imports IronPdf Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With { .HtmlFragment = " <div style='text-align:center; font-family:Arial; font-size:12px;'> Company Header </div>", .DrawDividerLine = True, .MaxHeight = 30 } renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With { .HtmlFragment = " <div style='text-align:center; font-family:Arial; font-size:10px;'> Page {page} of {total-pages} </div>", .DrawDividerLine = True, .MaxHeight = 25 } Dim pdf = renderer.RenderHtmlAsPdf("<h1>Content here</h1>") pdf.SaveAs("with_headers.pdf") $vbLabelText $csharpLabel IronPDF는 {page} 및 {total-pages}와 같은 동적 페이지 번호 지정을 위한 자리 표시자 토큰을 지원합니다. 더 많은 옵션은 헤더 및 푸터 문서를 참조하세요. 중요한 마이그레이션 노트 페이지 색인 변경 Aspose.PDF는 1-based 색인을 사용합니다. IronPDF는 0-based 색인을 사용합니다: // Aspose.PDF - 1-based indexing var firstPage = doc.Pages[1]; // First page var thirdPage = doc.Pages[3]; // Third page //IronPDF- 0-based indexing var firstPage = pdf.Pages[0]; // First page var thirdPage = pdf.Pages[2]; // Third page // Aspose.PDF - 1-based indexing var firstPage = doc.Pages[1]; // First page var thirdPage = doc.Pages[3]; // Third page //IronPDF- 0-based indexing var firstPage = pdf.Pages[0]; // First page var thirdPage = pdf.Pages[2]; // Third page Imports Aspose.Pdf Imports IronPdf ' Aspose.PDF - 1-based indexing Dim firstPageAspose = doc.Pages(1) ' First page Dim thirdPageAspose = doc.Pages(3) ' Third page ' IronPDF - 0-based indexing Dim firstPageIron = pdf.Pages(0) ' First page Dim thirdPageIron = pdf.Pages(2) ' Third page $vbLabelText $csharpLabel 라이선스 파일을 코드 키로 .lic 파일 라이선싱을 코드 기반 활성화로 교체하십시오: // Aspose.PDF var license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic"); // IronPDF IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Or from environment variable IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY"); // Aspose.PDF var license = new Aspose.Pdf.License(); license.SetLicense("Aspose.Pdf.lic"); // IronPDF IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // Or from environment variable IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY"); Imports Aspose.Pdf Imports System Dim license As New License() license.SetLicense("Aspose.Pdf.lic") IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY" ' Or from environment variable IronPdf.License.LicenseKey = Environment.GetEnvironmentVariable("IRONPDF_LICENSE_KEY") $vbLabelText $csharpLabel ASP.NET Core 통합 IronPDF 패턴: [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("generate")] public IActionResult GeneratePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>"); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } [HttpGet("generate-async")] public async Task<IActionResult> GeneratePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>"); return File(pdf.Stream, "application/pdf", "report.pdf"); } } [ApiController] [Route("[controller]")] public class PdfController : ControllerBase { [HttpGet("generate")] public IActionResult GeneratePdf() { var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>"); return File(pdf.BinaryData, "application/pdf", "report.pdf"); } [HttpGet("generate-async")] public async Task<IActionResult> GeneratePdfAsync() { var renderer = new ChromePdfRenderer(); var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>"); return File(pdf.Stream, "application/pdf", "report.pdf"); } } Imports Microsoft.AspNetCore.Mvc <ApiController> <Route("[controller]")> Public Class PdfController Inherits ControllerBase <HttpGet("generate")> Public Function GeneratePdf() As IActionResult Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report</h1>") Return File(pdf.BinaryData, "application/pdf", "report.pdf") End Function <HttpGet("generate-async")> Public Async Function GeneratePdfAsync() As Task(Of IActionResult) Dim renderer = New ChromePdfRenderer() Dim pdf = Await renderer.RenderHtmlAsPdfAsync("<h1>Report</h1>") Return File(pdf.Stream, "application/pdf", "report.pdf") End Function End Class $vbLabelText $csharpLabel 의존성 주입 구성 // Program.cs public void ConfigureServices(IServiceCollection services) { // Set license once IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"]; // Register renderer as scoped service services.AddScoped<ChromePdfRenderer>(); } // Program.cs public void ConfigureServices(IServiceCollection services) { // Set license once IronPdf.License.LicenseKey = Configuration["IronPdf:LicenseKey"]; // Register renderer as scoped service services.AddScoped<ChromePdfRenderer>(); } ' Program.vb Public Sub ConfigureServices(services As IServiceCollection) ' Set license once IronPdf.License.LicenseKey = Configuration("IronPdf:LicenseKey") ' Register renderer as scoped service services.AddScoped(Of ChromePdfRenderer)() End Sub $vbLabelText $csharpLabel 성능 최적화 // 1. Reuse renderer instance private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer(); // 2. Disable unnecessary features for speed var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; // If not needed renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay renderer.RenderingOptions.Timeout = 30000; // 30s max // 3. Proper disposal using (var pdf = renderer.RenderHtmlAsPdf(html)) { pdf.SaveAs("output.pdf"); } // 1. Reuse renderer instance private static readonly ChromePdfRenderer SharedRenderer = new ChromePdfRenderer(); // 2. Disable unnecessary features for speed var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.EnableJavaScript = false; // If not needed renderer.RenderingOptions.WaitFor.RenderDelay(0); // No delay renderer.RenderingOptions.Timeout = 30000; // 30s max // 3. Proper disposal using (var pdf = renderer.RenderHtmlAsPdf(html)) { pdf.SaveAs("output.pdf"); } ' 1. Reuse renderer instance Private Shared ReadOnly SharedRenderer As New ChromePdfRenderer() ' 2. Disable unnecessary features for speed Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.EnableJavaScript = False ' If not needed renderer.RenderingOptions.WaitFor.RenderDelay(0) ' No delay renderer.RenderingOptions.Timeout = 30000 ' 30s max ' 3. Proper disposal Using pdf = renderer.RenderHtmlAsPdf(html) pdf.SaveAs("output.pdf") End Using $vbLabelText $csharpLabel 일반적인 마이그레이션 문제 해결 문제: HtmlLoadOptions를 찾을 수 없습니다 ChromePdfRenderer로 교체하십시오: // Remove this var doc = new Document(stream, new HtmlLoadOptions()); // Use this var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlString); // Remove this var doc = new Document(stream, new HtmlLoadOptions()); // Use this var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(htmlString); Dim doc = New Document(stream, New HtmlLoadOptions()) Dim renderer = New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(htmlString) $vbLabelText $csharpLabel 문제: TextFragmentAbsorber를 찾을 수 없음 직접 텍스트 추출 사용: // Remove this var absorber = new TextFragmentAbsorber(); page.Accept(absorber); string text = absorber.Text; // Use this var pdf = PdfDocument.FromFile("doc.pdf"); string text = pdf.ExtractAllText(); // Remove this var absorber = new TextFragmentAbsorber(); page.Accept(absorber); string text = absorber.Text; // Use this var pdf = PdfDocument.FromFile("doc.pdf"); string text = pdf.ExtractAllText(); ' Remove this Dim absorber As New TextFragmentAbsorber() page.Accept(absorber) Dim text As String = absorber.Text ' Use this Dim pdf = PdfDocument.FromFile("doc.pdf") Dim text As String = pdf.ExtractAllText() $vbLabelText $csharpLabel 문제: PdfFileEditor.Concatenate 사용할 수 없음 PdfDocument.Merge()를 사용하십시오: // Remove this var editor = new PdfFileEditor(); editor.Concatenate(files, output); // Use this var pdfs = files.Select(PdfDocument.FromFile).ToList(); var merged = PdfDocument.Merge(pdfs); merged.SaveAs(output); // Remove this var editor = new PdfFileEditor(); editor.Concatenate(files, output); // Use this var pdfs = files.Select(PdfDocument.FromFile).ToList(); var merged = PdfDocument.Merge(pdfs); merged.SaveAs(output); ' Remove this Dim editor = New PdfFileEditor() editor.Concatenate(files, output) ' Use this Dim pdfs = files.Select(Function(file) PdfDocument.FromFile(file)).ToList() Dim merged = PdfDocument.Merge(pdfs) merged.SaveAs(output) $vbLabelText $csharpLabel 마이그레이션 후 점검 목록 코드 마이그레이션을 완료한 후, 다음을 확인하십시오: Aspose.PDF 라이선스 파일 (.lic) 제거 HTML 렌더링 품질 확인 (CSS Grid, Flexbox가 이제 제대로 작동해야 함) 큰 문서와 복잡한 CSS로 경계 사례 테스트 페이지 인덱스 참조 업데이트 (1 기반에서 0 기반으로) 해당하는 경우 Docker 구성을 업데이트하세요 새로운 라이선스 키 구성으로 CI/CD 파이프라인 업데이트 팀을 위한 새로운 패턴을 문서화하세요 PDF 인프라의 미래 대비 .NET 10이 다가오고 C# 14가 새로운 언어 기능을 도입함에 따라, 현대적인 렌더링 기능을 갖춘 PDF 라이브러리를 선택하면 발전하는 웹 표준과의 호환성을 보장합니다. IronPDF의 Chromium 엔진은 최신 브라우저에서 작동하는 것과 동일한 HTML/CSS를 렌더링합니다. 즉, Aspose.PDF의 Flying Saucer 엔진의 CSS 제한 없이 2025년 및 2026년까지 프로젝트가 확장되어도 PDF 템플릿이 최신 상태로 유지됩니다. 추가 리소스 IronPDF 설명서 HTML to PDF 튜토리얼 API 참조 NuGet 패키지 라이선스 옵션 Aspose.PDF에서 IronPDF로의 마이그레이션은 귀하의 PDF 코드베이스를 구식 HTML 렌더링 엔진에서 현대적인 Chromium 기반 렌더링으로 변화시킵니다. MemoryStream 래퍼의 제거, 간소화된 텍스트 추출 및 우수한 CSS3 지원은 단기적으로 생산성을 즉시 향상시키며 연간 구독에서 일회성 투자로 장기적인 라이선스 비용을 절감합니다. 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다. 커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다. 관련 기사 업데이트됨 2월 1, 2026 C#에서 ZetPDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 ZetPDF에서 IronPDF로의 마이그레이션을 마스터하세요. 좌표 기반 라이브러리에서 현대적인 HTML-to-PDF 솔루션으로 전환하십시오. HTML 변환, PDF 병합 및 PDFSharp 종속성 제거에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기 업데이트됨 2월 1, 2026 Scryber.Core에서 IronPDF로의 마이그레이션 방법 (C#) 이 완벽한 C# 가이드를 통해 Scryber.Core에서 IronPDF로의 마이그레이션을 완전히 이해하십시오. 사용자 지정 XML/HTML 파싱에서 현대적인 Chromium 렌더러로 전환하십시오. HTML 변환, URL 렌더링 및 독점 바인딩 교체를 위한 코드 예제가 포함됩니다. 더 읽어보기 업데이트됨 2월 1, 2026 C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 XFINIUM.PDF에서 IronPDF로의 마이그레이션을 마스터하세요. 수동적인 좌표 기반 위치에서 선언적인 HTML/CSS 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기 C#에서 BitMiracle Docotic PDF에서 IronPDF로 마이그레이션하는 방법C#에서 Apryse PDF에서 IronPDF...
업데이트됨 2월 1, 2026 C#에서 ZetPDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 ZetPDF에서 IronPDF로의 마이그레이션을 마스터하세요. 좌표 기반 라이브러리에서 현대적인 HTML-to-PDF 솔루션으로 전환하십시오. HTML 변환, PDF 병합 및 PDFSharp 종속성 제거에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기
업데이트됨 2월 1, 2026 Scryber.Core에서 IronPDF로의 마이그레이션 방법 (C#) 이 완벽한 C# 가이드를 통해 Scryber.Core에서 IronPDF로의 마이그레이션을 완전히 이해하십시오. 사용자 지정 XML/HTML 파싱에서 현대적인 Chromium 렌더러로 전환하십시오. HTML 변환, URL 렌더링 및 독점 바인딩 교체를 위한 코드 예제가 포함됩니다. 더 읽어보기
업데이트됨 2월 1, 2026 C#에서 XFINIUM.PDF에서 IronPDF로 마이그레이션하는 방법 이 완전한 C# 가이드로 XFINIUM.PDF에서 IronPDF로의 마이그레이션을 마스터하세요. 수동적인 좌표 기반 위치에서 선언적인 HTML/CSS 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기