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

C#'ta SSRS'den IronPDF'ye Nasıl Geçilir

SQL Server Reporting Services (SSRS)'den IronPDF'e geçiş, PDF oluşturma iş akışınızı, ağır bir sunucu tabanlı altyapıdan, herhangi bir .NET uygulamasına doğrudan gömülebilen hafif, süreç içi bir kütüphaneye dönüştürür. Bu rehber, SQL Server bağımlılıklarını, rapor sunucusu yükünü ve Microsoft ekosistemine bağımlılığı ortadan kaldıran eksiksiz, adım adım bir geçiş yolu sağlar.

Neden SSRS'den IronPDF'e Geçilmeli

SSRSAnlamak

SQL Server Reporting Services (SSRS), önemli altyapı yatırımı gerektiren Microsoft'un kurumsal raporlama platformudur. SSRS, rapor oluşturma, dağıtma ve yönetmenin tüm yönlerini kapsayan, zengin özellikli ve etkileşimli rapor özellikleri sunan Microsoft'un kapsamlı bir raporlama platformudur. SQL Server ekosisteminin bir parçası olarak geliştirilen SSRS, Microsoft'un veritabanı çözümleri ile sıkı bir şekilde entegre edilmiştir.

Ancak, birçok PDF oluşturma senaryosu içinSSRSaltyapısı aşırıdır. Geçiş için ana nedenler şunlardır:

  1. Yüksek Altyapı Gereksinimleri: SQL Server, Rapor Sunucusu ve IIS yapılandırması gerektirir.
  2. Microsoft Ekosistemine Bağımlılık: SQL Server lisanslamasına ve Windows Server'a bağlıdır.
  3. Karmaşık Dağıtım: Rapor dağıtımı, güvenlik yapılandırması ve abonelik yönetimi
  4. Pahalı Lisanslama: SQL Server lisansları, özellikle kurumsal özellikler için
  5. Sınırlı Web Desteği: Modern SPA çerçeveleri ile entegrasyonu zordur.
  6. Bakım Yükü: Sunucu yamaları, veritabanı bakımı, rapor yönetimi
  7. Bulut Yerlisi Seçenek Yok: Yerel olarak tasarlandığı için, bulut desteği gariptir.

SSRS'nin Gereksiz Olduğu Durumlar

İhtiyacınız SSRSYükü
Faturalar oluşturun Tam rapor sunucusu
Veri tablolarını dışa aktarın SQL Server lisansı
Verilerden PDF'ler oluşturun Windows Server
Basit belge oluşturma Rapor abonelikleri

IronPDF, herhangi bir sunucu altyapısı olmadan işlem içi PDF oluşturma sağlar.

SSRS veIronPDFKarşılaştırması

Özellik SSRS IronPDF
Bağımlılık SQL Server gerektirir Belirli bir veri tabanı bağımlılığı yok
Dağıtım Sunucu tabanlı Uygulamalara gömülü kütüphane
Entegrasyon Microsoft ile sıkı entegrasyon Herhangi bir veri kaynağı ile çalışır
Veri Görselleştirme Kapsamlı yerel seçenekler PDF odaklı görselleştirmeler
Karmaşıklık Yüksek (sunucu kurulumu gerektirir) Orta ila düşük (kütüphane kurulumu)
Maliyet SQL Server lisanslama maliyetleri Geliştirici başına lisanslama maliyeti
HTML to PDF Hayır Tam Chromium
URL'den PDF'ye Hayır Evet
CSS Desteği Sınırlı Tam CSS3
JavaScript Hayır Tam ES2024

IronPDF, SSRS'e benzemez şekilde, belirli bir veritabanı veya sunucu ekosistemine bağlı değildir. Geliştiricilere, doğrudan C# içinde PDF belgelerini dinamik olarak oluşturmak, düzenlemek ve manipüle etmek için esnek bir kütüphane sağlar. Sunucu tabanlı altyapıdan kopması dikkat çekici bir avantaj sunar - basit ve uyarlanabilir, raporlamanın ötesinde geniş bir uygulama alanı için uygundur.

2025 ve 2026 boyunca .NET 10 ve C# 14 benimsemeyi planlayan ekipler için, IronPDF, SSRS'in altyapı karmaşıklığını ortadan kaldıran modern bir Chromium render motoru sunar.


Başlamadan Önce

Önkoşullar

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

NuGet Paket Değişiklikleri

# SSRS has no direct NuGet - it's server-based
# Remove any ReportViewer controls

dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WinForms

# Install IronPDF
dotnet add package IronPdf
# SSRS has no direct NuGet - it's server-based
# Remove any ReportViewer controls

dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WinForms

# 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: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
Imports Microsoft.Reporting.WebForms
Imports Microsoft.Reporting.WinForms

' After: IronPDF
Imports IronPdf
Imports IronPdf.Rendering
$vbLabelText   $csharpLabel

Temel API Eşleştirmeleri

SSRS Kavramı IronPDF Eşdeğeri Notlar
LocalReport ChromePdfRenderer Ana render etme
ServerReport RenderUrlAsPdf() URL tabanlı oluşturma
.rdlc dosyaları HTML/CSS şablonları Sablon formati
ReportParameter Dize enterpolasyonu Parametreler
ReportDataSource C# veri + HTML Veri baglama
LocalReport.Render("PDF") RenderHtmlAsPdf() PDF çıktısı
SubReport Birleştirilmiş PDF'ler İç içe geçmiş raporlar
Report Server URL Gerekli değil Sunucu gerekmez
ReportViewer kontrolü Gerekli değil Doğrudan PDF oluşturma
Dışa aktarma formatları PDF yerel Odaklı çıktı

Kod Geçiş Örnekleri

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

Önce (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;

        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";

        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);

        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        File.WriteAllBytes("output.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;

        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";

        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);

        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);

        File.WriteAllBytes("output.pdf", bytes);
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms
Imports System.IO

Class SSRSHtmlToPdf
    Shared Sub Main()
        ' Create a ReportViewer instance
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local

        ' Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc"

        ' Add HTML content as a parameter or dataset
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
        Dim param As New ReportParameter("HtmlContent", htmlContent)
        reportViewer.LocalReport.SetParameters(param)

        ' Render the report to PDF
        Dim mimeType As String, encoding As String, fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render( _
            "PDF", _
            Nothing, _
            mimeType, _
            encoding, _
            fileNameExtension, _
            streams, _
            warnings)

        File.WriteAllBytes("output.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class IronPdfHtmlToPdf
    Shared Sub Main()
        ' Create a ChromePdfRenderer instance
        Dim renderer = New ChromePdfRenderer()

        ' Convert HTML string to PDF
        Dim htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)

        ' Save the PDF file
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Bu örnek temel mimari farkı göstermektedir. SSRS, bir ReportViewer örneği oluşturmayı, bir .rdlc rapor tanım dosyasını yüklemeyi, parametreleri ayarlamayı ve ardından LocalReport.Render("PDF") çağırmayı ve meta veriler için birden çok out parametresi ile çağırmayı gerektirir.

IronPDF, sadece üç satır kod ile ChromePdfRenderer ve RenderHtmlAsPdf() kullanır. Hiçbir rapor tanımı dosyası, parametre nesneleri veya meta veri yönetimi gerekmez. Kapsamlı örnekler için HTML'den PDF'e döndürme belgesine bakın.

Örnek 2: Başlıklar ve Altbilgilerle URL'den PDF'e

Önce (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;

        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }

        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";

        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;

        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }

        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";

        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
Imports System
Imports System.IO
Imports System.Net
Imports Microsoft.Reporting.WebForms

Class SSRSUrlToPdf
    Shared Sub Main()
        ' Download HTML content from URL
        Dim url As String = "https://example.com"
        Dim htmlContent As String

        Using client As New WebClient()
            htmlContent = client.DownloadString(url)
        End Using

        ' Create RDLC report with header/footer configuration
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc"

        ' Set parameters for header and footer
        Dim parameters As ReportParameter() = {
            New ReportParameter("HeaderText", "Company Report"),
            New ReportParameter("FooterText", "Page " & DateTime.Now.ToString()),
            New ReportParameter("HtmlContent", htmlContent)
        }
        reportViewer.LocalReport.SetParameters(parameters)

        ' Render to PDF
        Dim mimeType As String, encoding As String, fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render(
            "PDF", Nothing, mimeType, encoding,
            fileNameExtension, streams, warnings)

        File.WriteAllBytes("webpage.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };

        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();

        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };

        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };

        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);

        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System

Class IronPdfUrlToPdf
    Shared Sub Main()
        ' Create a ChromePdfRenderer instance
        Dim renderer As New ChromePdfRenderer()

        ' Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        }

        renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
            .HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " & DateTime.Now.ToString("MM/dd/yyyy") & "</div>"
        }

        ' Convert URL to PDF
        Dim url As String = "https://example.com"
        Dim pdf = renderer.RenderUrlAsPdf(url)

        ' Save the PDF file
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

SSRS URL'leri doğrudan PDF'e dönüştüremez. HTML içeriğini WebClient.DownloadString() ile manuel olarak indirmeniz, ayrı bir .rdlc rapor dosyası oluşturmanız, HTML ve başlık/altbilgi metnini ReportParameter dizileri olarak geçmeniz ve ardından karmaşık Render() yöntem imzası ile render etmeniz gerekir.

IronPDF'nın RenderUrlAsPdf(), tüm işlemi tek bir çağrıda halleder. Başlıklar ve altbilgiler, tam HTML/CSS ve {page} ile {total-pages} gibi yer tutucuları destekleyen HtmlHeaderFooter nesneleri ile yapılandırılır. Detayli bilgi icin eğitimlerimize bakin.

Örnek 3: Veritabanı Tabanlı Rapor

Önce (SSRS):

//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";

        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");

            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
//SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";

        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");

            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }

        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;

        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);

        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.Reporting.WebForms
Imports System.IO

Class SSRSDatabaseReport
    Shared Sub Main()
        ' Create a ReportViewer instance
        Dim reportViewer As New ReportViewer()
        reportViewer.ProcessingMode = ProcessingMode.Local
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc"

        ' Create database connection and fetch data
        Dim connString As String = "Server=localhost;Database=SalesDB;Integrated Security=true;"
        Using connection As New SqlConnection(connString)
            Dim adapter As New SqlDataAdapter("SELECT * FROM Sales", connection)
            Dim dataSet As New DataSet()
            adapter.Fill(dataSet, "Sales")

            ' Bind data to report
            Dim dataSource As New ReportDataSource("SalesDataSet", dataSet.Tables(0))
            reportViewer.LocalReport.DataSources.Clear()
            reportViewer.LocalReport.DataSources.Add(dataSource)
        End Using

        ' Render to PDF
        Dim mimeType As String
        Dim encoding As String
        Dim fileNameExtension As String
        Dim streams As String()
        Dim warnings As Warning()

        Dim bytes As Byte() = reportViewer.LocalReport.Render("PDF", Nothing, mimeType, encoding, fileNameExtension, streams, warnings)

        File.WriteAllBytes("sales-report.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonra (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();

        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }

        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");

        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");

        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");

        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();

        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }

        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");

        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");

        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");

        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}
Imports IronPdf
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.Text

Class IronPdfDatabaseReport
    Shared Sub Main()
        ' Create database connection and fetch data
        Dim connString As String = "Server=localhost;Database=SalesDB;Integrated Security=true;"
        Dim dataTable As New DataTable()

        Using connection As New SqlConnection(connString)
            Dim adapter As New SqlDataAdapter("SELECT * FROM Sales", connection)
            adapter.Fill(dataTable)
        End Using

        ' Build HTML table from data
        Dim htmlBuilder As New StringBuilder()
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>")

        For Each column As DataColumn In dataTable.Columns
            htmlBuilder.Append($"<th>{column.ColumnName}</th>")
        Next
        htmlBuilder.Append("</tr>")

        For Each row As DataRow In dataTable.Rows
            htmlBuilder.Append("<tr>")
            For Each item In row.ItemArray
                htmlBuilder.Append($"<td>{item}</td>")
            Next
            htmlBuilder.Append("</tr>")
        Next
        htmlBuilder.Append("</table>")

        ' Convert to PDF
        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
        pdf.SaveAs("sales-report.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

SSRS, önceden tasarlanmış bir .rdlc rapor dosyası ('SalesReport.rdlc'), bir DataSet doldurmayı, rapor tanımıyla eşleşmesi gereken belirli bir adla ('SalesDataSet') bir ReportDataSource oluşturmayı, mevcut veri kaynaklarını temizlemeyi, yeni veri kaynağını eklemeyi ve ardından render etmeyi gerektirir.

IronPDF, mevcut veri erişim kodunuzu (aynı SqlDataAdapter deseni) kullanır, ardından StringBuilder ile dinamik olarak HTML oluşturur. Yerleşim üzerinde tam kontrolünüz vardır; standart HTML/CSS kullanılır - özel rapor tanımı dosyaları gerekmez.


Özellik Karşılaştırması

Özellik SSRS IronPDF
:Altyapı: Sunucu Gerekli Evet (Rapor Sunucusu) Hayır
SQL Server Lisansı Gerekli Gerekli değil
Windows Server Gerekli Herhangi bir platform
Veritabanı Gerekli Evet (ReportServer DB) Hayır
:Geliştirme: Görsel Tasarımcı Evet (.rdlc) HTML editörleri
Şablon Formatı RDLC/RDL HTML/CSS/Razor
Veri Kaynakları Yerleşik DSN Herhangi bir C# verisi
:Render İşleme: HTML'den PDF'ye Hayır Tam Chromium
URL'den PDF'ye Hayır Evet
CSS Desteği Sınırlı Tam CSS3
JavaScript Hayır Tam ES2024
Çizelgeler Yerleşik JS kütüphaneleri üzerinden
:Dağıtım: Rapor Dağıtımı Sunucuya Uygulama ile
Yapılandırma Karmaşık Basit
Bakım High Low

Yaygin Goc Sorunlari

Sorun 1: RDLC Rapor Tanımları

SSRS: Özel .rdlc XML formatını kullanır.

Çözüm: HTML şablonlarına dönüştürün:

  1. Visual Studio'da .rdlc'yi açın
  2. Yerleşim yapısını belgeleyin
  3. HTML/CSS ile yeniden oluşturun
  4. Veri bağlama için Razor kullanın

Sorun 2: Paylaşılan Veri Kaynakları

SSRS: Bağlantı dizeleri Rapor Sunucusunda.

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

var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template
var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template
Dim data = Await _dbContext.Sales.ToListAsync()
' Then bind to HTML template
$vbLabelText   $csharpLabel

Sorun 3: Rapor Parametreleri UI

SSRS: Yerleşik parametre istemleri.

Çözüm: Uygulamanızda parametre UI'si inşa edin:

// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);
// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);
' Your own parameter form, then:
Dim pdf = GenerateReport(startDate, endDate, region)
$vbLabelText   $csharpLabel

Sorun 4: Abonelikler/Programlanmış Raporlar

SSRS: Yerleşik abonelik motoru.

Çözüm: Arka plan iş çerçevesi kullanın:

// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);
// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);
$vbLabelText   $csharpLabel

Goc Kontrol Listesi

Geçiş Öncesi

  • TümSSRSraporlarının envanterini çıkarın (.rdlc dosyaları)
  • Veri kaynaklarını ve bağlantıları belgeleyin
  • Görsel referans için rapor yerleşimlerini ekran görüntüsü alın
  • Her rapor için rapor parametrelerini listeleyin
  • Abonelik programlarını not alın
  • ironpdf.com adresindenIronPDFlisans anahtarını alın

Kod Güncellemeleri

  • ReportViewer paketlerini kaldırın
  • IronPdf NuGet paketini yükleyin
  • .rdlc dosyalarını HTML şablonlarına dönüştürün
  • LocalReport öğesini ChromePdfRenderer ile değiştirin
  • ReportDataSource öğesini C# verileri + HTML şablonları ile değiştirin
  • ReportParameter öğesini string interpolasyonu ile değiştirin
  • LocalReport.Render("PDF") öğesini RenderHtmlAsPdf() ile değiştirin
  • HtmlHeaderFooter ile başlıklar/altbilgiler uygulayın
  • Uygulama başlatıldığında lisans başlatma ekleyin

Altyapı

  • Rapor Sunucusu'nun hizmet dışı bırakılmasını planlayın
  • Abonelikleri iş zamanlayıcısına taşıyın (Hangfire, vb.)
  • Dağıtım betiklerini güncelleyin

Test Etme

  • PDF çıktısını görsel olarak karşılaştırın
  • Veri doğruluğunu doğrulayın
  • Sayfalandırmayı test edin
  • Tüm parametreleri kontrol edin
  • Performans 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