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

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

SAP Crystal Reports'den IronPDF'ye gecis, raporlama akisinizi agir miras platformundan, karmasik kurulum gereksinimleri olan, modern, hafif birNuGetpaketine dönüştürur. Bu kılavuz, buyuk500MB+runtime kurulumu ortadan kaldiran, SAP ekosistemi kilidini kaldiran ve tam .NET Core/5/6/7/8+ destegi saglayan eksiksiz, adim adim gecis yolunu saglar.

SAP Crystal Reports'den IronPDF'ye Neden Gecilmeli

SAP Crystal Reports'u Anlamak

SAP Crystal Reports, dinamik ve "piksel-perfekt" raporlar oluşturmak icin kurumsal alanda onde cikan bir arac olarak duruyor. Bir dizi veri kaynagiyla baglanti kurabilmesiyle taninan SAP Crystal Reports, kapsamli raporlama islevselligi arayan bircok kurumsal icin tercih edilen cozum olmustur. Platform, Crystal Reports Designer araci ile rakipsiz guc sunarak karmasik rapor tasarimlarini basitlestirir.

Ancak, teknoloji gelistikce SAP Crystal Reports'un SAP cercevesine agir bagimliligi ve yuksek taleplerine olan kurulum ve dağıtim gereksinimleri goz ardi edilemez. Agir yapisi, kurumsallar genellikle sistemi tam olarak uygulamak ve surdurmek icin onemli kaynaklar ve zaman gerektirir.

Gecis Icın Temel Nedenler

  1. Devasa Kurulum: Crystal Reports Runtime500MB+ve karmasik kurulum gerektirir
  2. SAP Ekosistemi Kilidi: SAP'nin fiyatlandirilmasi, destek donguleri ve ürün yol haritasina baglidir
  3. Karmasik Lisanslama: SAP'nin kurumsal satis sureci ile işlemci/kullanıcı basina lisanslama
  4. Miras Mimari: 32-bit COM bagimliliklari modern 64-bit kurulumu zorlastirir
  5. .NET Core Destegi Eski: Modern .NET platformlari icin kisitli destek
  6. Rapor Tasarimcisi Bagimliligi: Visual Studio eklentileri veya bagimsiz tasarimci gerektirir
  7. Yavas Performans: Agir calisma zamani başlangici ve bellek use ocagi

SAP Crystal Reports'un Gizli Maliyetleri

Maliyet Faktörü SAP Crystal Reports IronPDF
Çalışma Zamanı Boyutu 500MB+ ~20MB
Kurulum Karmasik MSI/Kurulum NuGetpaketi
Dağıtım Özel yükleyici xcopy
64-bit Desteği Problematik Yerel
.NET Core/5/6/7/8 Sınırlı Desteklenir
Bulut Dağıtımı Zor Basit
Linux/Docker Hayır Evet

SAP Crystal Reports vsIronPDFKarsilastirmasi

Özellik SAP Crystal Reports IronPDF
Birincil İşlevsellik Kurumsal raporlama platformu HTML-PDF dönüştürme motoru ve PDF manipulasyonu
Entegrasyon SAP ekosisteminde en iyi Modern .NET entegrasyonu, hafifNuGetpaketi
Kullanım Kolaylığı Karmaşık kurulum ve dağıtım Basitlestirilmis entegrasyon, .NET geliştiricilerini destekler
Rapor Tasarimcisi Gerekli Opsiyonel (HTML/CSS)
Şablon Formatı .rpt (ikili) HTML/CSS
HTML to PDF Hayır Tam Chromium
URL'den PDF'ye Hayır Evet
CSS Desteği Hayır Tam CSS3
JavaScript Hayır Tam ES2024
PDF Manipulasyonu Hayır Tam (birleştirme, bölme, düzenleme)
Dijital İmzalar Hayır Evet
PDF/A Uyumluluğu Hayır Evet
Modern Alaka Azalan, modern alternatiflerle değiştirildi Modern, gunumuz teknolojileriyle iyi entegre olmustur

2025 ve 2026 boyunca .NET 10 ve C# 14 benimsemeyi planlayan takimlar icin IronPDF, SAP Crystal Reports'un sunamadigi native cross-platform destek saglar.


Başlamadan Önce

Önkoşullar

  1. .NET Ortamı:.NET Framework4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Erişimi:NuGetpaketlerini yükleme yeteneği
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# 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

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

API Referansının Tamamı

Namespace 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şleştirmeleri

SAP Crystal Reports IronPDF Notlar
ReportDocument ChromePdfRenderer Ana render etme
ReportDocument.Load() RenderHtmlAsPdf() İçerik yukleme
.rpt dosyaları HTML/CSSşablonları Sablon formati
SetDataSource() Veri ile HTML Veri baglama
SetParameterValue() Dize enterpolasyonu Parametreler
ExportToDisk() pdf.SaveAs() Dosya kaydetme
ExportToStream() pdf.BinaryData Baytları al
PrintToPrinter() pdf.Print() Yazdirma
Database.Tables C# veri erişimi Veri kaynagi
FormulaFieldDefinitions C# mantığı Hesaplamalar
SummaryInfo pdf.MetaData PDF meta verisi
ExportFormatType.PortableDocFormat Varsayılan çıktı PDF yerli

Kod Geçiş Örnekleri

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

Oncesi (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

Sonra (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 Designer'da oluşturulmuş önceden tasarlanmış bir .rpt dosya şablonu gerektirir, ardından ExportOptions, ExportDestinationType, ExportFormatType ve DiskFileDestinationOptions yapılandırmalısınız. Kutuphane HTML icerigini dogrudan desteklemez—veriyi rapor sablonuna baglamaniz 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(). Tasarlayici gerekmez, ikili sablon yok, karisik disari aktarim ayari yok. Kapsamlı örnekler için HTML'den PDF'e döndürme belgesine bakın.

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

Oncesi (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

Sonra (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 dogrudan PDF'ye dönüştüremez. HTML içeriğini WebClient ile manuel olarak indirmeniz ve sonra bu verileri önceden tasarlanmış bir .rpt şablonuna çıkartıp bağlamanız gerekir - bu süreç kolay değildir ve önemli miktarda manuel çalışma gerektirir.

IronPDF'nin RenderUrlAsPdf() metodu, tam olarak işlenmiş web sayfasını tüm CSS,JavaScriptve resimlerle birlikte tek bir çağrıda yakalar. Detayli bilgi icin eğitimlerimize bakin.

Örnek 3: Sayfa Numaralı Başlıklar ve Altbilgiler

Oncesi (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

Sonra (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, header ve footer'lar icin tasarim zamani konfigurasiyon gerektirir. Onları .rpt dosyasında, Crystal Reports Designer kullanarak tasarlamalısınız, ardından çalıştırma zamanında "HeaderText" ve "FooterText" gibi parametre değerlerini geçmelisiniz. Sayfa numaraları tasarımcıdaki formül alanları aracılığıyla yapılandırılmalıdır.

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


Yaygin Goc Sorunlari

Sorun 1: .rpt Dosya Dönüştürme

SAP Crystal Reports: Gömülü yerleşim düzeni, veri, formüller içeren ikili .rpt dosyaları.

Cozum: Dogrudan dönüştürulemez—HTML olarak yeniden oluşturmalisiniz:

  1. .rpt dosyasını Crystal Reports designer'da açın
  2. Yerleşim, fontları, renkleri dokumente edin
  3. Tüm formül alanlarını not alın
  4. HTML/CSS'de yeniden oluşturun
  5. Formülleri C# koduna dönüştürun

Sorun 2: Veritabanı Bağlantıları

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

Cozum: 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 Runtime kurulumunu gerektirir (500MB+).

Cozum:IronPDFtek başına calisir:

# 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

Sorun 4: 32-bit/64-bit Sorunları

SAP Crystal Reports: COM bağımlılıkları genellikle 32-bit mod gerektirir.

Çözüm:IronPDFyerel 64-bit'tir—özel yapılandırma gerekmez.


Geçiş Sonrası Yeni Özellikler

IronPDF'e geçtikten sonra SAP Crystal Reports'un sağlayamayacağı 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

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

Özellik Karsilastirma Ozeti

Özellik SAP Crystal Reports IronPDF
:Kurulum: Çalışma Zamanı Boyutu 500MB+ ~20MB
Kurulum Yöntemi MSI/Setup.exe NuGet
Dağıtım Karmaşık xcopy
:Platform Desteği: .NET Framework Evet Evet
.NET Core/5/6/7/8 Sınırlı Tam
64-bit Yerel Problematik Evet
Linux/Docker Hayır Evet
Azure/AWS Zor Basit
:Geliştirme: Rapor Tasarımcısı Gerekli Opsiyonel (HTML)
Şablon Formatı .rpt (ikili) HTML/CSS
Öğrenme Eğrisi Crystal syntaksı Web standartları
IntelliSense Hayır Tam C#
:Render İşleme: 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 Özellikleri: PDF'leri birleştir Hayır Evet
PDF'leri Böl Hayır Evet
Filigranlar Sınırlı Tam HTML
Dijital İmzalar Hayır Evet
PDF/A Hayır Evet

Goc Kontrol Listesi

Geçiş Öncesi

  • Tüm .rpt dosyalarını envanterleyin
  • Her rapor düzeni için referans olarak ekran görüntüsü alın
  • Formül alanlarını ve hesaplamaları belgeleyin
  • Tüm veri kaynaklarını ve parametreleri listeleyin
  • Baskı gereksinimlerini belirleyin
  • ironpdf.com adresindenIronPDFlisans anahtarını alın

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ğlamayı SetDataSource() öğesinden HTML dize enterpolasyonuna güncelleyin
  • Yazdırma kodunu PrintToPrinter() öğesinden pdf.Print() öğesine güncelleyin
  • Uygulama başlatıldığında lisans başlatma ekleyin

Altyapı

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

Test Etme

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

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında lisans derecesine sahiptir (Carleton Üniversitesi) ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirme üzerine uzmanlaşmıştır. Kullanıcı dostu ve estetik açıdan hoş arayüzler tasarlamaya tutkuyla bağlı olan Curtis, modern çerç...

Daha Fazlasını Oku

Iron Destek Ekibi

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