마이그레이션 가이드 SAP Crystal Reports에서 IronPDF로의 마이그레이션 방법 (C#) 커티스 차우 업데이트됨:2월 1, 2026 다운로드 IronPDF NuGet 다운로드 DLL 다운로드 윈도우 설치 프로그램 무료 체험 시작하기 LLM용 사본 LLM용 사본 LLM용 마크다운 형식으로 페이지를 복사하세요 ChatGPT에서 열기 ChatGPT에 이 페이지에 대해 문의하세요 제미니에서 열기 제미니에게 이 페이지에 대해 문의하세요 Grok에서 열기 Grok에게 이 페이지에 대해 문의하세요 혼란 속에서 열기 Perplexity에게 이 페이지에 대해 문의하세요 공유하다 페이스북에 공유하기 트위터에 공유하기 LinkedIn에 공유하기 URL 복사 이메일로 기사 보내기 SAP Crystal Reports에서 IronPDF로 마이그레이션하면 복잡한 배포 요구 사항을 가진 대규모 레거시 플랫폼에서 현대적이고 경량화된NuGet패키지로 보고 워크플로가 변환됩니다. 이 가이드는 500MB 이상의 대용량 런타임 설치를 제거하고 SAP 생태계 종속성을 제거하며 전체 .NET Core/5/6/7/8+ 지원이 가능한 단계별 마이그레이션 경로를 제공합니다. SAP Crystal Reports에서 IronPDF로 마이그레이션하는 이유 SAP Crystal Reports이해하기 SAP Crystal Reports는 역동적이고 '픽셀 완벽한' 보고서를 생성하는 도구로서 Enterprise 도메인에서 두드러집니다. SAP Crystal Reports는 다수의 데이터 소스에 연결할 수 있는 능력으로 인정받아 포괄적인 보고 기능을 찾는 많은 기업의 선택 솔루션이었습니다. 플랫폼은 복잡한 보고서 레이아웃을 쉽게 구성할 수 있는 Crystal Reports Designer 도구로 그 독보적인 힘을 제공합니다. 그러나 기술이 발전하면서 SAP Crystal Reports의 SAP 프레임워크에 대한 과도한 의존도와 까다로운 설치 및 배포 요구 사항을 무시할 수 없습니다. 무거운 특성으로 인해 기업은 시스템을 완전히 구현하고 유지 관리하는 데 상당한 자원과 시간이 소요되곤 합니다. 주요 마이그레이션 이유 대규모 설치: Crystal Reports 런타임은 500MB 이상이며 복잡한 설치가 필요합니다 SAP 생태계 종속성: SAP의 가격, 지원 주기 및 제품 로드맵에 묶여 있습니다 복잡한 라이센싱: SAP의 기업 영업 프로세스를 통한 프로세서당/사용자당 라이센싱 레거시 아키텍처: 현대 64비트 배포를 복잡하게 만드는 32비트 COM 종속성 .NET Core에 대한 더 이상 사용되지 않음 지원: 현대 .NET 플랫폼에 대한 제한된 지원 보고서 디자이너 종속성: Visual Studio 확장 또는 독립형 디자이너가 필요합니다 느린 성능: 무거운 런타임 초기화와 메모리 사용량 SAP Crystal Reports의 숨겨진 비용 비용 요소 SAP Crystal Reports IronPDF 런타임 크기 500MB+ ~20MB 설치 복잡한 MSI/Setup NuGet패키지 배포 특수 설치 프로그램 xcopy 64비트 지원 문제 발생 내부 지원 .NET Core/5/6/7/8 제한적 지원됨 클라우드 배포 어려움 간단함 Linux/Docker 아니요 예 SAP Crystal ReportsvsIronPDF비교 기능 SAP Crystal Reports IronPDF 주요 기능 Enterprise 보고 플랫폼 HTML-to-PDF 변환 엔진 및 PDF 조작 통합 SAP 생태계 내에서 최적 현대적인 .NET 통합, 경량NuGet패키지 사용 용이성 복잡한 설정 및 배포 단순한 통합, .NET 개발자 지원 리포트 디자이너 필요함 선택적 (HTML/CSS) 템플릿 형식 .rpt (바이너리) HTML/CSS HTML to PDF 아니요 전체 Chromium URL을 PDF로 아니요 예 CSS 지원 아니요 전체 CSS3 JavaScript 아니요 전체 ES2024 PDF 조작 아니요 전체 (병합, 분할, 편집) 디지털 서명 아니요 예 PDF/A 준수 아니요 예 현대적 관련성 감소 중, 현대적인 대안으로 대체됨 현대적이며, 현대 기술과 잘 통합됨 .NET 10 및 C# 14 도입을 2025년과 2026년 동안 계획하는 팀을 위해 IronPDF는 SAP Crystal Reports에서 제공할 수 없는 네이티브 크로스 플랫폼 지원을 제공합니다. 시작하기 전에 필수 조건 .NET 환경:.NET Framework4.6.2+ 또는 .NET Core 3.1+ / .NET 5/6/7/8/9+ NuGet 접근 권한:NuGet패키지를 설치할 수 있는 능력 IronPDF 라이선스: ironpdf.com에서 라이선스 키를 획득하세요 NuGet패키지 변경 사항 # Remove Crystal Reports packages dotnet remove package CrystalDecisions.CrystalReports.Engine dotnet remove package CrystalDecisions.Shared dotnet remove package CrystalDecisions.ReportAppServer dotnet remove package CrystalDecisions.Web # Remove legacy assemblies from project references # Install IronPDF dotnet add package IronPdf # Remove Crystal Reports packages dotnet remove package CrystalDecisions.CrystalReports.Engine dotnet remove package CrystalDecisions.Shared dotnet remove package CrystalDecisions.ReportAppServer dotnet remove package CrystalDecisions.Web # Remove legacy assemblies from project references # Install IronPDF dotnet add package IronPdf SHELL 라이선스 구성 // 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" $vbLabelText $csharpLabel 완전한 API 참조 네임스페이스 변경 // Before: SAP Crystal Reports using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using CrystalDecisions.ReportAppServer; // After: IronPDF using IronPdf; // Before: SAP Crystal Reports using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using CrystalDecisions.ReportAppServer; // After: IronPDF using IronPdf; Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports CrystalDecisions.ReportAppServer Imports IronPdf $vbLabelText $csharpLabel 핵심 API 매핑 SAP Crystal Reports IronPDF 노트 ReportDocument ChromePdfRenderer 코어 렌더링 ReportDocument.Load() RenderHtmlAsPdf() 콘텐츠 로드 .rpt 파일 HTML/CSS 템플릿 템플릿 형식 SetDataSource() 데이터가 포함된 HTML 데이터 바인딩 SetParameterValue() 문자열 보간 매개변수 ExportToDisk() pdf.SaveAs() 파일 저장 ExportToStream() pdf.BinaryData 바이트 가져오기 PrintToPrinter() pdf.Print() 인쇄 Database.Tables C# 데이터 액세스 데이터 소스 FormulaFieldDefinitions C# 논리 계산 SummaryInfo pdf.MetaData PDF 메타데이터 ExportFormatType.PortableDocFormat 기본 출력 PDF 네이티브 코드 마이그레이션 예제 예제 1: HTML에서 PDF로 변환 전 (SAP Crystal Reports): // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; class Program { static void Main() { // Crystal Reports requires a .rpt file template ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("Report.rpt"); // Crystal Reports doesn't directly support HTML // You need to bind data to the report template // reportDocument.SetDataSource(dataSet); ExportOptions exportOptions = reportDocument.ExportOptions; exportOptions.ExportDestinationType = ExportDestinationType.DiskFile; exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; DiskFileDestinationOptions diskOptions = new DiskFileDestinationOptions(); diskOptions.DiskFileName = "output.pdf"; exportOptions.DestinationOptions = diskOptions; reportDocument.Export(); reportDocument.Close(); reportDocument.Dispose(); } } // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; class Program { static void Main() { // Crystal Reports requires a .rpt file template ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("Report.rpt"); // Crystal Reports doesn't directly support HTML // You need to bind data to the report template // reportDocument.SetDataSource(dataSet); ExportOptions exportOptions = reportDocument.ExportOptions; exportOptions.ExportDestinationType = ExportDestinationType.DiskFile; exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat; DiskFileDestinationOptions diskOptions = new DiskFileDestinationOptions(); diskOptions.DiskFileName = "output.pdf"; exportOptions.DestinationOptions = diskOptions; reportDocument.Export(); reportDocument.Close(); reportDocument.Dispose(); } } Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System Class Program Shared Sub Main() ' Crystal Reports requires a .rpt file template Dim reportDocument As New ReportDocument() reportDocument.Load("Report.rpt") ' Crystal Reports doesn't directly support HTML ' You need to bind data to the report template ' reportDocument.SetDataSource(dataSet) Dim exportOptions As ExportOptions = reportDocument.ExportOptions exportOptions.ExportDestinationType = ExportDestinationType.DiskFile exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat Dim diskOptions As New DiskFileDestinationOptions() diskOptions.DiskFileName = "output.pdf" exportOptions.DestinationOptions = diskOptions reportDocument.Export() reportDocument.Close() reportDocument.Dispose() End Sub End Class $vbLabelText $csharpLabel 이후 (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from HTML string var renderer = new ChromePdfRenderer(); string htmlContent = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); 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(); string htmlContent = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); 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 As New ChromePdfRenderer() Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>" Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) pdf.SaveAs("output.pdf") Console.WriteLine("PDF created successfully!") End Sub End Class $vbLabelText $csharpLabel 이 예시는 근본적인 패러다임 차이를 보여줍니다. SAP Crystal Reports는 사전에 디자인된 Crystal Reports Designer에서 만들어진 .rpt 파일 템플릿이 필요하며, ExportOptions, ExportDestinationType, ExportFormatType, DiskFileDestinationOptions을(를) 구성해야 합니다. 라이브러리는 HTML 콘텐츠를 직접 지원하지 않으며, 리포트 템플릿에 데이터를 바인딩해야 합니다. IronPDF는 HTML 문자열을 직접 수용하며: ChromePdfRenderer을 생성하고 어떤 HTML 콘텐츠와 함께 RenderHtmlAsPdf()을(를) 호출한 다음 SaveAs()합니다. 디자이너 필요 없음, 바이너리 템플릿 없음, 복잡한 내보내기 구성 필요 없음. HTML에서 PDF로의 문서에서 포괄적인 예제를 참조하세요. 예제 2: URL에서 PDF로 변환 전 (SAP Crystal Reports): // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; using System.Net; class Program { static void Main() { // Crystal Reports cannot directly convert URLs to PDF // You need to create a report template first // Download HTML content WebClient client = new WebClient(); string htmlContent = client.DownloadString("https://example.com"); // Crystal Reports requires .rpt template and data binding // This approach is not straightforward for URL conversion ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("WebReport.rpt"); // Manual data extraction and binding required // reportDocument.SetDataSource(extractedData); reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf"); reportDocument.Close(); reportDocument.Dispose(); } } // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; using System.Net; class Program { static void Main() { // Crystal Reports cannot directly convert URLs to PDF // You need to create a report template first // Download HTML content WebClient client = new WebClient(); string htmlContent = client.DownloadString("https://example.com"); // Crystal Reports requires .rpt template and data binding // This approach is not straightforward for URL conversion ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("WebReport.rpt"); // Manual data extraction and binding required // reportDocument.SetDataSource(extractedData); reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf"); reportDocument.Close(); reportDocument.Dispose(); } } Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System Imports System.Net Module Program Sub Main() ' Crystal Reports cannot directly convert URLs to PDF ' You need to create a report template first ' Download HTML content Dim client As New WebClient() Dim htmlContent As String = client.DownloadString("https://example.com") ' Crystal Reports requires .rpt template and data binding ' This approach is not straightforward for URL conversion Dim reportDocument As New ReportDocument() reportDocument.Load("WebReport.rpt") ' Manual data extraction and binding required ' reportDocument.SetDataSource(extractedData) reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf") reportDocument.Close() reportDocument.Dispose() End Sub End Module $vbLabelText $csharpLabel 이후 (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from a URL var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created from URL successfully!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { // Create a PDF from a URL var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderUrlAsPdf("https://example.com"); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF created from URL successfully!"); } } Imports IronPdf Imports System Class Program Shared Sub Main() ' Create a PDF from a URL Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderUrlAsPdf("https://example.com") pdf.SaveAs("output.pdf") Console.WriteLine("PDF created from URL successfully!") End Sub End Class $vbLabelText $csharpLabel SAP Crystal Reports는 URL을 PDF로 직접 변환할 수 없습니다. 수동으로 WebClient를 사용하여 HTML 콘텐츠를 다운로드한 다음, 사전 디자인된 .rpt 템플릿에 데이터를 추출하고 바인딩해야 합니다. 이 과정은 간단하지 않으며 상당한 수작업을 필요로 합니다. IronPDF의 RenderUrlAsPdf() 메서드는 모든 CSS, JavaScript, 이미지를 포함한 완전히 렌더링된 웹페이지를 한 번의 호출로 캡처합니다. 더 많은 정보를 보려면 튜토리얼을 참조하세요. 예제 3: 페이지 번호가 있는 헤더와 푸터 전 (SAP Crystal Reports): // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; class Program { static void Main() { // Crystal Reports requires design-time configuration ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("Report.rpt"); // Headers and footers must be designed in the .rpt file // using Crystal Reports designer // You can set parameter values programmatically reportDocument.SetParameterValue("HeaderText", "Company Name"); reportDocument.SetParameterValue("FooterText", "Page "); // Crystal Reports handles page numbers through formula fields // configured in the designer reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf"); reportDocument.Close(); reportDocument.Dispose(); } } // NuGet: Install-Package CrystalReports.Engine using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Shared; using System; class Program { static void Main() { // Crystal Reports requires design-time configuration ReportDocument reportDocument = new ReportDocument(); reportDocument.Load("Report.rpt"); // Headers and footers must be designed in the .rpt file // using Crystal Reports designer // You can set parameter values programmatically reportDocument.SetParameterValue("HeaderText", "Company Name"); reportDocument.SetParameterValue("FooterText", "Page "); // Crystal Reports handles page numbers through formula fields // configured in the designer reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf"); reportDocument.Close(); reportDocument.Dispose(); } } Imports CrystalDecisions.CrystalReports.Engine Imports CrystalDecisions.Shared Imports System Class Program Shared Sub Main() ' Crystal Reports requires design-time configuration Dim reportDocument As New ReportDocument() reportDocument.Load("Report.rpt") ' Headers and footers must be designed in the .rpt file ' using Crystal Reports designer ' You can set parameter values programmatically reportDocument.SetParameterValue("HeaderText", "Company Name") reportDocument.SetParameterValue("FooterText", "Page ") ' Crystal Reports handles page numbers through formula fields ' configured in the designer reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf") reportDocument.Close() reportDocument.Dispose() End Sub End Class $vbLabelText $csharpLabel 이후 (IronPDF): // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); // Configure headers and footers renderer.RenderingOptions.TextHeader.CenterText = "Company Name"; renderer.RenderingOptions.TextHeader.FontSize = 12; renderer.RenderingOptions.TextFooter.LeftText = "Confidential"; renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"; renderer.RenderingOptions.TextFooter.FontSize = 10; string htmlContent = "<h1>Document Title</h1><p>Document content goes here.</p>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF with headers and footers created!"); } } // NuGet: Install-Package IronPdf using IronPdf; using System; class Program { static void Main() { var renderer = new ChromePdfRenderer(); // Configure headers and footers renderer.RenderingOptions.TextHeader.CenterText = "Company Name"; renderer.RenderingOptions.TextHeader.FontSize = 12; renderer.RenderingOptions.TextFooter.LeftText = "Confidential"; renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"; renderer.RenderingOptions.TextFooter.FontSize = 10; string htmlContent = "<h1>Document Title</h1><p>Document content goes here.</p>"; var pdf = renderer.RenderHtmlAsPdf(htmlContent); pdf.SaveAs("output.pdf"); Console.WriteLine("PDF with headers and footers created!"); } } Imports IronPdf Imports System Module Program Sub Main() Dim renderer As New ChromePdfRenderer() ' Configure headers and footers renderer.RenderingOptions.TextHeader.CenterText = "Company Name" renderer.RenderingOptions.TextHeader.FontSize = 12 renderer.RenderingOptions.TextFooter.LeftText = "Confidential" renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}" renderer.RenderingOptions.TextFooter.FontSize = 10 Dim htmlContent As String = "<h1>Document Title</h1><p>Document content goes here.</p>" Dim pdf = renderer.RenderHtmlAsPdf(htmlContent) pdf.SaveAs("output.pdf") Console.WriteLine("PDF with headers and footers created!") End Sub End Module $vbLabelText $csharpLabel SAP Crystal Reports는 헤더 및 푸터에 대한 디자인 시간 구성이 필요합니다. Crystal Reports Designer에서 .rpt 파일 내에서 디자인한 다음, "HeaderText" 및 "FooterText"와 같은 매개변수 값을 런타임에 전달해야 합니다. 페이지 번호는 디자이너의 수식 필드를 통해 설정해야 합니다. IronPDF는 TextHeader 및 TextFooter 속성을 사용하여 프로그램적으로 헤더/푸터 구성을 제공합니다. CenterText, LeftText, RightText, FontSize을(를) 코드에서 직접 설정합니다. 페이지 번호는 {page} 및 {total-pages} 자리표시자를 사용하며, 디자이너가 필요하지 않습니다. 일반적인 마이그레이션 문제 문제 1: .rpt 파일 변환 SAP Crystal Reports: 임베디드 레이아웃, 데이터, 공식을 포함한 바이너리 .rpt 파일. 해결책: 직접 변환할 수 없음 – HTML로 재작성해야 함: Crystal Reports 디자이너에서 .rpt 열기 문서 레이아웃, 글꼴, 색상 기록 모든 공식 필드 기록 HTML/CSS로 재작성 공식을 C# 코드로 변환 문제 2: 데이터베이스 연결 SAP Crystal Reports: 임베디드 연결 문자열 및 ODBC. 해결책: 애플리케이션의 데이터 레이어 사용: // Instead of Crystal's database integration var data = await _dbContext.Orders .Where(o => o.Date >= startDate && o.Date <= endDate) .ToListAsync(); // Bind to HTML template var html = GenerateReportHtml(data); // Instead of Crystal's database integration var data = await _dbContext.Orders .Where(o => o.Date >= startDate && o.Date <= endDate) .ToListAsync(); // Bind to HTML template var html = GenerateReportHtml(data); Option Strict On ' Instead of Crystal's database integration Dim data = Await _dbContext.Orders _ .Where(Function(o) o.Date >= startDate AndAlso o.Date <= endDate) _ .ToListAsync() ' Bind to HTML template Dim html = GenerateReportHtml(data) $vbLabelText $csharpLabel 문제 3: 런타임 종속성 SAP Crystal Reports: Crystal Reports 런타임 설치 필요 (500MB 이상). 해결책: IronPDF는 독립형입니다: # Just add theNuGetpackage dotnet add package IronPdf # That's it - no additional installs needed # Just add theNuGetpackage dotnet add package IronPdf # That's it - no additional installs needed SHELL 문제 4: 32비트/64비트 문제 SAP Crystal Reports: COM 의존성은 종종 32비트 모드를 필요로 합니다. Solution: IronPDF는 네이티브 64비트로 특별한 구성 필요가 없습니다. 이동 후 새로운 기능 IronPDF로 마이그레이션한 후에는 SAP Crystal Reports가 제공할 수 없는 기능을 사용할 수 있습니다: PDF 병합 var pdf1 = PdfDocument.FromFile("report1.pdf"); var pdf2 = PdfDocument.FromFile("report2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("complete_report.pdf"); var pdf1 = PdfDocument.FromFile("report1.pdf"); var pdf2 = PdfDocument.FromFile("report2.pdf"); var merged = PdfDocument.Merge(pdf1, pdf2); merged.SaveAs("complete_report.pdf"); Dim pdf1 = PdfDocument.FromFile("report1.pdf") Dim pdf2 = PdfDocument.FromFile("report2.pdf") Dim merged = PdfDocument.Merge(pdf1, pdf2) merged.SaveAs("complete_report.pdf") $vbLabelText $csharpLabel PDF 보안 var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(reportHtml); pdf.MetaData.Title = "Quarterly Sales Report"; pdf.MetaData.Author = "Finance Department"; pdf.SecuritySettings.OwnerPassword = "admin123"; pdf.SecuritySettings.UserPassword = "view123"; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SaveAs("secure_report.pdf"); var renderer = new ChromePdfRenderer(); var pdf = renderer.RenderHtmlAsPdf(reportHtml); pdf.MetaData.Title = "Quarterly Sales Report"; pdf.MetaData.Author = "Finance Department"; pdf.SecuritySettings.OwnerPassword = "admin123"; pdf.SecuritySettings.UserPassword = "view123"; pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights; pdf.SecuritySettings.AllowUserCopyPasteContent = false; pdf.SaveAs("secure_report.pdf"); Dim renderer As New ChromePdfRenderer() Dim pdf = renderer.RenderHtmlAsPdf(reportHtml) pdf.MetaData.Title = "Quarterly Sales Report" pdf.MetaData.Author = "Finance Department" pdf.SecuritySettings.OwnerPassword = "admin123" pdf.SecuritySettings.UserPassword = "view123" pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights pdf.SecuritySettings.AllowUserCopyPasteContent = False pdf.SaveAs("secure_report.pdf") $vbLabelText $csharpLabel 디지털 서명 var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); var signature = new PdfSignature("certificate.pfx", "password"); pdf.Sign(signature); Dim signature = New PdfSignature("certificate.pfx", "password") pdf.Sign(signature) $vbLabelText $csharpLabel 워터마크 pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>"); pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>"); IRON VB CONVERTER ERROR developers@ironsoftware.com $vbLabelText $csharpLabel 기능 비교 요약 기능 SAP Crystal Reports IronPDF :설치: 런타임 크기 500MB+ ~20MB 설치 방법 MSI/Setup.exe NuGet 배포 복잡함 xcopy :플랫폼 지원: .NET Framework 예 예 .NET Core/5/6/7/8 제한적 전체 64비트 네이티브 문제 발생 예 Linux/Docker 아니요 예 Azure/AWS 어려움 간단함 :개발: 보고서 디자이너 필요함 선택적 (HTML) 템플릿 포맷 .rpt (바이너리) HTML/CSS 학습 곡선 Crystal 구문 웹 표준 IntelliSense 아니요 전체 C# 지원 :렌더링: HTML to PDF 아니요 전체 Chromium URL을 PDF로 변환 아니요 예 CSS 지원 아니요 전체 CSS3 JavaScript 아니요 전체 ES2024 :PDF 기능: PDF 병합 아니요 예 PDF 분할 아니요 예 워터마크 제한적 전체 HTML 디지털 서명 아니요 예 PDF/A 아니요 예 마이그레이션 체크리스트 사전 마이그레이션 모든 .rpt 파일 목록 작성 각 보고서 레이아웃을 스크린샷으로 캡처하여 참조하기 수식 필드와 계산 문서화하기 모든 데이터 소스와 매개변수 목록 작성하기 인쇄 요구 사항 식별하기 ironpdf.com에서IronPDF라이선스 키 획득 코드 업데이트 Crystal Reports 패키지 제거 (CrystalDecisions.CrystalReports.Engine 등) 배포에서 런타임 설치 제거하기 IronPdfNuGetInstall-Package .rpt 레이아웃을 HTML/CSS템플릿으로 변환 Crystal 수식을 C# 코드로 변환하기 데이터 바인딩을 SetDataSource()에서 HTML 문자열 보간으로 업데이트 인쇄 코드를 PrintToPrinter()에서 pdf.Print()으로 업데이트 애플리케이션 시작 시 라이선스 초기화 추가 인프라 서버에서 Crystal Runtime 제거하기 배포 스크립트 업데이트 32비트 호환 모드 제거하기 Docker 이미지를 업데이트하기 (적용 가능한 경우) 테스트 PDF 출력을 원본 보고서와 비교하기 모든 계산 검증하기 모든 매개변수를 테스트하기 인쇄 기능을 테스트하십시오 성능 테스트 64비트 테스트하기 커티스 차우 지금 바로 엔지니어링 팀과 채팅하세요 기술 문서 작성자 커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, 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 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기 Scryber.Core에서 IronPDF로의 마이그레이션 방법 (C#)Rotativa에서 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 렌더링으로 전환하십시오. 그래픽 프리미티브 교체 및 자동 레이아웃에 대한 코드 예제가 포함되어 있습니다. 더 읽어보기