Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de FastReport vers IronPDF en C#

Migrer de FastReportàIronPDF: Guide de migration complet en C

FastReport.NET est une solution de reporting puissante conçue pour l'écosystème .NET, dotée d'un concepteur de rapport visuel et d'une architecture basée sur les bandes pour la création de rapports complexes axés sur les données. Cependant, FastReportprésente des défis importants pour les flux de travail modernes de génération de PDF : une dépendance au concepteur de rapport qui limite le développement en code first, une courbe d'apprentissage abrupte autour des concepts basés sur les bandes (DataBand, PageHeaderBand), un support CSS limité utilisant un formatage propriétaire, une liaison de données complexe avec RegisterData() boilerplate, et des packages NuGet fragmentés nécessitant des installations multiples. Ce guide complet propose un chemin de migration pas à pas de FastReportvers IronPDF, une bibliothèque PDF généraliste qui s'appuie sur les technologies web HTML/CSS pour générer des documents de manière flexible et programmatique.

Pourquoi migrer de FastReportà IronPDF?

La spécialisation de FastReport.NET dans le domaine du reporting crée des frictions pour les équipes de développement qui ont besoin d'une génération PDF polyvalente. Il est essentiel de comprendre ces différences architecturales pour planifier votre migration.

Les défis de FastReport

  1. Dépendance du concepteur de rapports : La création de mises en page complexes nécessite un concepteur visuel ou une connaissance approfondie de la structure des fichiers .frx, ce qui ne convient pas aux approches de développement fondées sur le code d'abord.

  2. Courbe d'apprentissage progressive : L'architecture de FastReportbasée sur des bandes (DataBand, PageHeaderBand, PageFooterBand) nécessite la compréhension de concepts spécifiques aux rapports qui ne sont pas transposables à d'autres technologies.

  3. Support CSS limité : Le style standard du web n'est pas pris en charge en mode natif ; le stylisme est réalisé à l'aide du format propriétaire de FastReportplutôt qu'à l'aide des feuilles de style CSS habituelles.

  4. Liaison de données complexe : RegisterData() et les connexions DataSource ajoutent un modèle pour les scénarios simples de génération de PDF.

  5. Paquets fragmentés : Plusieurs packages NuGet nécessaires pour une fonctionnalité complète (FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple, etc.)

  6. Complicité des licences : La version open source a des fonctionnalités limitées ; la version commerciale est nécessaire pour le cryptage des PDF, la signature numérique et l'intégration des polices.

Comparaison des architectures

Aspect FastReport IronPDF
Approche de conception Concepteur visuel + fichiers .frx HTML/CSS (technologies web)
Courbe d'apprentissage Steep (concepts basés sur des groupes) Douceur (connaissances en HTML/CSS)
Liaison de données RegisterData(), DataBand Interpolation de chaînes, Razor, templating
Support CSS Limité CSS3 complet avec Flexbox/Grid
Modèle de paquet Plusieurs paquets Paquet unique (toutes les fonctionnalités)
Moteur de rendu Sur mesure Dernière version de Chromium
Manipulation de PDF Axé sur l'exportation Complet (fusion, division, sécurité, formulaires)
Moderne .NET .NET Standard 2.0 .NET 6/7/8/9+ natif

Avantages principaux de la migration

  1. Technologies du web : Utiliser les langages HTML/CSS familiers au lieu des mises en page propriétaires basées sur les bandes
  2. Code-First Development : Générer des PDF de manière programmatique sans dépendre du concepteur visuel
  3. Paquet unique : Un seul package NuGet comprend toutes les fonctionnalités de PDF
  4. Rendu moderne : Dernier moteur Chromium pour un rendu CSS3 au pixel près
  5. Manipulation complète des PDF : Fusion, division, sécurité, formulaires - pas seulement l'exportation

Préparation de la migration

Prérequis

Assurez-vous que votre environnement répond à ces exigences :

  • .NET Framework 4.6.2+ ou .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ ou VS Code avec l'extension C#
  • Accès au gestionnaire de paquets NuGet
  • Clé de licenceIronPDF(essai gratuit disponible sur ironpdf.com)

Audit de l'utilisation de FastReport

Exécutez ces commandes dans votre répertoire de solutions pour identifier toutes les références à FastReport:

# Find all FastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
# Find all FastReportreferences
grep -r "FastReport\|\.frx\|PDFExport\|PDFSimpleExport\|DataBand\|RegisterData" --include="*.cs" --include="*.csproj" .

# Check NuGet packages
dotnet list package | grep FastReport
SHELL

Documentez vos modèles de rapport

Avant la migration, répertoriez tous les fichiers .frx et leur utilité :

  • Nom et objectif du rapport
  • Sources de données utilisées
  • Configuration des en-têtes/pieds de page
  • Exigences en matière de numérotation des pages
  • Formatage ou style particulier

Comprendre le changement de paradigme

Le changement le plus important lors de la migration de FastReportversIronPDFest l'approche fondamentale de la conception. FastReportutilise une conception visuelle basée sur des bandes avec des fichiers modèles .frx et des concepts propriétaires tels que DataBand, PageHeaderBand et RegisterData().IronPDFutilise les technologies HTML/CSS-web que la plupart des développeurs connaissent déjà.

Cela signifie qu'il faut convertir les configurations des bandes FastReporten modèles HTML, remplacer RegisterData() par une liaison directe des données via une interpolation de chaîne ou des modèles Razor, et transformer PageHeaderBand/PageFooterBand en en-têtes et pieds de page basés sur HTML.

Processus de migration étape par étape

Étape 1 : Mise à jour des paquets NuGet

Supprimez tous les paquets FastReportet installezIronPDF:

# Remove all FastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# InstallIronPDF(includes all features)
dotnet add package IronPdf
# Remove all FastReportpackages
dotnet remove package FastReport.OpenSource
dotnet remove package FastReport.OpenSource.Export.PdfSimple
dotnet remove package FastReport.OpenSource.Web
dotnet remove package FastReport.OpenSource.Data.MsSql

# InstallIronPDF(includes all features)
dotnet add package IronPdf
SHELL

Étape 2 : Mise à jour des références aux espaces de noms

Remplacer les espaces de noms FastReportparIronPDF:

// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
// Remove these
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

// Add this
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Étape 3 : configuration de la licence

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Référence complète de migration des API

Mappage des classes de base

Classe FastReport Équivalent d'IronPDF Notes
Rapport ChromePdfRenderer Classe de rendu principale
PDFExport ChromePdfRenderer+ SecuritySettings Rendu + sécurité
PDFSimpleExport ChromePdfRenderer Exportation simplifiée
RapportPage HTML <body> ou <div> Contenu de la page
TextObject HTML <p>, <span>, <div> Éléments de texte
HTMLObject Rendu HTML direct Contenu HTML
PageHeaderBand HtmlHeaderFooter En-têtes de page
PageFooterBand HtmlHeaderFooter Pieds de page

Mise en correspondance des méthodes

Méthode FastReport Équivalent d'IronPDF Notes
report.Load("template.frx") Fichier ou chaîne de caractères HTML Utiliser HTML/CSS pour la mise en page
report.RegisterData(data, "name") Interpolation de chaînes ou Razor Liaison directe des données
report.Prepare() N/A Pas nécessaire (rendu direct)
report.Export(export, stream) pdf.SaveAs(path) Exportation simplifiée

Conversion de l'espace réservé au numéro de page

FastReport etIronPDFutilisent une syntaxe différente pour les numéros de page :

FastReport IronPDF
[Page] {page}
[TotalPages] {total-pages}

Exemples de migration de code

Conversion HTML en PDF

Cet exemple démontre la différence fondamentale entre l'approche HTMLObject de FastReportet le rendu direct d'IronPDF.

Mise en œuvre de FastReport:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            // Create HTML object
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 500;
            htmlObject.Height = 300;
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";

            // Prepare report
            report.Prepare();

            // Export to PDF
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            // Create HTML object
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 500;
            htmlObject.Height = 300;
            htmlObject.Text = "<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>";

            // Prepare report
            report.Prepare();

            // Export to PDF
            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Hello World</h1><p>This is a test PDF</p></body></html>");
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

FastReport nécessite la création d'un objet Report, un objet HTMLObject avec des dimensions fixes, la préparation du rapport et l'exportation via un flux - sept lignes de code avec des instructions d'utilisation.IronPDFpermet d'obtenir le même résultat en trois lignes avec un rendu HTML direct. Pour plus d'options, consultez la documentation HTML vers PDF.

Conversion d'URL en PDF

Cet exemple met en évidence le fait que FastReportnécessite un téléchargement HTML manuel alors qu'IronPDF gère le rendu des URL de manière native.

Mise en œuvre de FastReport:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // Download Contenu HTMLfrom URL
        string htmlContent;
        using (WebClient client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        using (Report report = new Report())
        {
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 800;
            htmlObject.Height = 600;
            htmlObject.Text = htmlContent;

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // Download Contenu HTMLfrom URL
        string htmlContent;
        using (WebClient client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        using (Report report = new Report())
        {
            FastReport.HTMLObject htmlObject = new FastReport.HTMLObject();
            htmlObject.Width = 800;
            htmlObject.Height = 600;
            htmlObject.Text = htmlContent;

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("webpage.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

FastReport nécessite de télécharger manuellement le contenu HTML avec WebClient, puis de l'intégrer dans un objet HTMLObject aux dimensions fixes - une solution de contournement qui ne gère pas correctement l'exécution JavaScript ou les URL de ressources relatives. Le RenderUrlAsPdf d'IronPDF rend directement la page web en direct avec une exécution JavaScript complète à l'aide du moteur Chromium. Pour plus d'options, voir la documentation URL to PDF.

En-têtes et pieds de page avec numéros de page

Cet exemple montre la différence de complexité entre le système de FastReportbasé sur les bandes et l'approche d'IronPDF basée sur le HTML.

Mise en œuvre de FastReport:

// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Set report page properties
            FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;

            // Add page header
            FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
            header.Height = 50;
            FastReport.TextObject headerText = new FastReport.TextObject();
            headerText.Text = "Document Header";
            header.Objects.Add(headerText);
            page.Bands.Add(header);

            // Add page footer
            FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
            footer.Height = 50;
            FastReport.TextObject footerText = new FastReport.TextObject();
            footerText.Text = "Page [Page]";
            footer.Objects.Add(footerText);
            page.Bands.Add(footer);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
// NuGet: Install-Package FastReport.OpenSource
using FastReport;
using FastReport.Export.PdfSimple;
using System.IO;

class Program
{
    static void Main()
    {
        using (Report report = new Report())
        {
            report.Load("template.frx");

            // Set report page properties
            FastReport.ReportPage page = report.Pages[0] as FastReport.ReportPage;

            // Add page header
            FastReport.PageHeaderBand header = new FastReport.PageHeaderBand();
            header.Height = 50;
            FastReport.TextObject headerText = new FastReport.TextObject();
            headerText.Text = "Document Header";
            header.Objects.Add(headerText);
            page.Bands.Add(header);

            // Add page footer
            FastReport.PageFooterBand footer = new FastReport.PageFooterBand();
            footer.Height = 50;
            FastReport.TextObject footerText = new FastReport.TextObject();
            footerText.Text = "Page [Page]";
            footer.Objects.Add(footerText);
            page.Bands.Add(footer);

            report.Prepare();

            PDFSimpleExport pdfExport = new PDFSimpleExport();
            using (FileStream fs = new FileStream("report.pdf", FileMode.Create))
            {
                report.Export(pdfExport, fs);
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mise en œuvre d'IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

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

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

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

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

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

        var pdf = renderer.RenderHtmlAsPdf("<html><body><h1>Report Content</h1><p>This is the main content.</p></body></html>");
        pdf.SaveAs("report.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

FastReport nécessite le chargement d'un fichier modèle, la création d'objets de page, la création d'objets de bande, la définition de hauteurs, la création d'objets texte, l'ajout à des collections de bandes et l'ajout de bandes à des pages.IronPDFutilise HtmlHeaderFooteravec des fragments HTML simples - vous pouvez styliser les en-têtes et les pieds de page avec un CSS complet. Notez le changement de syntaxe du numéro de page : [Page]devient {page}, et [TotalPages]devient {total-pages}. Pour plus d'options, consultez la documentation sur les en-têtes et les pieds de page.

Notesde migration essentielles

Pas de fichiers modèles .frx

Les modèles FastReport(.frx) ne fonctionneront pas avec IronPDF. Convertissez vos mises en page en modèles HTML/CSS :

// FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
// FastReport- loads .frx template
report.Load("report.frx");

//IronPDF- use HTML template
var html = File.ReadAllText("template.html");
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Conversion de la liaison de données

Remplacer RegisterData() par une génération HTML directe :

// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
// FastReport
report.RegisterData(dataSet, "Data");
report.GetDataSource("Data").Enabled = true;

//IronPDF- use string interpolation or StringBuilder
var html = new StringBuilder();
foreach (var item in data)
{
    html.Append($"<tr><td>{item.Name}</td><td>{item.Value}</td></tr>");
}
var pdf = renderer.RenderHtmlAsPdf(html.ToString());
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Paramètres de sécurité

//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
//IronPDFsecurity
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "password";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Pour des options de sécurité complètes, voir la documentation sur le chiffrement.

Liste de contrôle post-migration

Après avoir effectué la migration du code, vérifiez les points suivants :

  • [Comparaison visuelle des PDF générés
  • [Vérifier les en-têtes/pieds de page et les numéros de page
  • [Test avec des volumes de données de production
  • [Valider les fonctions de sécurité/encryptage
  • [ ] Analyse comparative des performances
  • [Supprimer les fichiers modèles .frx inutilisés
  • [Supprimer le code lié à FastReport
  • [Mise à jour de la documentation

Protéger l'avenir de votre infrastructure PDF

Avec .NET 10 à l'horizon et C# 14 qui introduit de nouvelles fonctionnalités de langage, le choix d'une bibliothèque PDF qui adopte les technologies web modernes garantit la maintenabilité à long terme. L'approche HTML/CSS d'IronPDF signifie que vos modèles tirent parti des mêmes compétences utilisées dans l'ensemble du développement web - pas de concepts propriétaires basés sur des bandes qui ne se transfèrent pas à d'autres technologies. Comme les projets se prolongent jusqu'en 2025 et 2026, la possibilité d'utiliser des modèles HTML standard avec des fonctionnalités CSS3 comme Flexbox et Grid offre une flexibilité de conception que le formatage propriétaire de FastReportne peut pas égaler.

Ressources supplémentaires


La migration de FastReportversIronPDFélimine la dépendance au concepteur visuel, la courbe d'apprentissage par bande et le modèle de package fragmenté. La transition vers la génération de PDF basée sur HTML/CSS exploite des technologies web familières tout en offrant des fonctionnalités complètes de manipulation de PDF - fusion, division, sécurité et formulaires - dans un seul et même package.

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 ...

Lire la suite