IRONSOFTWAREHOME
VIDEOS

Cómo convertir vistas a PDFs en ASPNET

Curtis Chau
Curtis Chau
Updated: 19 de julio de 2026

La migración de Crystal Reports a IronPDF transforma 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. Dependencia del ecosistema SAP: vinculada 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 empresarial de SAP
  4. Arquitectura heredada: Dependencias COM de 32 bits que complican las implementaciones modernas de 64 bits
  5. Compatibilidad obsoleta con .NET Core: compatibilidad limitada con plataformas .NET modernas
  6. Dependencia del Diseñador de informes: Requiere extensiones de Visual Studio o un diseñador independiente
  7. Rendimiento lento: inicialización de tiempo de ejecución pesado y consumo 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/8LimitadoSe admite
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,IronPDF proporciona 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 de IronPDF: Obtenga su clave de licencia en IronPDF

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
# Install IronPDF
dotnet add package IronPdf
SHELL

Configuración de licencias

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

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;

Mapeos de API principales

SAP Crystal ReportsIronPDFNotas
ReportDocumentChromePdfRendererTraducción básica
ReportDocument.Load()RenderHtmlAsPdf()Cargar contenido
.rpt archivosPlantillas HTML/CSSFormato de la plantilla
SetDataSource()HTML con datosVinculación de datos
SetParameterValue()Interpolación de cadenasParámetros
ExportToDisk()pdf.SaveAs()Guardar archivo
ExportToStream()pdf.BinaryDataObtener bytes
PrintToPrinter()pdf.Print()Imprimir
Database.TablesAcceso a datos en C#Fuente de datos
FormulaFieldDefinitionsLógica de C#Cálculos
SummaryInfopdf.MetaDataMetadatos PDF
ExportFormatType.PortableDocFormatResultados 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();
    }
}

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

Este ejemplo demuestra la diferencia fundamental de paradigma. SAP Crystal Reportsrequiere una plantilla de archivo .rpt prediseñada creada en Crystal Reports Designer, luego 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 RenderHtmlAsPdf() con 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();
    }
}

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

Crystal Reports no puede convertir directamente URL a PDF. Necesitarías descargar el contenido HTML manualmente con WebClient y luego, de alguna manera, extraer y vincular esos datos a una plantilla prediseñada .rpt, un proceso que no es sencillo y requiere un trabajo manual significativo.

El método RenderUrlAsPdf() de IronPDFcaptura la página web completamente renderizada con todo el 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();
    }
}

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

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 el Diseñador de Crystal Reports 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 de encabezado y 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}; no se requiere 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);

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
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");

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");

Firmas digitales

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

Marcas de agua

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");

Resumen comparativo de características

CaracterísticaSAP Crystal ReportsIronPDF
: Instalación :
Método de instalaciónMSI/Setup.exeNuGet
DespliegueComplejoxcopy
: Soporte de plataforma :
.NET Core/5/6/7/8LimitadoCompleto
nativo de 64 bitsProblemática
Linux/DockerNo
Azure/AWSDifícilSimple
: Desarrollo :
Formato de plantilla.rpt (binario)HTML/CSS
Curva de aprendizajeSintaxis de CrystalEstándares web
IntelliSenseNoC# completo
: Representación :
URL a PDFNo
Soporte CSSNoCSS3 completo
JavaScriptNoES2024 completo
: Características del PDF :
Dividir PDFNo
Marcas de aguaLimitadoHTML completo
Firmas digitalesNo
PDF/ANo

Lista de comprobación de la migración

Pre-Migración

  • Inventariar todos los archivos .rpt
  • Captura de pantalla de cada diseño de informe como referencia
  • Documentar campos de fórmulas y cálculos
  • Enumere todas las fuentes de datos y parámetros
  • Identificar los requisitos de impresión
  • Obtenga la clave de licencia de IronPDFen IronPDF

Actualizaciones de código

  • Eliminar paquetes de Crystal Reports (CrystalDecisions.CrystalReports.Engine, etc.)
  • Eliminar la instalación en tiempo de ejecución de la implementación
  • Instalar el paquete NuGetIronPdf
  • Convertir diseños .rpt en plantillas HTML/CSS
  • Convertir fórmulas de Crystal a código C#
  • Actualizar el enlace de datos de SetDataSource() a la interpolación de cadenas HTML
  • Actualizar el código de impresión de PrintToPrinter() a pdf.Print()
  • Agregar inicialización de licencia al iniciar la aplicación

Infraestructura

  • Eliminar Crystal Runtime de los servidores
  • Actualizar scripts de implementación
  • Eliminar el modo de compatibilidad de 32 bits
  • Actualizar imágenes de Docker (si corresponde)

Pruebas

  • Comparar la salida PDF con los informes originales
  • Verificar todos los cálculos
  • Pruebe todos los parámetros
  • Prueba de funcionalidad de impresión
  • Pruebas de rendimiento
  • Pruebas de 64 bits

Migración a IronPDF en el contexto regulatorio español

Para los ISVs y equipos de desarrollo en España, la migración de SAP Crystal Reports a IronPDF tiene implicaciones que van más allá de la modernización técnica: afecta directamente al cumplimiento de la normativa de facturación y protección de datos.

VeriFactu (RDL 15/2025): Si el software que genera informes o facturas está sujeto a VeriFactu, los proveedores deben asegurarse de que la cadena de componentes utilizada genera registros con huella anti-manipulación, código QR verificable ante la AEAT y la leyenda VERI*FACTU en las visualizaciones de factura. SAP Crystal Reports no fue diseñado para cumplir estos requisitos nativamente. IronPDF, integrado como componente dentro del software de facturación certificado, facilita esta generación. El incumplimiento puede acarrear sanciones de hasta €150.000 al año al proveedor de software.

TicketBAI (País Vasco): Las tres haciendas forales del País Vasco —Bizkaia (bizkaia.eus), Gipuzkoa (gipuzkoa.eus) y Araba (araba.eus)— exigen facturación electrónica con especificaciones propias. Los XMLs TicketBAI requieren firma XAdES (gestionada en la capa del ISV); IronPDF genera los PDFs de factura y los códigos QR integrados en esa arquitectura.

Facturae y FACe: La facturación B2G a través de la plataforma FACe requiere documentos Facturae XML con adjuntos PDF/A-3. IronPDF soporta la generación de PDF/A-3 de forma nativa, lo que simplifica esta integración respecto a las capacidades de exportación de Crystal Reports.

LOPDGDD: El procesamiento on-premise con IronPDF facilita el cumplimiento del LOPDGDD (supervisado por la AEPD): los documentos con datos personales no salen del entorno controlado del ISV.


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 estructurados y visualmente atractivos.

...
Leer más

Artículos Relacionados

Key in blue circle

Obtenga su clave de prueba gratuita de 30 días al instante.

Your trial license will be sent to your email address

Sin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.

bullet_checkedNo se requiere tarjeta de crédito ni creación de cuentaSin limitaciones. 100 % desbloqueado. Sin tarjeta de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Reserve su Demostración en Vivo gratuita
Booking Badge

Confiado por millones de ingenieros en todo el mundo

Logos de clientes de Iron Software
Obtén tu Consulta Sin Compromiso
Completa el formulario a continuación o envía un correo a sales@ironsoftware.com
Tus detalles siempre serán mantenidos confidenciales.
Confiado por millones de ingenieros en todo el mundo
Logos de clientes de Iron Software
Obtenga su Clave de Prueba de 30 días gratis al instante.
No se requiere tarjeta de crédito ni creación de cuenta