IRONSOFTWAREHOME
FILMY

Jak generować pliki PDF w bibliotece VB .NET | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

Migracja z SQL Server Reporting Services (SSRS) na IronPDF przekształca twój przepływ pracy generacji PDF z ciężkiej, serwerowej infrastruktury na lekką, biblioteczkę wewnątrz aplikacji, która może być osadzona bezpośrednio w dowolnej aplikacji .NET. Ten przewodnik dostarcza pełną, szczegółową ścieżkę migracji, która eliminuje zależności SQL Server, obciążenie serwera raportów i zamknięcie w ekosystemie Microsoft.

Dlaczego migrować z SSRS do IronPDF

Zrozumienie SSRS

SQL Server Reporting Services (SSRS) to platforma raportowa firmy Microsoft dla przedsiębiorstw — pełen zestaw do tworzenia, wdrażania i zarządzania raportami, ściśle zintegrowany z ekosystemem SQL Server. Microsoft potwierdził, że SSRS 2022 to ostatnia niezależna wersja: począwszy od SQL Server 2025, raportowanie lokalne zostanie skoncentrowane w Power BI Report Server (PBIRS), a nowe wersje SSRS nie będą publikowane. SSRS 2022 otrzymuje aktualizacje zabezpieczeń do 11 stycznia 2033, zgodnie z cyklem życia SQL Server 2022 (zobacz FAQ o konsolidacji usług raportowania).

Dla wielu scenariuszy generowania PDF, infrastruktura SSRS jest nadmiarem. Kluczowe powody do migracji obejmują:

  1. Koniec z SSRS: SQL Server 2025 jest dostarczany bez SSRS; PBIRS go zastępuje. Nowe prace skierowane na SSRS to ślepa uliczka.
  2. Ciężka infrastruktura: Wymaga SQL Server, Report Server i (dla starszego widoku Web Forms) konfiguracji IIS
  3. Uwiązanie przez ekosystem Microsoft: Powiązane z licencjonowaniem SQL Server i Windows Server
  4. Złożona implementacja: Wdrożenie raportów, konfiguracja zabezpieczeń i zarządzanie subskrypcjami
  5. Drogie licencjonowanie: Licencje SQL Server, zwłaszcza dla funkcji przedsiębiorstwa
  6. Brak wsparcia pierwszej klasy dla .NET Core: pakiety Microsoft Microsoft.ReportingServices.ReportViewerControl.WebForms / .Winforms są przeznaczone tylko dla .NET Framework 4.0–4.8.1. Użytkownicy .NET Core / .NET 5+ polegają na porcie społecznościowym ReportViewerCore.NETCore.
  7. Dodatkowe obciążenie konserwacyjne: Łatanie serwera, konserwacja baz danych, zarządzanie raportami
  8. Brak opcji zintegrowanej z chmurą: Zaprojektowane dla środowisk lokalnych, wsparcie w chmurze jest niezręczne

Kiedy SSRS to przesada

Twoje potrzebySSRS narzut
Generowanie fakturPełny serwer raportów
Eksport tabel danychLicencja SQL Server
Tworzenie plików PDF na podstawie danychWindows Server
Proste generowanie dokumentówSubskrypcje raportów

IronPDF umożliwia generowanie plików PDF w trakcie przetwarzania bez konieczności posiadania infrastruktury serwerowej.

Porównanie SSRS z IronPDF

FunkcjaSSRSIronPDF
ZależnościWymaga SQL ServerBrak konkretnej zależności od bazy danych
WdrożenieOparte na serwerzeBiblioteka (wbudowana w aplikacje)
IntegracjaŚcisła integracja z MicrosoftemDziała z dowolnym źródłem danych
Wizualizacja danychSzeroki wybór opcji językowychWizualizacje skupione na plikach PDF
ZłożonośćWysoki (wymagana konfiguracja serwera)Umiarkowana do niskiej (konfiguracja biblioteki)
KosztKoszty licencji SQL ServerKoszt licencji dla programisty
HTML do PDFNiePełny Chromium
URL do pliku PDFNieTak
Obsługa CSSOgraniczonePełny CSS3
JavaScriptNiePełna wersja ES2024

IronPDF, w odróżnieniu od SSRS, nie jest związany z żadnym specyficznym ekosystemem baz danych ani serwerów. Zapewnia deweloperom elastyczną bibliotekę do dynamicznego tworzenia, edytowania i manipulowania dokumentami PDF bezpośrednio w C#. To rozdzielenie od infrastruktury opartej na serwerze oferuje zauważalną korzyść — jest proste i elastyczne, nadające się do szerokiej gamy aplikacji, nie tylko do raportowania.

Dla zespołów przyjmujących nowoczesny .NET, IronPDF dostarcza silnik renderujący Chromium, który eliminuje złożoność infrastruktury SSRS.


Zanim zaczniesz

Wymagania wstępne

  1. Środowisko .NET: .NET Framework 4.6.2+ lub .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Dostęp do NuGet: Możliwość instalowania pakietów NuGet
  3. Licencja IronPDF: Uzyskaj klucz licencyjny na stronie ironpdf.com

Zmiany w pakiecie NuGet

# 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

Konfiguracja licencji

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Kompletna dokumentacja API

Zmiany w przestrzeni nazw

// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

Mapowania podstawowych interfejsów API

Koncepcja SSRSOdpowiednik IronPDFUwagi
LocalReportChromePdfRendererRenderowanie rdzenia
ServerReportRenderUrlAsPdf()Renderowanie oparte na URL
.rdlc plikiSzablony HTML/CSSFormat szablonu
ReportParameterInterpolacja ciągów znakówParametry
ReportDataSourceDane C# + HTMLPowiązanie danych
LocalReport.Render("PDF")RenderHtmlAsPdf()Wynik w formacie PDF
SubReportPołączone pliki PDFRaporty zagnieżdżone
Report Server URLNie jest potrzebneNie wymaga serwera
ReportViewer kontrolaNie jest potrzebneBezpośrednia generacja PDF
Formaty eksportuPDF jest formatem natywnymSkoncentrowane output

Przykłady migracji kodu

Przykład 1: Konwersja HTML do PDF

Before (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);
    }
}
C#

Po (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");
    }
}

Ten przykład ilustruje podstawową różnicę architektoniczną. SSRS wymaga utworzenia instancji ReportViewer, załadowania pliku definicji raportu .rdlc, ustawienia parametrów, a następnie wywołania LocalReport.Render("PDF") z wieloma out parametrami metadanych.

IronPDF używa ChromePdfRenderer z RenderHtmlAsPdf() w zaledwie trzech liniach kodu. Nie są wymagane pliki definicji raportów, obiekty parametrów ani obsługa metadanych. Kompleksowe przykłady można znaleźć w dokumentacji dotyczącej konwersji HTML do PDF.

Przykład 2: URL do PDF z nagłówkami i stopkami

Before (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);
    }
}
C#

Po (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");
    }
}

SSRS nie może bezpośrednio konwertować URL do PDF. Musisz ręcznie pobrać treść HTML za pomocą WebClient.DownloadString(), utworzyć oddzielny plik raportu .rdlc, przekazać treść HTML i tekst nagłówka/stopki jako tablice ReportParameter, a następnie wyrenderować złożonym podpisem metody Render().

RenderUrlAsPdf() w IronPDF obsługuje cały proces jednym wywołaniem. Nagłówki i stopki są konfigurowane z obiektami HtmlHeaderFooter, które obsługują pełny HTML/CSS i placeholdery jak {page} i {total-pages}. Dowiedz się więcej z naszych samouczków.

Przykład 3: Raport oparty na bazie danych

Before (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);
    }
}
C#

Po (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");
    }
}

SSRS wymaga wstępnie zaprojektowanego pliku raportu .rdlc ("SalesReport.rdlc"), wypełnienia DataSet, stworzenia ReportDataSource z określoną nazwą ("SalesDataSet"), która musi zgadzać się z definicją raportu, usunięcia istniejących źródeł danych, dodania nowego źródła danych, a następnie renderowania.

IronPDF używa Twojego istniejącego kodu dostępu do danych (ten sam wzorzec SqlDataAdapter), a następnie dynamicznie buduje HTML za pomocą StringBuilder. Masz pełną kontrolę nad układem używając standardowego HTML/CSS — nie są wymagane pliki definicji raportów.


Porównanie funkcji

FunkcjaSSRSIronPDF
:Infrastructure:
Licencja SQL ServerWymaganeNie jest potrzebne
Windows ServerWymaganeDowolna platforma
Wymagana baza danychTak (baza danych ReportServer)Nie
:Rozwój:
Format szablonuRDLC/RDLHTML/CSS/Razor
Źródła danychWbudowany DSNWszelkie dane w języku C#
:Rendering:
URL do pliku PDFNieTak
Obsługa CSSOgraniczonePełny CSS3
JavaScriptNiePełna wersja ES2024
WykresyWbudowaneZa pośrednictwem bibliotek JS
:Wdrozenie:
KonfiguracjaZłożoneProste
KonserwacjaWysokaNiski

Typowe problemy związane z migracją

Problem 1: Definicje raportów RDLC

SSRS: Używa własnego formatu XML .rdlc.

Rozwiązanie: Konwersja na szablony HTML:

  1. Otwórz .rdlc w Visual Studio
  2. Opisz strukturę układu
  3. Odtwórz w HTML/CSS
  4. Użyj Razor do łączenia danych

Problem 2: Udostępnione źródła danych

SSRS: Łańcuchy połączeń w Report Server.

Rozwiązanie: Użyj warstwy dostępu do danych aplikacji:

var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template

Problem 3: UI parametrów raportu

SSRS: Wbudowane wywołania parametrów.

Rozwiązanie: Zbuduj UI parametrów w swojej aplikacji:

// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);

Problem 4: Subskrypcje/zaplanowane raporty

SSRS: Wbudowany silnik subskrypcji.

Rozwiązanie: Użyj frameworka prac w tle:

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

Lista kontrolna migracji

Przed migracją

  • Inwentaryzacja wszystkich raportów SSRS (pliki .rdlc)
  • Udokumentuj źródła danych i połączenia
  • Zrób zrzut ekranowy układów raportów dla odniesienia wizualnego
  • Wypisz parametry raportów dla każdego raportu
  • Zapisz harmonogramy subskrypcji
  • Uzyskaj klucz licencyjny IronPDF ze strony ironpdf.com

Aktualizacje kodu

  • Usuń pakiety ReportViewer
  • Instalacja pakietu NuGet IronPdf
  • Konwersja plików .rdlc na szablony HTML
  • Zastąp LocalReport przez ChromePdfRenderer
  • Zastąp ReportDataSource przez dane C# + szablony HTML
  • Zastąp ReportParameter przez interpolację łańcuchów
  • Zastąp LocalReport.Render("PDF") przez RenderHtmlAsPdf()
  • Zastosuj nagłówki/stopki za pomocą HtmlHeaderFooter
  • Dodaj inicjalizację licencji podczas uruchamiania aplikacji

Infrastruktura

  • Zaplanuj wycofanie z użytkowania serwera raportów
  • Zmiany subskrypcji na planista zadań (np. Hangfire)
  • Aktualizacja skryptów wdrażania

Testowanie

  • Porównaj wizualnie wynik PDF
  • Zweryfikuj dokładność danych
  • Przetestuj paginację
  • Sprawdź wszystkie parametry
  • Testy wydajności

Zwróć uwagę: SSRS jest zarejestrowanym znakiem towarowym jego odpowiedniego właściciela. Ta strona nie jest powiązana z firmą Microsoft, nie jest przez nią promowana ani sponsorowana. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podręczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta