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

Cómo migrar de Telerik Reporting a IronPDF en C#

Telerik Reporting es una potente plataforma de generación de informes empresariales que ha servido a los desarrolladores .NET para crear informes interactivos con diseñadores visuales y funciones de desglose. Sin embargo, para los equipos cuya principal necesidad es la generación de PDF en lugar de una completa infraestructura de generación de informes, Informes Telerika menudo representa una sobrecarga significativa en costes de licencia, complejidad de implementación y huella en tiempo de ejecución.

Esta guía proporciona una ruta de migración completa de Informes Telerika IronPDF, con instrucciones paso a paso, comparaciones de código y ejemplos prácticos para desarrolladores .NET profesionales que estén evaluando esta transición.

Por qué migrar de Telerik Reporting

La decisión de migrar de Informes Teleriksuele centrarse en adaptar las herramientas a los requisitos reales. Entre las principales razones por las que los equipos de desarrollo se plantean la migración se incluyen:

Licencia de paquete costosa: Informes Telerikrequiere el paquete DevCraft (más de $1000 por desarrollador) o una licencia independiente. Para los equipos que solo necesitan generar PDF, esto representa una importante capacidad no utilizada.

Dependencia del Diseñador de informes: Informes Telerikrequiere la instalación de extensiones de Visual Studio y componentes de tiempo de ejecución. Esto añade complejidad a los entornos de desarrollo y a las canalizaciones CI/CD.

Infraestructura compleja: Las implementaciones de producción pueden necesitar alojamiento de servicios de informes, cadenas de conexión y configuración de fuentes de datos, infraestructura que agrega carga de mantenimiento para tareas sencillas de generación de PDF.

Formato propietario: Los formatos de archivo .trdp y .trdx lo encierran en el ecosistema Telerik. La migración o modificación de plantillas requiere herramientas de Telerik.

Tiempo de ejecución pesado: el espacio de implementación es sustancial para lo que pueden ser requisitos simples de conversión de HTML a PDF.

Suscripción anual: los costos continuos de actualizaciones y soporte se suman al costo total de propiedad.

Cuando Informes Telerikes excesivo

Si utiliza Informes Telerikprincipalmente para generar archivos PDF a partir de datos, es probable que esté pagando por funciones que no utiliza:

Usted necesita Telerik proporciona (sin usar)
PDF a partir de HTML Diseñador visual, drill-downs
Informes sencillos Visor interactivo, exportaciones
PDF del lado del servidor Controles de escritorio, motor de gráficos

IronPDF proporciona generación de PDF enfocada sin sobrecarga de informes empresariales.

IronPDFvs Telerik Reporting: Comparación de características

Comprender las diferencias arquitectónicas ayuda a los responsables técnicos a evaluar la inversión en migración:

Característica Informes Telerik IronPDF
Enfoque Creación de informes con opción de exportación a PDF Generación completa de PDF a partir de HTML
Integración Seamless con aplicaciones ASP.NET Core Puede integrarse en cualquier aplicación .NET
Complejidad de configuración Requiere la instalación de un diseñador de informes Instalación sencilla de NuGet
Precios Parte del paquete comercial DevCraft Licencia independiente, más rentable para la generación autónoma de PDF
Generación de PDF Limitado a la exportación de informes Funciones completas con manipulación avanzada de PDF
Público objetivo Desarrolladores que necesitan soluciones centradas en informes Desarrolladores que necesitan soluciones flexibles de generación de PDF
Formato de la plantilla .trdp / .trdx HTML/CSS/Razor
Curva de aprendizaje Específico de Telerik Tecnologías web estándar
HTML a PDF Limitado Renderizado completo en Chromium
URL a PDF No
Soporte CSS Limitado CSS3 completo
JavaScript No ES2024 completo
Firmas digitales No
PDF/A No
Tamaño del tiempo de ejecución Sitio web de gran tamaño Más pequeño

Inicio rápido: Migración de Informes Telerika IronPDF

La migración puede comenzar inmediatamente con estos pasos básicos.

Paso 1: Sustituir paquetes NuGet

Elimine todos los paquetes de Telerik Reporting:

# Remove Informes Telerikpackages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
# Remove Informes Telerikpackages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
SHELL

Instalar IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

Paso 2: Actualizar los espacios de nombres

Sustituya los espacios de nombres Telerik por el espacio de nombres IronPdf:

// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;
// Before (Telerik Reporting)
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

// After (IronPDF)
using IronPdf;
$vbLabelText   $csharpLabel

Paso 3: Inicializar licencia

Añadir inicialización de licencia al inicio de la aplicación:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Ejemplos de migración de código

Convertir HTML a PDF

El caso de uso más común demuestra la diferencia arquitectónica entre estas bibliotecas PDF .NET.

Enfoque de los informes de Telerik:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Collections.Specialized;

class TelerikExample
{
    static void Main()
    {
        var reportSource = new Telerik.Reporting.TypeReportSource();
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = new Telerik.Reporting.Report()
        {
            Items = { new Telerik.Reporting.HtmlTextBox() { Value = "<h1>Hello World</h1><p>Sample HTML content</p>" } }
        };

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Collections.Specialized;

class TelerikExample
{
    static void Main()
    {
        var reportSource = new Telerik.Reporting.TypeReportSource();
        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = new Telerik.Reporting.Report()
        {
            Items = { new Telerik.Reporting.HtmlTextBox() { Value = "<h1>Hello World</h1><p>Sample HTML content</p>" } }
        };

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("output.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

La versión de Telerik requiere la creación de un TypeReportSource, un InstanceReportSource, un objeto Report con un HtmlTextBox, un Procesador de informesy la gestión manual del flujo de archivos. El <código>ChromePdfRenderer`deIronPDFse encarga de todo el proceso con tres líneas de código.

Para situaciones avanzadas de conversión de HTML a PDF, consulte la Guía de conversión de HTML a PDF.

Convertir URL en PDF

La conversión de URL a PDF revela una importante carencia de capacidades en Telerik Reporting.

Enfoque de los informes de Telerik:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Net;

class TelerikExample
{
    static void Main()
    {
        string htmlContent;
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        var report = new Telerik.Reporting.Report();
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = htmlContent
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("webpage.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using System.Net;

class TelerikExample
{
    static void Main()
    {
        string htmlContent;
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString("https://example.com");
        }

        var report = new Telerik.Reporting.Report();
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = htmlContent
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("webpage.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

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

class IronPdfExample
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

Telerik Reporting no tiene capacidad nativa de URL a PDF. Debe obtener manualmente el contenido HTML mediante WebClient, perdiendo CSS externo, ejecución de JavaScript y contenido dinámico en el proceso. El método RenderUrlAsPdf deIronPDFcaptura la página completa tal y como aparece en el navegador.

Explore la URL a la documentación PDF para conocer las opciones de autenticación y encabezado personalizado.

Implementación de encabezados y pies de página con números de página

Los encabezados y pies de página con números de página dinámicos son esenciales para los documentos profesionales. Los enfoques de aplicación difieren significativamente.

Enfoque de los informes de Telerik:

// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

class TelerikExample
{
    static void Main()
    {
        var report = new Telerik.Reporting.Report();

        // Add page header
        var pageHeader = new Telerik.Reporting.PageHeaderSection();
        pageHeader.Height = new Unit(0.5, UnitType.Inch);
        pageHeader.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Document Header",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageHeaderSection = pageHeader;

        // Add page footer
        var pageFooter = new Telerik.Reporting.PageFooterSection();
        pageFooter.Height = new Unit(0.5, UnitType.Inch);
        pageFooter.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Page {PageNumber} of {PageCount}",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageFooterSection = pageFooter;

        // Add content
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("report_with_headers.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
// NuGet: Install-Package Telerik.Reporting
using Telerik.Reporting;
using Telerik.Reporting.Processing;
using Telerik.Reporting.Drawing;

class TelerikExample
{
    static void Main()
    {
        var report = new Telerik.Reporting.Report();

        // Add page header
        var pageHeader = new Telerik.Reporting.PageHeaderSection();
        pageHeader.Height = new Unit(0.5, UnitType.Inch);
        pageHeader.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Document Header",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageHeaderSection = pageHeader;

        // Add page footer
        var pageFooter = new Telerik.Reporting.PageFooterSection();
        pageFooter.Height = new Unit(0.5, UnitType.Inch);
        pageFooter.Items.Add(new Telerik.Reporting.TextBox()
        {
            Value = "Page {PageNumber} of {PageCount}",
            Location = new PointU(0, 0),
            Size = new SizeU(new Unit(6, UnitType.Inch), new Unit(0.3, UnitType.Inch))
        });
        report.PageFooterSection = pageFooter;

        // Add content
        var htmlTextBox = new Telerik.Reporting.HtmlTextBox()
        {
            Value = "<h1>Report Content</h1><p>This is the main content.</p>"
        };
        report.Items.Add(htmlTextBox);

        var instanceReportSource = new Telerik.Reporting.InstanceReportSource();
        instanceReportSource.ReportDocument = report;

        var reportProcessor = new ReportProcessor();
        var result = reportProcessor.RenderReport("PDF", instanceReportSource, null);

        using (var fs = new System.IO.FileStream("report_with_headers.pdf", System.IO.FileMode.Create))
        {
            fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
        }
    }
}
$vbLabelText   $csharpLabel

Enfoque IronPDF:

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

class IronPdfExample
{
    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("<h1>Report Content</h1><p>This is the main content.</p>");
        pdf.SaveAs("report_with_headers.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class IronPdfExample
{
    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("<h1>Report Content</h1><p>This is the main content.</p>");
        pdf.SaveAs("report_with_headers.pdf");
    }
}
$vbLabelText   $csharpLabel

Telerik Reporting requiere crear objetos PageHeaderSection y PageFooterSection, configurar medidas Unit, establecer propiedades Location y Size, y gestionar elementos TextBox con coordenadas específicas. El enfoque basado en HTML deIronPDFutiliza el conocido estilo CSS y marcadores de posición sencillos como {page} y {total-pages}.

Más información sobre las opciones de encabezado y pie de página en documentación sobre encabezados y pies de página.

Referencia de mapeo de la API de informes de Telerik a IronPDF

Este mapeo acelera la migración al mostrar los equivalentes directos de las API:

Informes Telerik IronPDF Notas
clase Informe <código>ChromePdfRenderer` Traducción básica
Procesador de informes renderer.RenderHtmlAsPdf() Generación de PDF
<código>ReportSource` Cadena o archivo HTML Fuente del contenido
archivos .trdp / .trdx Plantillas HTML/CSS Formato de la plantilla
InformeParámetro Interpolación de cadenas / Razor Parámetros
<código>ReportDataSource` Enlace de datos en C# Fuente de datos
<código>RenderReport("PDF") <código>RenderHtmlAsPdf() Resultados en PDF
<código>Export() <código>pdf.SaveAs() Guardar archivo
Cuadro de texto elemento de informe HTML <span>, <p>, <div> Elementos de texto
Tabla del informe HTML <código>` Tablas
<código>PictureBox HTML <código> related to Referencia de mapeo de la API de informes de Telerik a IronPDF Imágenes
Configuración de página <código>RenderingOptions` Configuración de la página

Problemas comunes de migración y soluciones

Edición 1: Definiciones de informes (archivos .trdp/.trdx)

Telerik Reporting utiliza definiciones de informes XML patentadas que no se pueden convertir directamente.

Solución: Convertir a plantillas HTML abriendo el informe en el diseñador, documentando el diseño, los enlaces de datos y el formato y, a continuación, recreándolo como plantillas HTML/CSS. Utilice Razor para la vinculación de datos en escenarios complejos.

Número 2: Data Source Binding

Telerik Reporting utiliza SqlDataSource y fuentes de datos de objetos con enlace de expresiones.

Solución: Obtener datos en C# y enlazarlos a HTML:

var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";
var data = await dbContext.Orders.ToListAsync();
var html = $"<table>{string.Join("", data.Select(d => $"<tr><td>{d.Name}</td></tr>"))}</table>";
$vbLabelText   $csharpLabel

Tema 3: Parámetros de informe

Telerik Reporting utiliza InformeParámetrocon una interfaz de usuario de parámetros integrada.

Solución: Pasar parámetros directamente a la generación HTML:

public string GenerateReport(string customerId, DateTime fromDate)
{
    return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>";
}
public string GenerateReport(string customerId, DateTime fromDate)
{
    return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>";
}
$vbLabelText   $csharpLabel

Número 4: Funciones interactivas

Telerik Reporting ofrece funciones de desglose, clasificación y filtrado en el visor.

Solución:IronPDFgenera archivos PDF estáticos. Para la interactividad, mantenga los datos en su interfaz de usuario web y genere el PDF cuando el usuario haga clic en "Exportar" Esto separa las preocupaciones entre la exploración interactiva de datos y la generación de documentos.

Lista de comprobación de la migración a Telerik Reporting

Tareas previas a la migración

Audite su código base para identificar todo el uso de Telerik Reporting:

grep -r "using Telerik.Reporting" --include="*.cs" .
grep -r "Report\|ReportProcessor" --include="*.cs" .
grep -r "using Telerik.Reporting" --include="*.cs" .
grep -r "Report\|ReportProcessor" --include="*.cs" .
SHELL

Documente las fuentes de datos y los parámetros, haga capturas de pantalla de los diseños actuales de los informes como referencia visual e identifique los componentes compartidos de los informes que pueden convertirse en plantillas HTML reutilizables.

Tareas de actualización de código

  1. Eliminar paquetes NuGet de Telerik
  2. Instalación del paquete IronPdf NuGet
  3. Convertir archivos .trdp/.trdx en plantillas HTML
  4. Sustituya Procesador de informespor ChromePdfRenderer
  5. Actualizar la vinculación de datos a la interpolación de cadenas o Razor
  6. Convertir encabezados/pies de página a HTML utilizando HtmlHeaderFooter
  7. Añadir inicialización de licencia al inicio

Pruebas posteriores a la migración

Tras la migración, verifique estos aspectos:

  • Comparar visualmente el resultado PDF con los informes originales
  • Verificar la exactitud de los datos en los PDF generados
  • Prueba de paginación para documentos de varias páginas
  • Comprobar que los encabezados/pies de página aparecen correctamente en todas las páginas
  • Realización de pruebas de rendimiento para escenarios de gran volumen

Beneficios clave de migrar a IronPDF

Pasar de Informes TelerikaIronPDFofrece varias ventajas a los equipos centrados en la generación de PDF:

Motor de renderizado moderno de Chromium:IronPDFutiliza el mismo motor de renderizado que Google Chrome, lo que garantiza que los archivos PDF se representen exactamente como aparece el contenido en los navegadores modernos. Gracias a la compatibilidad total con CSS3 y JavaScript, tus diseños web se traducen directamente a PDF.

Licencias simplificadas:IronPDFofrece licencias por desarrollador sin necesidad de comprar una suite completa. Para los equipos que solo necesitan generar PDF, esto supone un importante ahorro de costes.

Tecnologías web estándar: HTML, CSS y JavaScript son habilidades que todo desarrollador web posee. No hay que aprender formatos de plantilla propietarios ni herramientas de diseño especializadas.

Huella de implementación más pequeña: sin infraestructura de servicio de informes ni componentes de diseño, las implementaciones son más simples y rápidas.

Desarrollo activo: a medida que aumenta la adopción de .NET 10 y C# 14 hasta 2026, las actualizaciones periódicas deIronPDFgarantizan la compatibilidad con las versiones actuales y futuras de .NET.

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