Altbilgi içeriğine atla
GEçIş KıLAVUZLARı

C#'ta SAP Crystal Reports'tan IronPDF'ye Nasıl Geçilir

SAP Crystal Reports'tan IronPDF'ye geçmek, raporlama iş akışınızı COM-çağı bağımlılıkları olan bir runtime MSI yeniden dağıtılabilirden modern birNuGetpaketine dönüştürür. Bu kılavuz, runtime yükleyicisi gerekliliğini ortadan kaldıran, SAP ekosisteminden bağımsızlık sağlayan ve Crystal Reports for Visual Studio'nun (CR4VS) desteklemediği .NET 6/8/9 ve Linux/Docker hedeflerini açan bir adımdan-adıma geçiş yolu sunar.

SAP Crystal Reports'tan IronPDF'e Neden Geçilmeli

SAP Crystal Reports'u Anlama

SAP Crystal Reports, 'piksel mükemmelliğinde' raporlar üretmek için özellikle kullanılan, geniş veri kaynağı bağlantısı ve uzun süreli bir tasarımcı ekosistemine sahip bir kurumsal raporlama platformudur. Crystal Reports Designer, SAP yığını içinde karmaşık rapor düzenleri oluşturmak için üretken bir araç olarak kalır.

Ancak, runtime'ın COM-çağı mimarisi ve yalnızca Windows/.NET Framework varlığı, .NET 6/8/9, Linux veya konteyner-öncelikli dağıtımları hedefleyen ekipler için sürtünme yaratır.

Göç Etmenin Temel Nedenleri

  1. Runtime MSI Yeniden Dağıtılabilir: Crystal Reports Runtime, birNuGetpaketi yerine bir MSI yükleyici olarak gönderilir (tipik olarak 32/64-bit ve yerel dile göre boyutlar düzinelerce ila birkaç yüz MB arasında olabilir)
  2. SAP Ekosistem Bağımlılığı: SAP'nin sürüm döngüleri ve ürün yol haritasına bağlıdır; SAP, CR4VS için ana akım bakımın 2027 yılı sonunda sona ereceğini onayladı
  3. Lisanslama: CR4VS kendisi indirilebilir ve runtime yeniden dağıtılabilir, ancak Crystal Reports tasarımcı ailesi (CR 2020 / CR 2025) ve BI Platformu ticari SAP SKUs'udur
  4. Miras Mimarisi: COM'ye bağımlı runtime DLL'leri .NET Framework 4.x'i hedefler ve.NET Core / .NET 5+altında yüklenemez
  5. Modern .NET Desteği Yok: Crystal Reports runtime'ı modern .NET'i hedefleyen bir yol haritası yoktur; projeler .NET Framework 4.x'e sabit kalır
  6. 32-bit Runtime Sonlandırıldı: SAP, 32-bit CR .NET runtime'ın SP 39'dan sonra (Aralık 2025) sonlandırıldığını onayladı; gelecek hizmet paketleri yalnızca 64-bittir
  7. Rapor Tasarımcısı Bağımlılığı: .rpt dosyaları oluşturmak için CR4VS Visual Studio uzantısına veya bağımsız bir Crystal Reports tasarımcısına ihtiyaç duyar

SAP Crystal Reports'un Gizli Maliyetleri

Maliyet Faktörü SAP Crystal Reports IronPDF
Runtime Dağıtımı MSI yeniden dağıtılabilir yükleyici NuGetpaketi
Kurulum Runtime yükleyici + VS uzantısı dotnet add package IronPdf
Dağıtım Hedef makinede MSI çalıştırın xcopy / yayımla
64-bit Desteği Evet (32-bit runtime SP 39'dan sonra sona erer, Aralık 2025) Yerel
.NET Core / .NET 5+ Desteklenmiyor (sadece Framework 4.x) Tam destek (.NET 6/8/9, Framework 4.6.2+)
Bulut Dağıtımı Sadece Windows VM'ler Basit
Linux / Docker Desteklenmiyor (sadece Windows) Desteklenen

SAP Crystal Reports ve IronPDF Karşılaştırması

Özellik SAP Crystal Reports IronPDF
Birincil İşlevsellik Kurumsal raporlama platformu HTML'den PDF'e dönüşüm motoru ve PDF düzenleme
Entegrasyon SAP ekosistemi içinde en iyi Modern .NET entegrasyonu, hafifNuGetpaketi
Kullanım Kolaylığı Karmaşık kurulum ve dağıtım Basitleştirilmiş entegrasyon, .NET geliştiricilerini destekler
Rapor Tasarımcısı Gereklidir İsteğe bağlı (HTML/CSS)
Şablon Formatı .rpt (ikili) HTML/CSS
HTML'den PDF'ye Hayır Tam Chromium
URL'den PDF'ye Hayır Evet
CSS Desteği Hayır Tam CSS3
JavaScript Hayır Tam ES2024
PDF Manipülasyonu Hayır Tam (birleştirme, bölme, düzenleme)
Dijital İmzalar Hayır Evet
PDF/A Uyumlu Hayır Evet
Modern Geçerlilik Azalan, modern alternatiflerle değiştirildi Modern, çağdaş teknolojilerle iyi entegre

Modern .NET'i (6, 8, 9) ve çapraz platform dağıtımı hedefleyen ekipler için, IronPDF, Crystal Reports runtime'nin sunamayacağı, .NET Framework 4.x'e sabitlenmiş olan yerleşik desteği sağlar.


Başlamadan Önce

Ön Koşullar

  1. .NET Environment: .NET Framework 4.6.2+ or .NET 6 / 8 / 9
  2. NuGet Erişimi:NuGetpaketlerini yükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# Crystal Reports for Visual Studio is not distributed by SAP on NuGet.
# Projects typically reference the GAC-installed CrystalDecisions.*.dll
# assemblies delivered by the CR4VS / CR runtime MSI. Community-maintained
# NuGet wrappers such as CrystalReports.Engine exist for build automation
# but are not official SAP packages.

# 1. Remove direct assembly references (CrystalDecisions.*.dll) from your .csproj
# 2. If using a community NuGet wrapper, remove it:
dotnet remove package CrystalReports.Engine

# 3. Uninstall the Crystal Reports runtime MSI from build/deploy targets

# 4. Install IronPDF
dotnet add package IronPdf
# Crystal Reports for Visual Studio is not distributed by SAP on NuGet.
# Projects typically reference the GAC-installed CrystalDecisions.*.dll
# assemblies delivered by the CR4VS / CR runtime MSI. Community-maintained
# NuGet wrappers such as CrystalReports.Engine exist for build automation
# but are not official SAP packages.

# 1. Remove direct assembly references (CrystalDecisions.*.dll) from your .csproj
# 2. If using a community NuGet wrapper, remove it:
dotnet remove package CrystalReports.Engine

# 3. Uninstall the Crystal Reports runtime MSI from build/deploy targets

# 4. Install IronPDF
dotnet add package IronPdf
SHELL

Lisans Yapılandırması

// 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

Tam API Referansı

Ad Alanı Değişiklikleri

// 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

Temel API Eşlemeleri

SAP Crystal Reports IronPDF Notlar
ReportDocument ChromePdfRenderer Çekirdek oluşturma
ReportDocument.Load() RenderHtmlAsPdf() İçerik yükle
.rpt dosyaları HTML/CSSşablonları Şablon formatı
SetDataSource() Veri ile HTML Veri bağlama
SetParameterValue() Dizi iç içe dizimi Parametreler
ExportToDisk() pdf.SaveAs() Dosyayı kaydet
ExportToStream() pdf.BinaryData Baytları al
PrintToPrinter() pdf.Print() Yazdırma
Database.Tables C# veri erişimi Veri kaynağı
FormulaFieldDefinitions C# mantığı Hesaplamalar
SummaryInfo pdf.MetaData PDF meta verileri
ExportFormatType.PortableDocFormat Varsayılan çıktı PDF yerel

Kod Göç Örnekleri

Örnek 1: HTML'den PDF'ye Dönüştürme

Önce (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

Sonrası (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

Bu örnek, temel paradigma farkını göstermektedir. SAP Crystal Reports, Crystal Reports Tasarımcısında oluşturulmuş önceden tasarlanmış bir .rpt dosya şablonu gerektirir, ardından ExportOptions, ExportDestinationType, ExportFormatType ve DiskFileDestinationOptions yapılandırmanız gerekir. Kütüphane doğrudan HTML içeriğini desteklemez—veriyi rapor şablonuna bağlamanız gerekir.

IronPDF, HTML dizgilerini doğrudan kabul eder: bir ChromePdfRenderer oluşturun, herhangi bir HTML içeriği ile RenderHtmlAsPdf() çağırın ve SaveAs(). Tasarımcı gerekmez, ikili şablon yok, karmaşık ihracat yapılandırması yok. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.

Örnek 2: URL'den PDF'ye Dönüştürme

Önce (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

Sonrası (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'leri doğrudan PDF'e dönüştüremez. HTML içeriğini WebClient ile manuel olarak indirmeniz, ardından o verileri önceden tasarlanmış bir .rpt şablonuna çıkartmanız ve bağlamanız gerekecektir - bu, doğrudan olmayan ve önemli manuel çalışma gerektiren bir süreçtir.

IronPDF'nin RenderUrlAsPdf() yöntemi, tüm CSS,JavaScriptve resimler ile tam olarak oluşturulmuş web sayfasını tek bir çağrıyla yakalar. Daha fazla bilgiyi kılavuzlarımızda öğrenin.

Örnek 3: Sayfa Numaraları ile Başlıklar ve Alt Bilgiler

Önce (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

Sonrası (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 üstbilgi ve altbilgiler için tasarım zamanı yapılandırması gerektirir. Onları Crystal Reports Tasarımcısını kullanarak .rpt dosyasında tasarlamalı, ardından çalışma zamanında "HeaderText" ve "FooterText" gibi parametre değerlerini aktarmalısınız. Sayfa numaraları, tasarımcıdaki formül alanları aracılığıyla yapılandırılmalıdır.

IronPDF, TextHeader ve TextFooter özellikleri ile programlanabilir başlık/altbilgi yapılandırması sağlar. CenterText, LeftText, RightText ve FontSize doğrudan kod içerisinde ayarlayın. Sayfa numaraları, tasarımcı gerektirmeyen {page} ve {total-pages} yer tutucularını kullanır.


Yaygın Geçiş Sorunları

Sorun 1: .rpt Dosya Dönüşümü

SAP Crystal Reports: Gömülü düzen, veri, formüllere sahip ikili .rpt dosyaları.

Çözüm: Doğrudan dönüştürülemez—HTML olarak yeniden oluşturulmalıdır:

  1. Crystal Reports tasarımcısında .rpt açın
  2. Düzen, yazı tipleri, renkleri belgeleyin
  3. Tüm formül alanlarını not edin 4.HTML/CSSolarak yeniden oluşturun
  4. Formülleri C# koduna dönüştürün

Sorun 2: Veritabanı Bağlantıları

SAP Crystal Reports: Gömülü bağlantı dizeleri ve ODBC.

Çözüm: Uygulamanızın veri katmanını kullanın:

// 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

Sorun 3: Çalışma Zamanı Bağımlılıkları

SAP Crystal Reports: Crystal Reports Çalışma Zamanı kurulumunu gerektirir (500MB+).

Çözüm:IronPDF kendi kendine yeterlidir:

# 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

Önem 4: 32-bit/64-bit ve .NET Framework Bağımlılığı

SAP Crystal Reports: Crystal Reports runtime, COM'ye bağımlıdır ve ayrı 32-bit ve 64-bit MSI'ler halinde gönderilir. SAP, 32-bit CR .NET runtime'ın SP 39'dan sonra (Aralık 2025) sonlandırıldığını onayladı; gelecek hizmet paketleri yalnızca 64-bittir. Runtime, .NET Framework 4.x'i hedeflemektedir ve.NET Core / .NET 5+altında yüklenemez.

Çözüm: IronPDF, .NET Framework 4.6.2+, .NET 6, .NET 8 ve .NET 9'da çalışır — Linux ve Docker dahil olmak üzere. 64-bit veya AnyCPU için özel bir yapılandırma gerekmemektedir.


Geçiş Sonrası Yeni Özellikler

IronPDF'ye geçiş yaptıktan sonra, SAP Crystal Reports'un sunamayacağı yetenekler kazanırsınız:

PDF Birleştirme

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 Güvenliği

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

Dijital İmzalar

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

Filigranlar

using IronPdf.Editing;

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
using IronPdf.Editing;

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
Imports IronPdf.Editing

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>")
$vbLabelText   $csharpLabel

Özellik Karşılaştırması Özeti

Özellik SAP Crystal Reports IronPDF
:Kurulum: Runtime Dağıtımı MSI yeniden dağıtılabilir NuGet
Kurulum Yöntemi MSI + Visual Studio uzantısı NuGet
Dağıtım Hedef makinede MSI çalıştırın xcopy / yayımla
:Platform Desteği: .NET Framework 4.x Evet Evet (4.6.2+)
.NET Core / .NET 5+ Desteklenmiyor Evet (.NET 6/8/9)
64-bit Yerel Evet (32-bit SP 39'dan sonra sona erer, Aralık 2025) Evet
Linux / Docker Desteklenmiyor (sadece Windows) Evet
Azure / AWS Sadece Windows VM'ler Basit
:Geliştirme: Rapor Tasarımcısı Gereklidir İsteğe Bağlı (HTML)
Şablon Biçimi .rpt (ikili) HTML/CSS
Öğrenme Eğrisi Crystal sözdizimi Web standartları
IntelliSense Hayır Tam C#
:Oluşturma: HTML'den PDF'ye Hayır Tam Chromium
URL'yi PDF'ye çevir Hayır Evet
CSS Desteği Hayır Tam CSS3
JavaScript Hayır Tam ES2024
:PDF Özellikleri: PDF'leri birleştir Hayır Evet
PDF Ayırma Hayır Evet
Filigranlar Sınırlı Tam HTML
Dijital İmzalar Hayır Evet
PDF/A Hayır Evet

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Tüm .rpt dosyalarını envanterleyin
  • Her rapor düzenini referans için ekran görüntüsü alın
  • Formül alanları ve hesaplamaları belgeleyin
  • Tüm veri kaynaklarını ve parametrelerini listeleyin
  • Baskı gereksinimlerini belirleyin
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin

Kod Güncellemeleri

  • Crystal Reports paketlerini (CrystalDecisions.CrystalReports.Engine, vb.) kaldırın
  • Dağıtımdan çalışma zamanı kurulumunu kaldırın
  • IronPdfNuGetpaketini yükleyin
  • .rpt düzenleriniHTML/CSSşablonlarına dönüştürün
  • Crystal formüllerini C# koduna dönüştürün
  • Veri bağlama işlemini SetDataSource()'den HTML dizgi interpolasyonuna güncelleyin
  • Yazdırma kodunu PrintToPrinter()'den pdf.Print()'ya güncelleyin
  • Uygulama başlangıcında lisans başlatma ekle

Altyapı

  • Crystal Çalışma Zamanını sunuculardan kaldırın
  • Dağıtım betiklerini güncelleyin
  • 32-bit uyumluluk modunu kaldırın
  • Docker görüntülerini güncelleyin (varsa)

Test Etme

  • PDF çıktısını orijinal raporlarla karşılaştırın
  • Tüm hesaplamaları doğrulayın
  • Tüm parametreleri test edin
  • Baskı işlevselliğini test edin
  • Performans testi yapın
  • 64-bit testi

SAP Crystal Reports, ilgili sahibi tarafından tescilli bir ticari markadır. Bu site SAP ile ilişkilendirilmemiştir, onun tarafından onaylanmamış veya desteklenmemiştir. Tüm ürün adları, logolar ve markalar ilgili sahiplerinin malıdır. Karşılaştırmalar, yalnızca bilgilendirme amaçlıdır ve yazı sırasında halka açık bilgilerle alakalı olarak yansıtılmaktadır.)}]

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara