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'ye geçiş yapmak, PDF oluşturma iş akışınızı ağır sunucu tabanlı bir altyapıdan, herhangi bir .NET uygulamasına doğrudan gömülebilen hafif, yerinde bir kütüphaneye dönüştürür. Bu kılavuz, SQL Server bağımlılıklarını, rapor sunucu yükünü ve Microsoft ekosistemi bağımlılığını ortadan kaldıran eksiksiz, adım adım bir geçiş yolu sağlar.

Neden SSRS'den IronPDF'ye Geçmeli

SSRS'yi Anlamak

SQL Server Reporting Services (SSRS), Microsoft'un SQL Server ekosistemi ile sıkı bir şekilde entegre olan kurumsal raporlama platformudur — raporlar oluşturmak, dağıtmak ve yönetmek için tam bir takımdır. Microsoft, SSRS 2022'nin son bağımsız sürüm olduğunu doğruladı: SQL Server 2025'ten itibaren, şirket içi raporlamalar Power BI Report Server (PBIRS) olarak birleştirilir ve yeni SSRS sürümleri gönderilmeyecek. SSRS 2022, 11 Ocak 2033 tarihine kadar SQL Server 2022 yaşam döngüsüne uygun olarak güvenlik güncellemeleri alacak (bkz. Raporlama Hizmetleri Konsolidasyon SSS).

Birçok PDF oluşturma senaryosu için, SSRS altyapısı fazladır. Geçiş yapılmak için temel nedenler şunlardır:

  1. SSRS çizgisin sonu: SQL Server 2025, SSRS olmadan gönderilecek; PBIRS yerine geçer. SSRS'yi hedef alan yeni çalışma bir çıkmaz yoldur.
  2. Ağır Altyapı: SQL Server, Rapor Sunucusu ve (eski Web Forms görüntüleyicisi için) IIS yapılandırması gerektirir
  3. Microsoft Ekosistemi Kapanı: SQL Server lisanslamasına ve Windows Server'a bağlı
  4. Karmaşık Dağıtım: Rapor dağıtımı, güvenlik yapılandırması ve abonelik yönetimi
  5. Pahalı Lisanslama: Özellikle kurumsal özellikler için SQL Server lisansları
  6. Birinci Sınıf .NET Core Desteği Yok: Microsoft'un Microsoft.ReportingServices.ReportViewerControl.WebForms / .Winforms paketleri yalnızca .NET Framework 4.0–4.8.1 için hedeflenmiştir. .NET Core / .NET 5+ kullanıcıları topluluk portu ReportViewerCore.NETCore'e dayanır.
  7. Bakım Yükü: Sunucu yamaları, veritabanı bakımı, rapor yönetimi
  8. Bulut Yerel Seçeneği Yok: Yerel için tasarlanmış, bulut desteği zorludur

SSRS Gereksiz Olduğunda

İhtiyacınız SSRS Aşırı Yük
Fatura oluşturma Tam rapor sunucusu
Veri tablolarını dışa aktarma SQL Server lisansı
Verilerden PDF oluşturma Windows Server
Basit belge oluşturma Rapor abonelikleri

IronPDF, herhangi bir sunucu altyapısı gerektirmeyen bir süreç içinde PDF oluşturma sağlar.

SSRS ve IronPDF Karşılaştırması

Özellik SSRS IronPDF
Bağımlılık SQL Server gerektirir Belirli bir veritabanı 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 Geniş 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 lisans maliyeti
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

IronPDF, SSRS'den farklı olarak belirli bir veritabanı veya sunucu ekosistemine bağlı değildir. Geliştiricilere doğrudan C# içinde PDF belgelerini dinamik olarak oluşturma, düzenleme ve manipüle etme esnekliğini sağlar. Sunucu tabanlı altyapıdan ayrılmak belirgin bir avantaj sunar—kapsamlı ve uyarlanabilir, raporlamanın ötesinde geniş bir uygulama yelpazesi için uygundur.

Modern .NET'i benimseyen ekipler için, IronPDF, SSRS'nin altyapı karmaşıklığını ortadan kaldıran bir Chromium işleme motoru sağlar.


Başlamadan Önce

Ön Koş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ükleyebilme
  3. IronPDF Lisansı: Lisans anahtarınızı ironpdf.com adresinden edinin

NuGet Paket Değişiklikleri

# SSRS itself is server-based, but the in-process LocalReport API
# ships via Microsoft's ReportViewerControl packages (latest 150.1652.0,
# June 2024 — .NET Framework 4.0–4.8.1 only).
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.Winforms

# If your project used the community .NET Core port, remove it too:
# dotnet remove package ReportViewerCore.NETCore

# Install IronPDF
dotnet add package IronPdf
# SSRS itself is server-based, but the in-process LocalReport API
# ships via Microsoft's ReportViewerControl packages (latest 150.1652.0,
# June 2024 — .NET Framework 4.0–4.8.1 only).
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.Winforms

# If your project used the community .NET Core port, remove it too:
# dotnet remove package ReportViewerCore.NETCore

# 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: 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şlemeleri

SSRS Kavramı IronPDF Eşdeğeri Notlar
LocalReport ChromePdfRenderer Çekirdek oluşturma
ServerReport RenderUrlAsPdf() URL tabanlı işleme
.rdlc dosyaları HTML/CSS şablonları Şablon formatı
ReportParameter Dizi iç içe dizimi Parametreler
ReportDataSource C# verisi + HTML Veri bağlama
LocalReport.Render("PDF") RenderHtmlAsPdf() PDF çıktısı
SubReport Birleştirilmiş PDF'ler İç içe raporlar
Report Server URL Gerekli değil Sunucu gerekmez
ReportViewer kontrolü Gerekli değil Doğrudan PDF oluşturma
Dışa verilme formatları PDF yerlidir Odaklanmış çıktı

Kod Göç Örnekleri

Örnek 1: HTML'den PDF'ye 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
        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("output.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonrası (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 yapısal farkı gösterir. SSRS, bir ReportViewer örneği oluşturmayı, bir .rdlc rapor tanım dosyası yüklemeyi, parametreleri ayarlamayı ve ardından metadata için birden fazla out parametresi ile LocalReport.Render("PDF") çağırmayı gerektirir.

IronPDF, sadece üç satır kodla ChromePdfRenderer kullanır ve RenderHtmlAsPdf() ile işlemi tamamlar. Rapor tanım dosyaları, parametre nesneleri, meta veri işlemi gerekmez. Kapsamlı örnekler için HTML'den PDF'e dönüşüm belgelerine bakın.

Örnek 2: Üst ve Alt Bilgilerle URL'den PDF'ye

Ö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

Sonrası (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'ye dönüştüremez. HTML içeriğini WebClient.DownloadString() ile manuel olarak indirmeniz, ayrı bir .rdlc rapor dosyası oluşturmanız, HTML ve üstbilgi/altbilgi metnini ReportParameter dizileri olarak geçirmeniz, ardından karmaşık Render() yöntem imzasıyla işlemi gerçekleştirmeniz gerekmektedir.

IronPDF'in RenderUrlAsPdf() işlemin tamamını tek bir çağrıda ele alır. Üstbilgiler ve altbilgiler tam HTML/CSS ve {page} ve {total-pages} gibi yer tutucuları destekleyen HtmlHeaderFooter nesneleri ile yapılandırılır. Daha fazla bilgiyi kılavuzlarımızda öğrenin.

Ö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, 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("sales-report.pdf", bytes)
    End Sub
End Class
$vbLabelText   $csharpLabel

Sonrası (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 doldurma, rapor tanımı ile eşleşmesi gereken belirli bir ad ('SalesDataSet') ile bir ReportDataSource oluşturma, mevcut veri kaynaklarını temizleme, yeni veri kaynağını ekleme ve ardından çıktıyı gerçekleştirme gerektirir.

IronPDF, mevcut veri erişim kodunuzu (aynı SqlDataAdapter deseni) kullanır, ardından HTML'i dinamik olarak StringBuilder ile oluşturur. Standart HTML/CSS kullanarak düzen üzerinde tam kontrole sahipsiniz—özel rapor tanım dosyalarına gerek yok.


Özellik Karşılaştırması

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

Yaygın Geçiş Sorunları

Sorun 1: RDLC Rapor Tanımlamaları

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

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

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

Sorun 2: Paylaşılan Veri Kaynakları

SSRS: Rapor Sunucusunda bağlantı dizeleri.

Çö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: Dahili parametre istemleri.

Çözüm: Uygulamanızda parametre UI'si oluşturun:

// 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: Dahili abonelik motoru.

Çözüm: Arka plan iş çerçevesini 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

Geçiş Kontrol Listesi

Öncesi-Geçiş

  • Tüm SSRS raporlarını envanterleyin (.rdlc dosyaları)
  • Veri kaynaklarını ve bağlantıları belgeleyin
  • Görsel referans için rapor düzenlerinin ekran görüntüsünü alın
  • Her rapor için rapor parametrelerini listeleyin
  • Abonelik programlarını not alın
  • ironpdf.com adresinden IronPDF lisans anahtarını edinin

Kod Güncellemeleri

  • ReportViewer paketlerini kaldır
  • IronPdf NuGet paketini kurun
  • .rdlc dosyalarını HTML şablonlarına dönüştürün
  • LocalReport yerine ChromePdfRenderer kullanın
  • ReportDataSource yerine C# veri + HTML şablonları kullanın
  • ReportParameter yerine dize interpolasyonu kullanın
  • LocalReport.Render("PDF") yerine RenderHtmlAsPdf() kullanın
  • HtmlHeaderFooter ile üstbilgi/altbilgi uygulayın
  • Uygulama başlangıcında lisans başlatma ekle

Altyapı

  • Rapor Sunucusu devre dışı bırakma planı yap
  • Abonelikleri iş planlayıcısına (Hangfire, vb.) taşı
  • Dağıtım betiklerini güncelleyin

Test Etme

  • PDF çıktısını görsel olarak karşılaştır
  • Veri doğruluğunu kontrol et
  • Sayfalandırmayı test et
  • Tüm parametreleri kontrol et
  • Performans testi yapın

Lütfen dikkate alınSSRS, ilgili sahibinin tescilli ticari markasıdır. Bu site, Microsoft tarafından onaylanmamış, desteklenmemiş veya finanse edilmemiştir. Tüm ürün adları, logolar ve markalar kendi sahiplerine aittir. 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