SSRS vs IronPDF: Przewodnik porównania technicznego
ZrozumienieSSRS(SQL Server Reporting Services)
SSRS (SQL Server Reporting Services) to kompleksowa platforma raportowania firmy Microsoft, stanowiąca część ekosystemu SQL Server. Zapewnia kompletną Suite narzędzi do tworzenia, wdrażania i zarządzania raportami, oferując zarówno bogate w funkcje, jak i interaktywne opcje raportowania.SSRSjest ściśle zintegrowany z rozwiązaniami bazodanowymi firmy Microsoft, obsługuje różne źródła danych i zaspokaja potrzeby Enterprise.
Platforma wymaga rozbudowanej infrastruktury: instalacji SQL Server, dedykowanego serwera raportów, konfiguracji IIS oraz hostingu na serwerze Windows Server. Raporty są tworzone przy użyciu plików RDLC (Report Definition Language Client) i wdrażane na serwerze raportów w celu wykonania.
Kluczowa uwaga:SSRSstanowi rozwiązanie serwerowe, które wymaga znacznych nakładów inwestycyjnych na infrastrukturę, co sprawia, że jest ono zbyt rozbudowane dla wielu scenariuszy generowania plików PDF.
Zrozumienie IronPDF
IronPDF udostępnia samodzielną bibliotekę .NET do generowania plików PDF, którą można bezpośrednio zintegrować z aplikacjami bez konieczności korzystania z infrastruktury serwerowej. W przeciwieństwie do SSRS,IronPDFnie jest powiązany z żadną konkretną bazą danych ani ekosystemem serwerowym, funkcjonując jako biblioteka wbudowana, która konwertuje HTML, CSS iJavaScriptna dokumentyPDFprzy użyciu nowoczesnego silnika renderującego Chromium.
IronPDF instaluje się jako pakiet NuGet i może współpracować z dowolnym źródłem danych — SQL Server, bazami danych NoSQL, interfejsami API REST lub prostymi systemami plików — zapewniając elastyczność w obsłudze danych bez uzależnienia od ekosystemu Microsoftu.
Porównanie infrastruktury
Podstawowa różnica architektoniczna międzySSRSaIronPDFwpływa na wdrożenie, utrzymanie i koszty operacyjne:
Wymagania infrastrukturalne SSRS
SSRS wymaga znacznych inwestycji w infrastrukturę:
- SQL Server: Wymagany silnik bazy danych z odpowiednią licencją
- Report Server: dedykowany komponent serwera do wykonywania raportów
- Konfiguracja IIS: Konfiguracja serwera WWW do dostarczania raportów
- Windows Server: Wymagania dotyczące systemu operacyjnego
- Baza danych ReportServer: przechowywanie metadanych i subskrypcji
Wymagania infrastrukturalne IronPDF
IronPDF działa jako biblioteka wbudowana:
- Pakiet NuGet: Instalacja pojedynczego pakietu
- Nie wymaga serwera: działa w ramach procesu aplikacji
- Brak zależności od bazy danych: nie jest wymagańa żadna konkretna infrastruktura bazodanowa
- Wielopłatformowość: Działa w systemach Windows, Linux oraz w środowiskach chmurowych
KiedySSRSto przesada
W wielu scenariuszach generowania plikówPDFinfrastrukturaSSRSjest nadmierna:
| Twoje potrzeby | SSRS narzut |
|---|---|
| Generowanie faktur | Pełny serwer raportów |
| Eksport tabel danych | Licencja SQL Server |
| Tworzenie plikówPDFna podstawie danych | Windows Server |
| Proste generowanie dokumentów | Subskrypcje raportów |
IronPDF umożliwia generowanie plikówPDFw trakcie przetwarzania bez konieczności posiadania infrastruktury serwerowej.
Przegląd porównania funkcji
| Funkcja | SSRS | IronPDF |
|---|---|---|
| Zależności | Wymaga SQL Server | Brak konkretnej zależności od bazy danych |
| Wdrożenie | Oparte na serwerze | Biblioteka (wbudowana w aplikacje) |
| Integracja | Ścisła integracja z Microsoftem | Działa z dowolnym źródłem danych |
| Wizualizacja danych | Szeroki wybór opcji językowych | Wizualizacje skupione na plikachPDF |
| Złożoność | Wysoki (wymagańa konfiguracja serwera) | Umiarkowana do niskiej (konfiguracja biblioteki) |
| Koszt | Koszty licencji SQL Server | Koszt licencji dla programisty |
| Obsługiwane formaty | Głównie raporty |
Konwersja HTML do PDF
Podstawowy proces tworzenia plikówPDFna podstawie treści ujawnia zasadnicze różnice w podejściu.
SSRSHTML do PDF
SSRS wymaga definicji raportów RDLC oraz kontrolki ReportViewer:
//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
Takie podejście wymaga:
- Tworzenie instancji
ReportViewer - Ładowanie wcześniej zaprojektowanego pliku definicji raportu
.rdlc - Przekazywanie treści jako obiekty
ReportParameter - Złożona metoda
Render()z wieloma parametrami wyjściowymi - Ręczna obsługa tablic bajtów dla wyjścia plików
IronPDFHTML do PDF
IronPDF umożliwia bezpośrednią konwersję plików HTML do formatu 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 thePDFfile
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 thePDFfile
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Imports System
Class IronPdfHtmlToPdf
Shared Sub Main()
' Create a ChromePdfRenderer instance
Dim renderer As New ChromePdfRenderer()
' Convert HTML string to PDF
Dim htmlContent As String = "<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
Metoda RenderHtmlAsPdf konwertuje zawartość HTML bezpośrednio do formatuPDFprzy użyciu silnika renderującego Chromium. Nie są wymagańe żadne pliki definicji raportów, parametry ani skomplikówana obsługa wyników.
Generowanie raportów z baz danych
Tworzenie raportów na podstawie danych z bazy danych najlepiej ilustruje różnice w przebiegu pracy.
Raport bazy danych SSRS
SSRS wiąże dane za pomocą obiektów ReportDataSource i definicji raportów RDLC:
//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
Takie podejście wymaga:
- Wcześniej zaprojektowany plik raportu
.rdlc(SalesReport.rdlc) - Wiązanie
ReportDataSourcez nazwanym zestawem danych (SalesDataSet) - Usuwanie i dodawanie źródeł danych do raportu
- Złożona metoda renderowania z wieloma parametrami wyjściowymi
Raport dotyczący bazy danych IronPDF
IronPDF tworzy kod HTML bezpośrednio na podstawie danych przy użyciu standardowych wzorców języka C#:
// 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
IronPDF wykorzystuje standardowy język C# do tworzenia kodu HTML na podstawie danych, a następnie renderuje go do formatu PDF. Nie są wymagańe pliki definicji raportów — programiści używają znanego im HTML/CSS do tworzenia układu z pełną kontrolą nad stylizacją.
URL do plikuPDFz nagłówkami i stopkami
Konwersja treści internetowych do formatuPDFz niestandardowymi nagłówkami i stopkami ujawnia istotne różnice w API.
SSRSURL do PDF
SSRS nie może bezpośrednio konwertować adresów URL na plikiPDF— wymagańe jest ręczne pobranie kodu HTML i powiązanie parametrów raportu:
//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
Podejście oparte na obejściu:
- Ręczne pobieranie HTML za pomocą
WebClient - Nie można renderować treści zależnych od JavaScript
- Wymagany jest gotowy raport RDLC z symbolami zastępczymi dla parametrów
- Nagłówki/stopki skonfigurowane w projekcie RDLC
IronPDFURL do PDF
IronPDF zapewnia natywną konwersję adresów URL do formatuPDFz programową konfiguracją nagłówków i stopek:
// 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 thePDFfile
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 thePDFfile
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
Metoda RenderUrlAsPdf przechodzi do adresu URL, renderuje stronę z wykorzystaniemJavaScripti przechwytuje wynik. Klasa HtmlHeaderFooter umożliwia nagłówki i stopki oparte na HTML z symbolami zastępczymi {page} i {total-pages}.
Przewodnik po mapowaniu API
Zespoły oceniające migracjęSSRSdoIronPDFmogą skorzystać z poniższego zestawienia równoważnych pojęć:
| KoncepcjaSSRS | OdpowiednikIronPDF |
|---|---|
LocalReport |
ChromePdfRenderer |
ServerReport |
RenderUrlAsPdf() |
pliki .rdlc |
Szablony HTML/CSS |
ReportParameter |
Interpolacja ciągów znaków |
ReportDataSource |
Dane C# + HTML |
LocalReport.Render("PDF") |
RenderHtmlAsPdf() |
SubReport |
Połączone plikiPDF |
Report Server URL |
Nie jest potrzebne |
kontrola ReportViewer |
Nie jest potrzebne |
| Formaty eksportu | PDFjest formatem natywnym |
Kompleksowe porównanie funkcji
| Funkcja | SSRS | IronPDF |
|---|---|---|
| Infrastruktura | ||
| Wymagany serwer | Tak (Serwer raportów) | Nie |
| Licencja SQL Server | Wymagane | Nie jest potrzebne |
| Windows Server | Wymagane | Dowolna platforma |
| Wymagana baza danych | Tak (baza danych ReportServer) | Nie |
| Rozwój | ||
| Projektant wizualny | Tak (.rdlc) | Edytory HTML |
| Format szablonu | RDLC/RDL | HTML/CSS/Razor |
| Źródła danych | Wbudowany DSN | Wszelkie dane w języku C# |
| Renderowanie | ||
| HTML doPDF | Nie | Pełny Chromium |
| URL do plikuPDF | Nie | Tak |
| Obsługa CSS | Ograniczone | Pełny CSS3 |
| JavaScript | Nie | Pełna wersja ES2024 |
| Wykresy | Wbudowane | Za pośrednictwem bibliotek JS |
| Wdrożenie | ||
| Wdrożenie raportu | Do serwera | Z aplikacją |
| Konfiguracja | Złożone | Proste |
| Konserwacja | High | Low |
| Funkcje | ||
| Subskrypcje | Wbudowane | Stwórz własny |
| Buforowanie | Wbudowane | Stwórz własny |
| Bezpieczeństwo | Zintegrowane | Na aplikację |
| Eksport do wielu formatów | Tak | Skupione naPDF |
Kiedy zespoły rozważają migrację do SSRS
Kilka czynników skłania zespoły programistów do rozważenia alternatyw dla SSRS:
Wysokie wymagania infrastrukturalne stają się uciążliwe, gdy aplikacje potrzebują jedynie generowania plików PDF. Serwer Full Report Server, licencje SQL Server oraz hostingWindows Serverstanowią znaczne obciążenie w scenariuszach generowania faktur lub eksportu danych.
Zamknięcie w ekosystemie Microsoftu ma wpływ na organizacje przechodzące na architektury natywne dla chmury lub wielopłatformowe.SSRSjest przeznaczony do wdrożenia lokalnego z ograniczonymi opcjami obsługi chmury.
Złożone wdrożenie obejmuje wdrażanie raportów, konfigurację zabezpieczeń i zarządzanie subskrypcjami, co powoduje dodatkowe obciążenie operacyjne wykraczające poza rzeczywiste potrzeby związane z generowaniem plików PDF.
Kosztowne licencje SQL Server, zwłaszcza na funkcje dla przedsiębiorstw, mogą być nieuzasadnione, gdy głównym zapotrzebowaniem jest generowanie dokumentów, a nie funkcje raportowania dla przedsiębiorstw.
Ograniczona obsługa sieci sprawia, że integracjaSSRSz nowoczesnymi frameworkami SPA i współczesnymi wzorcami tworzenia stron internetowych jest trudna.
Koszty związane z konserwacją wynikające z aktualizacji serwerów, utrzymania baz danych i zarządzania raportami powodują stałe koszty operacyjne.
Zalety i kompromisy
Atuty SSRS
- Ścisła integracja z ekosystemem Microsoft
- Bogate opcje wizualizacji danych (mapy, wykresy, diagramy)
- Obsługa różnorodnych źródeł danych (ODBC, OLE DB, SQL Server, Oracle, XML)
- Wbudowane funkcje subskrypcji i planowania
- Wizualny kreator raportów dla osób niebędących programistami
- Wbudowana pamięć podręczna i integracja zabezpieczeń
Ograniczenia SSRS
- Zależność od infrastruktury SQL Server
- Wdrożenie serwerowe z złożoną konfiguracją
- Wysokie koszty utrzymania
- Wysokie koszty licencji
- Ograniczona obsługa nowoczesnych standardów internetowych
- Brak natywnych funkcji konwersji HTML doPDFlub URL do PDF
- Zaprojektowany do użytku lokalnego, obsługa chmury jest utrudniona
Atuty IronPDF
- Brak zależności od serwera lub bazy danych
- Współpracuje z dowolnym źródłem danych
- Wdrażanie bibliotek wbudowanych
- Nowoczesne renderowanie Chromium z pełną obsługą CSS3/JavaScript
- Natywna konwersja adresów URL do formatu PDF
- Szablony oparte na HTML wykorzystujące znane technologie internetowe
- Mniejsza złożoność operacyjna
- Kompleksowa dokumentacja i profesjonalne wsparcie
Uwagi dotyczące IronPDF
- Komercyjny model licencjonowania
- Subskrypcje i planowanie wymagają niestandardowej implementacji
- Inny przebieg pracy w porównaniu z podejściem opartym na wizualnym projektancie SSRS
Wnioski
SSRS iIronPDFsłużą różnym kontekstom organizacyjnym i wymaganiom technicznym.SSRSzapewnia wartość dodaną dla organizacji, które w znacznym stopniu zainwestowały w ekosystem Microsoftu i wymagają kompleksowych funkcji raportowania Enterprise z wbudowanymi subskrypcjami, buforowaniem i integracją zabezpieczeń. Jego wizualny projektant umożliwia tworzenie raportów przez osoby niebędące programistami w ramach istniejącej infrastruktury SQL Server.
W przypadku aplikacji wymagających generowania plikówPDFbez infrastruktury raportowania Enterprise,IronPDFzapewnia niezbędne funkcje bez obciążania serwera. Możliwość bezpośredniego osadzania generowania plikówPDFw aplikacjach, pracy z dowolnym źródłem danych oraz wykorzystania nowoczesnego HTML/CSS do projektowania dokumentów rozwiązuje typowe scenariusze, w których infrastrukturaSSRSjest zbyt rozbudowana.
Oceniając migracjęSSRSdo IronPDF, zespoły powinny wziąć pod uwagę swoje konkretne wymagania dotyczące inwestycji w infrastrukturę, złożoności wdrożenia i utrzymania operacyjnego. Dla zespołów, które w 2026 r. planują wdrożenie .NET 10 i C# 14 w chmurze, podejście oparte na bibliotece wbudowanejIronPDFstanowi bardziej odpowiednią podstawę niż architektura serwerowa SSRS.
Aby uzyskać wskazówki dotyczące wdrożenia, zapoznaj się z samouczkiem IronPDF HTML-to-PDF oraz dokumentacją obejmującą wzorce generowania plikówPDFdla nowoczesnych aplikacji .NET.