Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de SAP Crystal Reports vers IronPDF en C#

Migrer de SAP Crystal ReportsàIronPDF: Guide de migration complet en C

La migration de SAP Crystal ReportsversIronPDFtransforme votre flux de travail de reporting d'une plateforme héritée lourde avec des exigences de déploiement complexes vers un package NuGetmoderne et léger. Ce guide fournit un chemin de migration complet, étape par étape, qui élimine l'installation massive du runtime de plus de 500 Mo, supprime le verrouillage de l'écosystème SAP et permet une prise en charge complète de .NET Core/5/6/7/8+.

Pourquoi migrer de SAP Crystal Reportsvers IronPDF

Compréhension de SAP Crystal Reports

SAP Crystal Reports se distingue dans le domaine de l'entreprise en tant qu'outil permettant de générer des rapports dynamiques et "parfaits au pixel près". SAP Crystal Reports, reconnu pour sa capacité à se connecter à une multitude de sources de données, a été la solution de choix pour de nombreuses entreprises à la recherche de fonctionnalités de reporting complètes. La plateforme offre une puissance inégalée avec son Crystal Reports Designer, un outil qui simplifie la construction de mises en page de rapports complexes.

Cependant, avec l'évolution de la technologie, la forte dépendance de SAP Crystal Reportsà l'égard du cadre SAP et ses exigences élevées en matière d'installation et de déploiement ne peuvent pas passer inaperçues. En raison de la lourdeur du système, les entreprises ont souvent besoin de ressources importantes et de temps pour le mettre en œuvre et en assurer la maintenance.

Principales raisons de migrer

  1. Installation massive : Crystal Reports Runtime pèse plus de 500 Mo et nécessite une installation complexe
  2. SAP Ecosystem Lock-in : lié à la tarification, aux cycles d'assistance et à la feuille de route des produits de SAP
  3. Licences complexes : L'octroi de licences par processeur et par utilisateur avec le processus de vente aux entreprises de SAP
  4. Legacy Architecture : dépendances COM 32 bits qui compliquent les déploiements 64 bits modernes
  5. Support déprécié pour .NET Core : Prise en charge limitée des plateformes .NET modernes
  6. Dépendance du concepteur de rapports : Nécessite des extensions Visual Studio ou un concepteur autonome
  7. Faibles performances : Initialisation et encombrement mémoire importants lors de l'exécution

Les coûts cachés de SAP Crystal Reports

Facteur coût SAP Crystal Reports IronPDF
Taille de l'exécution 500MB+ ~20 Mo
Installation MSI/Setup complexe Paquet NuGet
Déploiement Installateurs spéciaux xcopie
prise en charge 64 bits Problématique Natif
.NET Core/5/6/7/8 Limité Prise en charge complète
Déploiement dans le nuage Difficultés Simple
Linux/Docker Non Oui

Comparaison SAP Crystal Reportsvs IronPDF

Fonction SAP Crystal Reports IronPDF
Fonctionnalité principale Plateforme de reporting d'entreprise Moteur de conversion HTML-PDF et manipulation de PDF
Intégration Meilleur au sein de l'écosystème SAP Intégration .NET moderne, package NuGetléger
Facilité d'utilisation Installationet déploiement complexes Intégration simplifiée, prise en charge des développeurs .NET
Report Designer Les exigences sont les suivantes Facultatif (HTML/CSS)
Format du modèle .rpt (binaire) HTML/CSS
HTML à PDF Non Chromium complet
URL vers PDF Non Oui
Support CSS Non CSS3 complet
JavaScript Non ES2024 complet
Manipulation de PDF Non Complet (fusionner, diviser, éditer)
Signatures numériques Non Oui
Conformité PDF/A Non Oui
Pertinence moderne En déclin, remplacé par des alternatives modernes Moderne, bien intégré aux technologies contemporaines

Pour les équipes qui prévoient l'adoption de .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFoffre une prise en charge native multiplateforme que SAP Crystal Reportsne peut pas offrir.


Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès NuGet : Capacité à installer des paquets NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

Modifications du paquet NuGet

# Remove Crystal Reports packages
dotnet remove package CrystalDecisions.CrystalReports.Engine
dotnet remove package CrystalDecisions.Shared
dotnet remove package CrystalDecisions.ReportAppServer
dotnet remove package CrystalDecisions.Web

# Remove legacy assemblies from project references
# Check for: CrystalDecisions.*.dll in project references

# Install IronPDF
dotnet add package IronPdf
# Remove Crystal Reports packages
dotnet remove package CrystalDecisions.CrystalReports.Engine
dotnet remove package CrystalDecisions.Shared
dotnet remove package CrystalDecisions.ReportAppServer
dotnet remove package CrystalDecisions.Web

# Remove legacy assemblies from project references
# Check for: CrystalDecisions.*.dll in project references

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

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

Référence API complète

Modifications de l'espace de nommage

// Before: SAP Crystal Reports
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportAppServer;

// After: IronPDF
using IronPdf;
// Before: SAP Crystal Reports
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using CrystalDecisions.ReportAppServer;

// After: IronPDF
using IronPdf;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mappages de l'API de base

SAP Crystal Reports IronPDF Notes
Document de rapport ChromePdfRenderer Rendu de base
ReportDocument.Load() RenderHtmlAsPdf() Charger le contenu
fichiers .rpt Modèles HTML/CSS Format du modèle
SetDataSource() HTML avec données Liaison de données
SetParameterValue() Interpolation de chaînes de caractères Paramètres
ExportToDisk() pdf.SaveAs() Enregistrer le fichier
ExportToStream() pdf.BinaryData Obtenir des octets
PrintToPrinter() pdf.Print() Impression
Base de données.Tables Accès aux données en C# Source des données
FormulaFieldDefinitions Logique C# Calculs
SummaryInfo pdf.MetaData Métadonnées PDF
ExportFormatType.PortableDocFormat Résultat par défaut PDF natif

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires a .rpt file template
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");

        // Crystal Reports doesn't directly support HTML
        // You need to bind data to the report template
        // reportDocument.SetDataSource(dataSet);

        ExportOptions exportOptions = reportDocument.ExportOptions;
        exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
        exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

        DiskFileDestinationOptions diskOptions = new DiskFileDestinationOptions();
        diskOptions.DiskFileName = "output.pdf";
        exportOptions.DestinationOptions = diskOptions;

        reportDocument.Export();
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires a .rpt file template
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");

        // Crystal Reports doesn't directly support HTML
        // You need to bind data to the report template
        // reportDocument.SetDataSource(dataSet);

        ExportOptions exportOptions = reportDocument.ExportOptions;
        exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
        exportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;

        DiskFileDestinationOptions diskOptions = new DiskFileDestinationOptions();
        diskOptions.DiskFileName = "output.pdf";
        exportOptions.DestinationOptions = diskOptions;

        reportDocument.Export();
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();

        string htmlContent = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from HTML string
        var renderer = new ChromePdfRenderer();

        string htmlContent = "<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple illustre la différence fondamentale de paradigme. SAP Crystal Reportsnécessite un modèle de fichier .rpt préconçu créé dans Crystal Reports Designer, puis vous devez configurer ExportOptions, ExportDestinationType, ExportFormatType et DiskFileDestinationOptions. La bibliothèque ne prend pas directement en charge le contenu HTML : vous devez lier les données au modèle de rapport.

IronPDF accepte directement les chaînes HTML : créez un ChromePdfRenderer, appelez RenderHtmlAsPdf()avec n'importe quel contenu HTML, et SaveAs(). Aucun concepteur n'est requis, aucun modèle binaire n'est nécessaire, aucune configuration d'exportation complexe n'est requise. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Conversion d'une URL en PDF

Avant (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;
using System.Net;

class Program
{
    static void Main()
    {
        // Crystal Reports cannot directly convert URLs to PDF
        // You need to create a report template first

        // Download HTML content
        WebClient client = new WebClient();
        string htmlContent = client.DownloadString("https://example.com");

        // Crystal Reports requires .rpt template and data binding
        // This approach is not straightforward for URL conversion
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("WebReport.rpt");

        // Manual data extraction and binding required
        // reportDocument.SetDataSource(extractedData);

        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;
using System.Net;

class Program
{
    static void Main()
    {
        // Crystal Reports cannot directly convert URLs to PDF
        // You need to create a report template first

        // Download HTML content
        WebClient client = new WebClient();
        string htmlContent = client.DownloadString("https://example.com");

        // Crystal Reports requires .rpt template and data binding
        // This approach is not straightforward for URL conversion
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("WebReport.rpt");

        // Manual data extraction and binding required
        // reportDocument.SetDataSource(extractedData);

        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from a URL
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created from URL successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF from a URL
        var renderer = new ChromePdfRenderer();

        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF created from URL successfully!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

SAP Crystal Reports ne peut pas convertir directement les URL en PDF. Vous devrez télécharger le contenu HTML manuellement avec WebClient, puis extraire et lier ces données à un modèle .rpt prédéfini - un processus qui n'est pas simple et qui nécessite un travail manuel important.

La méthode RenderUrlAsPdf() d'IronPDF capture la page web entièrement rendue avec tous les CSS, JavaScriptet images en un seul appel. Pour en savoir plus, consultez nos tutoriels.

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

Avant (SAP Crystal Reports):

// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires design-time configuration
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");

        // Headers and footers must be designed in the .rpt file
        // using Crystal Reports designer
        // You can set parameter values programmatically
        reportDocument.SetParameterValue("HeaderText", "Company Name");
        reportDocument.SetParameterValue("FooterText", "Page ");

        // Crystal Reports handles page numbers through formula fields
        // configured in the designer

        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
// NuGet: Install-Package CrystalReports.Engine
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
using System;

class Program
{
    static void Main()
    {
        // Crystal Reports requires design-time configuration
        ReportDocument reportDocument = new ReportDocument();
        reportDocument.Load("Report.rpt");

        // Headers and footers must be designed in the .rpt file
        // using Crystal Reports designer
        // You can set parameter values programmatically
        reportDocument.SetParameterValue("HeaderText", "Company Name");
        reportDocument.SetParameterValue("FooterText", "Page ");

        // Crystal Reports handles page numbers through formula fields
        // configured in the designer

        reportDocument.ExportToDisk(ExportFormatType.PortableDocFormat, "output.pdf");
        reportDocument.Close();
        reportDocument.Dispose();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

        // Configure headers and footers
        renderer.RenderingOptions.TextHeader.CenterText = "Company Name";
        renderer.RenderingOptions.TextHeader.FontSize = 12;

        renderer.RenderingOptions.TextFooter.LeftText = "Confidential";
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.TextFooter.FontSize = 10;

        string htmlContent = "<h1>Document Title</h1><p>Document content goes here.</p>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF with headers and footers created!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

        // Configure headers and footers
        renderer.RenderingOptions.TextHeader.CenterText = "Company Name";
        renderer.RenderingOptions.TextHeader.FontSize = 12;

        renderer.RenderingOptions.TextFooter.LeftText = "Confidential";
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.TextFooter.FontSize = 10;

        string htmlContent = "<h1>Document Title</h1><p>Document content goes here.</p>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");

        Console.WriteLine("PDF with headers and footers created!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

SAP Crystal Reports nécessite une configuration des en-têtes et des pieds de page au moment de la conception. Vous devez les concevoir dans le fichier .rpt à l'aide de Crystal Reports Designer, puis transmettre des valeurs de paramètres telles que "HeaderText" et "FooterText" au moment de l'exécution. Les numéros de page doivent être configurés au moyen de champs de formule dans le concepteur.

IronPDF fournit une configuration programmatique des en-têtes/pieds de page avec les propriétés TextHeader et TextFooter. Définir CenterText, LeftText, RightText et FontSize directement dans le code. Les numéros de page utilisent les caractères de remplacement {page} et {total-pages} - aucun concepteur n'est requis.


Problèmes de migration courants

Enjeu 1 : Conversion de fichiers .rpt

SAP Crystal Reports: Fichiers binaires .rpt avec mise en page, données et formules intégrées.

Solution: Impossible de convertir directement - il faut recréer en HTML :

  1. Ouvrir .rpt dans le concepteur Crystal Reports
  2. Mise en page du document, polices, couleurs
  3. Notez tous les champs de formule
  4. Recréer en HTML/CSS
  5. Convertir des formules en code C#

Edition 2 : Connexions aux bases de données

SAP Crystal Reports: Chaînes de connexion intégrées et ODBC.

Solution: Utilisez la couche de données de votre application :

// Instead of Crystal's database integration
var data = await _dbContext.Orders
    .Where(o => o.Date >= startDate && o.Date <= endDate)
    .ToListAsync();

// Bind to HTML template
var html = GenerateReportHtml(data);
// Instead of Crystal's database integration
var data = await _dbContext.Orders
    .Where(o => o.Date >= startDate && o.Date <= endDate)
    .ToListAsync();

// Bind to HTML template
var html = GenerateReportHtml(data);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Enjeu 3 : Dépendances d'exécution

SAP Crystal Reports: Nécessite l'installation de Crystal Reports Runtime (500MB+).

Solution:IronPDFest autonome :

# Just add the NuGetpackage
dotnet add package IronPdf
# That's it - no additional installs needed
# Just add the NuGetpackage
dotnet add package IronPdf
# That's it - no additional installs needed
SHELL

Numéro 4 : Questions relatives aux 32 bits/64 bits

SAP Crystal Reports: Les dépendances COM requièrent souvent le mode 32 bits.

Solution:IronPDFest un logiciel 64 bits natif - aucune configuration particulière n'est nécessaire.


Nouvelles capacités après la migration

Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que SAP Crystal Reportsne peut pas vous offrir :

Fusion de fichiers PDF

var pdf1 = PdfDocument.FromFile("report1.pdf");
var pdf2 = PdfDocument.FromFile("report2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_report.pdf");
var pdf1 = PdfDocument.FromFile("report1.pdf");
var pdf2 = PdfDocument.FromFile("report2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_report.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sécurité des PDF

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(reportHtml);

pdf.MetaData.Title = "Quarterly Sales Report";
pdf.MetaData.Author = "Finance Department";

pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "view123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("secure_report.pdf");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(reportHtml);

pdf.MetaData.Title = "Quarterly Sales Report";
pdf.MetaData.Author = "Finance Department";

pdf.SecuritySettings.OwnerPassword = "admin123";
pdf.SecuritySettings.UserPassword = "view123";
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

pdf.SaveAs("secure_report.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Signatures numériques

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Marques de fond

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Résumé de la comparaison des fonctionnalités

Fonction SAP Crystal Reports IronPDF
Installation
Taille de l'exécution 500MB+ ~20 Mo
Méthode d'installation MSI/Setup.exe NuGet
Déploiement Complexe xcopie
Support de la plateforme
.NET Framework Oui Oui
.NET Core/5/6/7/8 Limité Complet
64-bit Native Problématique Oui
Linux/Docker Non Oui
Azure/AWS Difficultés Simple
Développement
Concepteur de rapports Les exigences sont les suivantes Facultatif (HTML)
Format du modèle .rpt (binaire) HTML/CSS
Courbe d'apprentissage Syntaxe du cristal Normes Web
IntelliSense Non C# complet
Rendu
HTML vers PDF Non Chromium complet
URL vers PDF Non Oui
Support CSS Non CSS3 complet
JavaScript Non ES2024 complet
Fonctionnalités du PDF
Fusionner des PDF Non Oui
Diviser les PDF Non Oui
Filigranes Limité HTML complet
Signatures numériques Non Oui
PDF/A Non Oui

Liste de contrôle de la migration

Pré-migration

  • inventaire de tous les fichiers .rpt [ ] Inventaire de tous les fichiers .rpt [ ]
  • [La traduction doit rester professionnelle, en préservant la précision technique tout en expliquant les caractéristiques et les avantages de ces outils de développement
  • [ ] Documenter les champs de formule et les calculs
  • [Liste de toutes les sources de données et de tous les paramètres
  • [Identifier les besoins en matière d'impression
  • [ ] Obtenir la clé de licenceIronPDFà partir de ironpdf.com

Mises à jour du code

  • [Supprimer les packages Crystal Reports (CrystalDecisions.CrystalReports.Engine, etc.)
  • [Supprimer l'installation de l'exécution du déploiement
  • [Installer le paquet IronPdf NuGet
  • [Convertir les mises en page .rpt en modèles HTML/CSS
  • [ ] Convertir des formules Crystal en code C#
  • [Mise à jour de la liaison de données à partir de SetDataSource()vers l'interpolation de chaînes HTML
  • [La traduction doit rester professionnelle, en préservant l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils pour les développeurs
  • [Ajouter l'initialisation de la licence au démarrage de l'application

Infrastructure

  • [Supprimer Crystal Runtime des serveurs
  • [Mise à jour des scripts de déploiement
  • [Supprimer le mode de compatibilité 32 bits
  • [Mise à jour des images Docker (le cas échéant)

Testing

  • [Comparer la sortie PDF aux rapports originaux
  • [Vérifier tous les calculs
  • [Tester tous les paramètres
  • [Tester la fonctionnalité de l'impression
  • [Test de performance
  • [Test 64 bits

Conclusion

Si SAP Crystal Reportsreste une plateforme robuste pour les rapports d'entreprise traditionnels, son manque de flexibilité moderne la rend souvent moins attrayante pour les organisations dynamiques et tournées vers l'avenir. Le temps d'exécution de plus de 500 Mo de la plateforme, son déploiement complexe et la prise en charge limitée de .NET Core créent des charges de maintenance importantes.

Les principaux changements apportés à cette migration sont les suivants :

  1. Architecture : Plate-forme d'entreprise lourde → Paquet NuGetléger
  2. Taille : 500MB+runtime → ~20MB
  3. Modèles : Fichiers binaires .rpt → HTML/CSS
  4. Designer : Crystal Reports Designer obligatoire → Facultatif (utilisez n'importe quel éditeur HTML)
  5. Liaison de données : SetDataSource()→ Interpolation de chaînes de caractères C#
  6. Paramètres : SetParameterValue()→ Variables C# standard
  7. Export : Complexe ExportOptions → Simple pdf.SaveAs()
  8. Headers/Footers : Configuration lors de la conception → Exécution TextHeader/TextFooter
  9. Numéros de page : Champs de formule → {page} et {total-pages} placeholders
  10. Plateforme : Limité .NET Core → Prise en charge multiplateforme complète
  11. Nouvelles fonctionnalités : Fusion et division de PDF, sécurité, signatures numériques, PDF/A

Le choix entre SAP Crystal ReportsetIronPDFdépend en grande partie de la configuration de l'organisation et de ses aspirations futures. Pour les entités fortement intégrées à l'écosystème SAP qui recherchent des fonctionnalités de reporting complètes, SAP Crystal Reportsest inégalé. En attendant, les organisations qui se lancent dans des initiatives axées sur le web avec .NET, à la recherche d'un moteur de conversion PDF rationalisé, trouverontIronPDFincroyablement avantageux.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration vers SAP Crystal Reports.

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