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
- Devasa Kurulum: Crystal Reports Runtime500MB+ve karmasik kurulum gerektirir
- SAP Ekosistemi Kilidi: SAP'nin fiyatlandirilmasi, destek donguleri ve ürün yol haritasina baglidir
- Karmasik Lisanslama: SAP'nin kurumsal satis sureci ile işlemci/kullanıcı basina lisanslama
- Miras Mimari: 32-bit COM bagimliliklari modern 64-bit kurulumu zorlastirir
- .NET Core Destegi Eski: Modern .NET platformlari icin kisitli destek
- Rapor Tasarimcisi Bagimliligi: Visual Studio eklentileri veya bagimsiz tasarimci gerektirir
- 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
- .NET Ortamı:.NET Framework4.6.2+ veya .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet Erişimi:NuGetpaketlerini yükleme yeteneği
- 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
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"
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
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
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
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
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
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
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
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:
- .rpt dosyasını Crystal Reports designer'da açın
- Yerleşim, fontları, renkleri dokumente edin
- Tüm formül alanlarını not alın
- HTML/CSS'de yeniden oluşturun
- 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)
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
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")
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")
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)
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
Ö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
.rptdosyaları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.Enginevb.) kaldırın - Dağıtımdan çalışma zamanı kurulumunu kaldırın
IronPdfNuGetpaketini yükleyin.rptdü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()öğesindenpdf.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

