Saltar al pie de página
GUíAS DE MIGRACIóN

Cómo migrar de SAP Crystal Reports a IronPDF en C#

Migrar de SAP Crystal Reportsa IronPDF: Guía completa de migración a C

La migración de Crystal Reports aIronPDFtransforma su flujo de trabajo de generación de informes de una plataforma heredada pesada con requisitos de implementación complejos a un paquete NuGetmoderno y ligero. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina la instalación masiva de más de 500 MB de tiempo de ejecución, elimina el bloqueo del ecosistema SAP y permite la compatibilidad total con .NET Core/5/6/7/8+.

Por qué migrar de SAP Crystal Reportsa IronPDF

Entender SAP Crystal Reports

SAP Crystal Reports destaca en el ámbito empresarial como herramienta para generar informes dinámicos y "pixel-perfect". SAP Crystal Reports, reconocido por su capacidad para conectarse a multitud de fuentes de datos, ha sido la solución a la que han recurrido muchas empresas que buscaban una funcionalidad de generación de informes completa. La plataforma ofrece una potencia inigualable con su Crystal Reports Designer, una herramienta que simplifica la construcción de diseños de informes complejos.

Sin embargo, a medida que la tecnología ha ido evolucionando, la gran dependencia de Crystal Reports del marco SAP y sus exigentes requisitos de instalación y despliegue no pueden pasar desapercibidos. La naturaleza de peso pesado significa que las empresas a menudo requieren recursos y tiempo significativos para implementar y mantener completamente el sistema.

Razones clave para migrar

  1. Instalación masiva: Crystal Reports Runtime ocupa más de 500 MB y requiere una instalación compleja
  2. SAP Ecosystem Lock-in: vinculado a los precios, los ciclos de soporte y la hoja de ruta de productos de SAP
  3. Licencias complejas: Licencias por procesador/por usuario con el proceso de ventas a empresas de SAP
  4. Legacy Architecture: dependencias COM de 32 bits que complican las implantaciones modernas de 64 bits
  5. Soporte obsoleto para .NET Core: Compatibilidad limitada con las plataformas .NET modernas
  6. Dependencia del diseñador de informes: Requiere extensiones de Visual Studio o diseñador independiente
  7. Rendimiento lento: Inicialización en tiempo de ejecución pesada y huella de memoria

Los costes ocultos de SAP Crystal Reports

CosteSAP Crystal ReportsIronPDF
Tamaño del tiempo de ejecuciónmÁS DE 500 MB~20 MB
InstalaciónMSI/Instalación complejosPaquete NuGet
DespliegueInstaladores especialesxcopy
compatibilidad con 64 bitsProblemáticaNativo
.NET Core/5/6/7/8LimitadoSoporte completo
Despliegue en la nubeDifícilSimple
Linux/DockerNo

Comparación entre SAP Crystal Reportse IronPDF

CaracterísticaSAP Crystal ReportsIronPDF
Funcionalidad principalPlataforma de informes empresarialesMotor de conversión de HTML a PDF y manipulación de PDF
IntegraciónMejor dentro del ecosistema SAPIntegración moderna con .NET, paquete NuGetligero
Facilidad de usoConfiguración y despliegue complejosIntegración simplificada, compatible con desarrolladores .NET
Diseñador de informesRequeridoOpcional (HTML/CSS)
Formato de la plantilla.rpt (binario)HTML/CSS
HTML a PDFNoChromium completo
URL a PDFNo
Soporte CSSNoCSS3 completo
JavaScriptNoES2024 completo
Manipulación de PDFNoCompleto (combinar, dividir, editar)
Firmas digitalesNo
Cumplimiento de PDF/ANo
Relevancia modernaEn declive, sustituido por alternativas modernasModerno, bien integrado con las tecnologías contemporáneas

Para los equipos que planifican la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDFproporciona una compatibilidad nativa entre plataformas que SAP Crystal Reportsno puede ofrecer.


Antes de empezar

Prerrequisitos

  1. <Entorno .NET: .NET Framework4.6.2+ o .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acceso a NuGet: Capacidad para instalar paquetes NuGet
  3. Licencia IronPDF: Obtenga su clave de licencia en ironpdf.com

Cambios en el paquete 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

Configuración de licencias

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

Referencia completa de la API

Cambios en el espacio de nombres

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

Core API Mappings

SAP Crystal ReportsIronPDFNotas
DocumentoInforme<código>ChromePdfRenderer</códigoTraducción básica
ReportDocument.Load()<código>RenderHtmlAsPdf()</códigoCargar contenido
archivos .rptPlantillas HTML/CSSFormato de la plantilla
<código>SetDataSource()</códigoHTML con datosVinculación de datos
<código>SetParameterValue()</códigoInterpolación de cadenasParámetros
<código>ExportToDisk()</código><código>pdf.SaveAs()</códigoGuardar archivo
<código>ExportToStream()</código><código>pdf.BinaryData</códigoObtener bytes
<código>PrintToPrinter()</códigopdf.Print()Imprimir
<código>BasedeDatos.Tables</códigoAcceso a datos en C#Fuente de datos
<código>FormulaFieldDefinitions</códigoLógica de C#Cálculos
SummaryInfo<código>pdf.MetaData</códigoMetadatos PDF
<código>ExportFormatType.PortableDocFormat</códigoResultados por defectoPDF nativo

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (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

Despué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

Este ejemplo demuestra la diferencia fundamental de paradigma. SAP Crystal Reportsrequiere una plantilla de archivo .rpt prediseñada creada en Crystal Reports Designer y, a continuación, debe configurar ExportOptions, ExportDestinationType, ExportFormatType y DiskFileDestinationOptions. La biblioteca no admite directamente contenido HTML, por lo que es necesario vincular los datos a la plantilla de informe.

IronPDF acepta cadenas HTML directamente: crea un ChromePdfRenderer, llama a <código>RenderHtmlAsPdf()</códigocon cualquier contenido HTML, y SaveAs(). No se requiere diseñador, ni plantillas binarias, ni una compleja configuración de exportación. Consulte la documentación HTML a PDF para ver ejemplos completos.

Ejemplo 2: Conversión de URL a PDF

Antes (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

Despué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

Crystal Reports no puede convertir directamente URL a PDF. Tendrías que descargar el contenido HTML manualmente con WebClient y, a continuación, extraer y vincular de algún modo esos datos a una plantilla .rpt prediseñada, un proceso que no es sencillo y requiere un importante trabajo manual.

El método RenderUrlAsPdf() deIronPDFcaptura la página web completamente renderizada con todas las CSS, JavaScripte imágenes en una sola llamada. Más información en nuestros tutoriales.

Ejemplo 3: Encabezados y pies de página con números de página

Antes (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

Despué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 requiere la configuración en tiempo de diseño de encabezados y pies de página. Debe diseñarlos en el archivo .rpt mediante Crystal Reports Designer y, a continuación, pasar valores de parámetros como "HeaderText" y "FooterText" en tiempo de ejecución. Los números de página deben configurarse mediante campos de fórmula en el diseñador.

IronPDF proporciona una configuración programática del encabezado/pie de página con las propiedades TextHeader y TextFooter. Establezca CenterText, LeftText, RightText y FontSize directamente en el código. Los números de página utilizan los marcadores de posición {page} y {total-pages}, sin necesidad de diseñador.


Problemas comunes de migración

Edición 1: Conversión de archivos .rpt

SAP Crystal Reports: Archivos binarios .rpt con diseño, datos y fórmulas incrustados.

Solución: No se puede convertir directamente, se debe recrear como HTML:

  1. Abrir .rpt en el diseñador de Crystal Reports
  2. Diseño del documento, fuentes, colores
  3. Tenga en cuenta todos los campos de fórmula
  4. Recrear en HTML/CSS
  5. Convertir fórmulas en código C#

Número 2: Conexiones de bases de datos

SAP Crystal Reports: Cadenas de conexión incrustadas y ODBC.

Solución: Utiliza la capa de datos de tu aplicación:

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

Tema 3: Dependencias en tiempo de ejecución

SAP Crystal Reports: Requiere la instalación de Crystal Reports Runtime (500MB+).

Solución:IronPDFes autónomo:

# 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

Número 4: Cuestiones de 32 bits/64 bits

SAP Crystal Reports: Las dependencias COM suelen requerir el modo de 32 bits.

Solución:IronPDFes nativo de 64 bits, por lo que no requiere ninguna configuración especial.


Nuevas capacidades tras la migración

Tras migrar a IronPDF, obtendrá funciones que SAP Crystal Reportsno puede ofrecerle:

Fusión de 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

Seguridad en 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

Firmas digitales

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

Marcas de agua

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

Resumen comparativo de características

CaracterísticaSAP Crystal ReportsIronPDF
Instalación
Tamaño del tiempo de ejecuciónmÁS DE 500 MB~20 MB
Método de instalaciónMSI/Setup.exeNuGet
DespliegueComplejoxcopy
Soporte de Plataforma
.NET Framework
.NET Core/5/6/7/8LimitadoCompleto
nativo de 64 bitsProblemática
Linux/DockerNo
Azure/AWSDifícilSimple
Desarrollo
Diseñador de informesRequeridoOpcional (HTML)
Formato de plantilla.rpt (binario)HTML/CSS
Curva de aprendizajeSintaxis de CrystalEstándares web
IntelliSenseNoC# completo
Traducción
HTML a PDFNoChromium completo
URL a PDFNo
Soporte CSSNoCSS3 completo
JavaScriptNoES2024 completo
Características del PDF
Fusionar PDFNo
Dividir PDFNo
Marcas de aguaLimitadoHTML completo
Firmas digitalesNo
PDF/ANo

Lista de comprobación de la migración

Pre-Migración

  • [ ] Inventario de todos los archivos .rpt
  • [ ] Captura de pantalla del diseño de cada informe como referencia
  • [ ] Campos de fórmulas y cálculos de documentos
  • [ ] Enumerar todas las fuentes de datos y parámetros
  • [ ] Identificar los requisitos de impresión
  • [ ] Obtenga la clave de licencia deIronPDFen ironpdf.com

Actualizaciones de código

  • [ ] Eliminar paquetes de Crystal Reports (CrystalDecisions.CrystalReports.Engine, etc.)
  • [ ] Eliminar la instalación en tiempo de ejecución del despliegue
  • [ ] Instalar IronPdf paquete NuGet
  • [ ] Convertir diseños .rpt en plantillas HTML/CSS
  • [ ] Convertir fórmulas de Crystal a código C#
  • [ ] Actualizar la vinculación de datos de <código>SetDataSource()</códigoa la interpolación de cadenas HTML
  • [Actualizar el código de impresión de <código>PrintToPrinter()</códigoa pdf.Print()
  • [ ] Añadir inicialización de licencia al inicio de la aplicación

Infraestructura

  • [ ] Eliminar Crystal Runtime de los servidores
  • [ ] Actualización de scripts de despliegue
  • [ ] Eliminar el modo de compatibilidad de 32 bits
  • [Actualización de imágenes Docker (si procede)

Pruebas

  • [ ] Comparar el resultado PDF con los informes originales
  • [ ] Verificar todos los cálculos
  • [ ] Probar todos los parámetros
  • [ ] Probar la funcionalidad de impresión
  • [Pruebas de rendimiento
  • [Prueba de 64 bits

Conclusión

Aunque Crystal Reports sigue siendo una plataforma sólida para la generación de informes empresariales heredados, su falta de flexibilidad moderna a menudo la hace menos atractiva para las organizaciones dinámicas y con visión de futuro. El tiempo de ejecución de más de 500 MB de la plataforma, su compleja implantación y la limitada compatibilidad con .NET Core generan importantes cargas de mantenimiento.

Los cambios clave en esta migración son:

  1. Arquitectura: Plataforma empresarial pesada → Paquete NuGetligero
  2. Tamaño: mÁS DE 500 MBtiempo de ejecución → ~20MB
  3. Plantillas: Archivos binarios .rpt → HTML/CSS
  4. Designer: Obligatorio Crystal Reports Designer → Opcional (utilizar cualquier editor HTML)
  5. Data Binding: <código>SetDataSource()</código→ Interpolación de cadenas en C#
  6. Parámetros: <código>SetParameterValue()</código→ Variables estándar de C#
  7. Exportación: Complejo ExportOptions → Simplepdf.SaveAs()
  8. Cabeceras/Pies de página: Configuración en tiempo de diseño → TextHeader/TextFooter en tiempo de ejecución
  9. Números de página: Campos de fórmula → {page} y {total-pages} marcadores de posición
  10. Plataforma: Limitada .NET Core → Compatibilidad total entre plataformas
  11. Nuevas funciones: Fusión y división de PDF, seguridad, firmas digitales, PDF/A

Decidir entre SAP Crystal ReportseIronPDFdepende en gran medida de la configuración de la organización y de sus aspiraciones futuras. Para las entidades fuertemente integradas en el ecosistema SAP que buscan capacidades de generación de informes completas, SAP Crystal Reportsno tiene parangón. Mientras tanto, las organizaciones que se embarquen en iniciativas basadas en la web con .NET y busquen un motor de conversión de PDF racionalizado encontrarán enIronPDFuna ventaja increíble.

Explore la documentación completa de IronPDF, tutoriales y referencia de API para acelerar su migración a SAP Crystal Reports.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más