IRONSOFTWAREHOME
VIDÉOS

Comment générer des fichiers PDF dans la bibliothèque VB.NET | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

La migration de SQL Server Reporting Services (SSRS) vers IronPDF transforme votre flux de production de PDF d'une infrastructure lourde basée sur un serveur à une bibliothèque légère, en cours de processus, qui peut être intégrée directement dans n'importe quelle application .NET. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine les dépendances de SQL Server, la surcharge du serveur de rapports et l'enfermement dans l'écosystème Microsoft.

Pourquoi migrer de SSRS vers IronPDF

Comprendre SSRS

SQL Server Reporting Services (SSRS) est la plateforme de reporting d'entreprise de Microsoft — un ensemble complet pour créer, déployer et gérer des rapports, étroitement intégré à l'écosystème SQL Server. Microsoft a confirmé que SSRS 2022 est la dernière version autonome : à partir de SQL Server 2025, le reporting sur site est consolidé dans Power BI Report Server (PBIRS), et aucune nouvelle version de SSRS ne sera livrée. SSRS 2022 reçoit des mises à jour de sécurité jusqu'au 11 janvier 2033, conformément au cycle de vie de SQL Server 2022 (voir la FAQ sur la consolidation des services de reporting).

Dans de nombreux scénarios de génération de PDF, l'infrastructure SSRS est excessive. Les principales raisons de migrer incluent :

  1. Fin de la ligne SSRS: SQL Server 2025 est livré sans SSRS ; PBIRS le remplace. Le nouveau travail ciblant SSRS est une impasse.
  2. Infrastructures lourdes : Nécessite SQL Server, Report Server et (pour le plus ancien visualiseur Web Forms) configuration IIS
  3. Verrouillage de l'écosystème Microsoft : Lié à la licence SQL Server et Windows Server
  4. Déploiement complexe : Déploiement de rapports, configuration de la sécurité, gestion des abonnements
  5. Licences coûteuses : Licences SQL Server, en particulier pour les fonctionnalités d'entreprise
  6. Pas de support de premier ordre pour .NET Core : Les packages de Microsoft Microsoft.ReportingServices.ReportViewerControl.WebForms / .Winforms ciblent uniquement .NET Framework 4.0–4.8.1. Les utilisateurs de .NET Core / .NET 5+ dépendent du port communautaire ReportViewerCore.NETCore.
  7. Surcharge de maintenance : Patching serveur, maintenance de la base de données, gestion des rapports
  8. Aucune option native Cloud : Conçu pour les locaux, le support cloud est maladroit

Quand SSRS est excessif

Votre besoinFrais généraux SSRS
Générer des facturesServeur de rapport complet
Exporter des tableaux de donnéesLicence SQL Server
Créer des PDF à partir de donnéesServeur Windows
Génération de documents simplesAbonnements aux rapports

IronPDF permet de générer des PDF en cours de processus, sans aucune infrastructure de serveur.

Comparaison entre SSRS et IronPDF

FonctionSSRSIronPDF
DépendanceRequiert SQL ServerPas de dépendance spécifique à l'égard d'une base de données
DéploiementBasé sur le serveurBibliothèque (intégrée dans les applications)
IntégrationIntégration étroite avec MicrosoftFonctionne avec n'importe quelle source de données
Visualisation des donnéesOptions natives étenduesVisualisations axées sur les PDF
ComplexitéHaut (configuration du serveur requise)Modéré à faible (configuration de la bibliothèque)
CoûtCoût des licences SQL ServerCoût de la licence par développeur
HTML à PDFNonChromium complet
URL vers PDFNonOui
Support CSSLimitéCSS3 complet
JavaScriptNonES2024 complet

IronPDF, contrairement à SSRS, n'est pas lié à une base de données ou à un écosystème de serveur spécifique. Il fournit aux développeurs une bibliothèque flexible pour créer, éditer et manipuler dynamiquement des documents PDF directement en C#. Ce découplage par rapport à une infrastructure basée sur un serveur offre un avantage notable : il est simple et adaptable, et convient à un large éventail d'applications au-delà de la production de rapports.

Pour les équipes adoptant le .NET moderne, IronPDF fournit un moteur de rendu Chromium qui élimine la complexité de l'infrastructure SSRS.


Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur IronPDF

Modifications du paquet 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

Configuration de la licence

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

Référence API complète

Modifications de l'espace de nommage

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

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

Mappages de l'API de base

Concept SSRSÉquivalent d'IronPDFNotes
LocalReportChromePdfRendererRendu de base
ServerReportRenderUrlAsPdf()Rendu basé sur l'URL
.rdlc fichiersModèles HTML/CSSFormat du modèle
ReportParameterInterpolation de chaînes de caractèresParamètres
ReportDataSourceDonnées C# + HTMLLiaison de données
LocalReport.Render("PDF")RenderHtmlAsPdf()Sortie PDF
SubReportPDF fusionnésRapports imbriqués
Report Server URLPas nécessaireAucun serveur n'est nécessaire
ReportViewer contrôlePas nécessaireGénération directe de PDF
Formats d'exportationLe PDF est natifUn résultat ciblé

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

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

Après (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");
    }
}

Cet exemple illustre la différence architecturale fondamentale. SSRS nécessite la création d'une instance ReportViewer, le chargement d'un fichier de définition de rapport .rdlc, la définition de paramètres, puis l'appel de LocalReport.Render("PDF") avec plusieurs paramètres out pour les métadonnées.

IronPDF utilise un ChromePdfRenderer avec RenderHtmlAsPdf() en seulement trois lignes de code. Aucun fichier de définition de rapport, aucun objet de paramètre, aucune manipulation de métadonnées n'est requise. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : URL vers PDF avec en-têtes et pieds de page

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

Après (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 ne peut pas convertir directement les URL en PDF. Vous devez télécharger manuellement le contenu HTML avec WebClient.DownloadString(), créer un fichier de rapport .rdlc séparé, passer le texte HTML et en-tête/pied de page sous forme de tableaux ReportParameter, puis rendre avec la signature de méthode complexe Render().

Le RenderUrlAsPdf() de IronPDF gère tout le processus en un seul appel. Les en-têtes et pieds de page sont configurés avec des objets HtmlHeaderFooter qui supportent le HTML/CSS complet et des espaces réservés tels que {page} et {total-pages}. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Rapport basé sur une base de données

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

Après (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 nécessite un fichier de rapport préconçu .rdlc ("SalesReport.rdlc"), le remplissage d'un DataSet, la création d'un ReportDataSource avec un nom spécifique ("SalesDataSet") qui doit correspondre à la définition du rapport, la suppression des sources de données existantes, l'ajout de la nouvelle source de données, puis le rendu.

IronPDF utilise votre code d'accès aux données existant (même modèle SqlDataAdapter), puis construit dynamiquement le HTML avec StringBuilder. Vous avez un contrôle total sur la mise en page à l'aide de HTML/CSS standard - aucun fichier de définition de rapport propriétaire n'est requis.


Comparaison des fonctionnalités

FonctionSSRSIronPDF
: Infrastructure :
Licence SQL ServerLes exigences sont les suivantesPas nécessaire
Serveur WindowsLes exigences sont les suivantesToutes les plates-formes
Base de données requiseOui (ReportServer DB)Non
: Développement :
Format du modèleRDLC/RDLHTML/CSS/Razor
Sources de donnéesDSN intégréToutes les données C#
: Rendu :
URL vers PDFNonOui
Support CSSLimitéCSS3 complet
JavaScriptNonES2024 complet
GraphiquesIntégréVia les bibliothèques JS
: Déploiement :
ConfigurationComplexeSimple
EntretienHautFaible

Problèmes de migration courants

Édition 1 : Définitions des rapports RDLC

SSRS: Utilise le format XML propriétaire .rdlc.

Solution: Convertir en modèles HTML :

  1. Ouvrir .rdlc dans Visual Studio
  2. Documenter la structure de la mise en page
  3. Recréer en HTML/CSS
  4. Utiliser Razor pour la liaison de données

Edition 2 : Sources de données partagées

**SSRS:**Chaînes de connexion dans Report Server.

Solution: Utilisez la couche d'accès aux données de votre application :

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

Sujet 3 : Interface utilisateur des paramètres de rapport

**SSRS:**Intégration d'invites de paramètres.

Solution: Construisez une interface utilisateur paramétrée dans votre application :

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

Numéro 4 : Abonnements/Rapports programmés

SSRS: Moteur d'abonnement intégré.

Solution: Utiliser un cadre de travail en arrière-plan :

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

Liste de contrôle de la migration

Pré-migration

  • Inventoriez tous les rapports SSRS (fichiers .rdlc)
  • Sources et connexions des données du document
  • Captures d'écran des mises en page des rapports à titre de référence visuelle
  • Lister les paramètres de chaque rapport
  • Notez les horaires d'abonnement
  • Obtenez votre clé de licence IronPDF sur IronPDF

Mises à jour du code

  • Supprimer les packages ReportViewer
  • Installez le package NuGet IronPdf
  • Convertissez les fichiers .rdlc en modèles HTML
  • Remplacez LocalReport par ChromePdfRenderer
  • Remplacez ReportDataSource par des données C# + modèles HTML
  • Remplacez ReportParameter par une interpolation de chaînes
  • Remplacez LocalReport.Render("PDF") par RenderHtmlAsPdf()
  • Implémentez les en-têtes/pieds de page avec HtmlHeaderFooter
  • Ajouter l'initialisation de la licence au démarrage de l'application

Infrastructure

  • Mise hors service du serveur de rapports de planification
  • Migrer les abonnements vers le planificateur de tâches (Hangfire, etc.)
  • Mettre à jour les scripts de déploiement

Essai

  • Comparer visuellement le résultat PDF
  • Vérifier l'exactitude des données
  • Test de pagination
  • Vérifier tous les paramètres
  • Tests de performance

Veuillez noter: SSRS est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à Microsoft, ni approuvé par elle, ni sponsorisé par elle. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise