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

Cómo migrar de FastReport a IronPDF en C#

Migrar de FastReporta IronPDF: Guía completa de migración a C

FastReport.NET es una potente solución de generación de informes creada para el ecosistema .NET, que cuenta con un diseñador de informes visual y una arquitectura basada en bandas para crear informes complejos basados en datos. Sin embargo, FastReportpresenta desafíos significativos para los flujos de trabajo de generación de PDF modernos: dependencia del diseñador de informes que limita el desarrollo basado en el código, una curva de aprendizaje pronunciada en torno a los conceptos basados en bandas (DataBand, PageHeaderBand), compatibilidad limitada con CSS mediante formato propietario, vinculación de datos compleja con la repetición de RegisterData() y paquetes NuGet fragmentados que requieren varias instalaciones. Esta completa guía proporciona una ruta de migración paso a paso de FastReporta IronPDF, una biblioteca PDF de uso general que aprovecha las tecnologías web HTML/CSS para la generación flexible y programática de documentos.

¿Por qué migrar de FastReporta IronPDF?

La especialización de FastReport.NET en la generación de informes crea fricciones para los equipos de desarrollo que necesitan una generación de PDF versátil. Comprender estas diferencias arquitectónicas es esencial para planificar la migración.

Los retos de FastReport

  1. Dependencia del diseñador de informes: La creación de diseños complejos requiere el diseñador visual o un profundo conocimiento de la estructura de archivos .frx, lo que no es adecuado para los enfoques de desarrollo basados primero en el código.

  2. Curva de aprendizaje pronunciada: La arquitectura basada en bandas de FastReport(DataBand, PageHeaderBand, PageFooterBand) requiere comprender conceptos específicos de los informes que no se transfieren a otras tecnologías.

  3. Soporte CSS limitado: El estilo estándar de la web no se admite de forma nativa; la estilización se realiza mediante el formato propietario de FastReporten lugar del conocido CSS.

  4. Vinculación de datos compleja: RegisterData() y las conexiones DataSource añaden boilerplate para escenarios sencillos de generación de PDF.

  5. Paquetes fragmentados: Múltiples paquetes NuGet necesarios para la funcionalidad completa (FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple, etc.).

  6. Complejidad de la licencia: La versión de código abierto tiene características limitadas; se requiere una versión comercial para el cifrado de PDF, la firma digital y la incrustación de fuentes.

Comparación de arquitecturas

AspectoFastReportIronPDF
Enfoque de diseñoDiseñador visual + archivos .frxHTML/CSS (tecnologías web)
Curva de aprendizajeSteep (conceptos basados en bandas)Suave (conocimientos de HTML/CSS)
Vinculación de datosRegisterData(), DataBandInterpolación de cadenas, Razor, plantillas
Soporte CSSLimitadoCSS3 completo con Flexbox/Grid
Modelo de paqueteMúltiples paquetesPaquete único (todas las funciones)
Motor de renderizadoA medidaÚltimo Chromium
Manipulación de PDFOrientado a la exportaciónCompleto (fusión, división, seguridad, formularios)
Moderno .NET.NET Standard 2.0.NET 6/7/8/9+ nativo

Beneficios clave de la migración

  1. Tecnologías web: Utilizar HTML/CSS conocido en lugar de diseños propietarios basados en bandas
  2. Desarrollo basado en código: Genera PDFs mediante programación sin depender del diseñador visual
  3. Un solo paquete: Un paquete NuGet incluye todas las funciones de PDF
  4. Renderizado moderno: El último motor de Chromium para una salida CSS3 con píxeles perfectos
  5. Manipulación completa de PDF: Fusión, división, seguridad, formularios, no sólo exportación

Preparación de la migración

Prerrequisitos

Asegúrese de que su entorno cumple estos requisitos:

  • .NET Framework 4.6.2+ o .NET Core 3.1 / .NET 5-9
  • Visual Studio 2019+ o VS Code con extensión de C#
  • Acceso al gestor de paquetes NuGet
  • Clave de licencia deIronPDF(prueba gratuita disponible en ironpdf.com)

Uso de Auditoría FastReport

Ejecute estos comandos en su directorio de soluciones para identificar todas las referencias a FastReport:

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

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

# Check NuGet packages
dotnet list package | grep FastReport
SHELL

Documente sus plantillas de informes

Antes de la migración, catalogue todos los archivos .frx y sus propósitos:

  • Nombre y objetivo del informe
  • Fuentes de datos utilizadas
  • Configuración de encabezados/pies de página
  • Requisitos de numeración de páginas
  • Formato o estilo especial

Entendiendo el cambio de paradigma

El cambio más significativo al migrar de FastReportaIronPDFes el enfoque de diseño fundamental. FastReportutiliza un diseño visual basado en bandas con archivos de plantilla .frx y conceptos propios como DataBand, PageHeaderBand y RegisterData().IronPDFutiliza tecnologías web HTML/CSS que la mayoría de los desarrolladores ya conocen.

Esto significa convertir las configuraciones de banda de FastReporten plantillas HTML, sustituir RegisterData() por la vinculación directa de datos mediante interpolación de cadenas o plantillas Razor, y transformar PageHeaderBand/PageFooterBand en encabezados y pies de página basados en HTML.

Proceso de migración paso a paso

Paso 1: Actualizar paquetes NuGet

Elimine todos los paquetes de FastReporte instale IronPDF:

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

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

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

Paso 2: Actualizar referencias de espacios de nombres

Sustituya los espacios de nombres de FastReportpor IronPDF:

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

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

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

Paso 3: Configurar la licencia

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

Referencia completa de migración de API

Mapeo de clases principales

Clase FastReportEquivalente de IronPDFNotas
Informe<código>ChromePdfRenderer</códigoClase principal de renderización
<código>PDFExport</código<código>ChromePdfRenderer</código> + <código>SecuritySettings</código>Renderización + seguridad
<código>PDFSimpleExport</código<código>ChromePdfRenderer</códigoExportación simplificada
Página de informeHTML <body> o <div>Contenido de la página
Objeto de textoHTML <p>, <span>, <div>Elementos de texto
<código>HTMLObject</códigoRepresentación directa en HTMLContenido HTML
Banda de cabecera de página<código>HtmlHeaderFooter</códigoEncabezados de página
<código>BandaPieDePágina</código<código>HtmlHeaderFooter</códigoPie de página

Métodos

Método FastReportEquivalente de IronPDFNotas
<código>report.Load("template.frx")</códigoArchivo o cadena de plantilla HTMLUtilizar HTML/CSS para la maquetación
<código>report.RegisterData(data, "name")</códigoInterpolación de cadenas o RazorVinculación directa de datos
<código>report.Prepare()</códigoN/ANo es necesario (traducción directa)
<código>report.Export(export, stream)</código<código>pdf.SaveAs(ruta)</códigoExportación simplificada

Conversión de marcadores de posición de números de página

FastReport eIronPDFutilizan una sintaxis diferente para los números de página:

FastReportIronPDF
[Página]{page}
[TotalPages]{total de páginas}

Ejemplos de migración de código

Conversión de HTML a PDF

Este ejemplo demuestra la diferencia fundamental entre el enfoque HTMLObject de FastReporty la renderización directa de IronPDF.

Implementación de FastReport:

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

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

            // Prepare report
            report.Prepare();

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

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

            // Prepare report
            report.Prepare();

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

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

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

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

FastReport requiere la creación de un objeto Report, un HTMLObject con dimensiones fijas, la preparación del informe y la exportación mediante stream: siete líneas de código con sentencias using.IronPDFconsigue el mismo resultado en tres líneas con una representación directa en HTML. Para más opciones, consulte la documentación HTML a PDF.

Conversión de URL a PDF

Este ejemplo muestra cómo FastReportrequiere la descarga manual de HTML, mientras queIronPDFgestiona la renderización de URL de forma nativa.

Implementación de FastReport:

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

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

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

            report.Prepare();

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

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

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

            report.Prepare();

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

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

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

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

FastReport requiere descargar manualmente el contenido HTML con WebClient y, a continuación, incrustarlo en un HTMLObject con dimensiones fijas, una solución que no gestiona correctamente la ejecución de JavaScript ni las URL de recursos relativos. El RenderUrlAsPdf deIronPDFrenderiza directamente la página web en vivo con ejecución completa de JavaScript utilizando el motor Chromium. Para más opciones, consulte la documentación de URL a PDF.

Cabeceras y pies de página con números de página

Este ejemplo demuestra la diferencia de complejidad entre el sistema basado en bandas de FastReporty el enfoque basado en HTML de IronPDF.

Implementación de FastReport:

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

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

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

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

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

            report.Prepare();

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

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

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

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

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

            report.Prepare();

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

Implementación de IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

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

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

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

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

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

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

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

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

FastReport requiere cargar un archivo de plantilla, crear objetos de página, crear objetos de banda, establecer alturas, crear objetos de texto, añadir a colecciones de bandas y añadir bandas a páginas.IronPDFutiliza <código>HtmlHeaderFooter</códigocon fragmentos de HTML sencillos; puede aplicar estilo a los encabezados y pies de página con CSS completo. Tenga en cuenta el cambio de sintaxis del número de página: [Página] se convierte en {página}, y [TotalPáginas] se convierte en {total-páginas}. Para más opciones, consulte la documentación sobre encabezados y pies de página.

Notas de migración críticas

Sin archivos de plantilla .frx

Las plantillas FastReport(.frx) no funcionarán con IronPDF. Convierta sus diseños en plantillas HTML/CSS:

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

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

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

Conversión de enlace de datos

Sustituir RegisterData() por la generación directa de HTML:

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

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

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

Configuración de seguridad

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

Para conocer todas las opciones de seguridad, consulte la documentación sobre cifrado.

Lista de comprobación posterior a la migración

Después de completar la migración del código, verifique lo siguiente:

  • [ ] Comparación visual de los PDF generados
  • [ ] Verificación de encabezados/pies de página y números de página
  • [Prueba con volúmenes de datos de producción
  • [ ] Validar las funciones de seguridad/cifrado
  • [Evaluación comparativa del rendimiento
  • [ ] Eliminar archivos de plantilla .frx no utilizados
  • [ ] Eliminar código relacionado con FastReport
  • [ ] Actualización de la documentación

Proteja su infraestructura PDF

Con .NET 10 en el horizonte y C# 14 introduciendo nuevas características del lenguaje, la elección de una biblioteca PDF que adopte las modernas tecnologías web garantiza su mantenimiento a largo plazo. El enfoque HTML/CSS deIronPDFsignifica que sus plantillas aprovechan las mismas habilidades utilizadas en el desarrollo web, sin conceptos basados en bandas propietarias que no se transfieren a otras tecnologías. A medida que los proyectos se extienden hasta 2025 y 2026, la capacidad de utilizar plantillas HTML estándar con funciones CSS3 como Flexbox y Grid proporciona una flexibilidad de diseño que el formato propietario de FastReportno puede igualar.

Recursos adicionales


La migración de FastReportaIronPDFelimina la dependencia del diseñador visual, la curva de aprendizaje basada en bandas y el modelo de paquetes fragmentados. La transición a la generación de PDF basada en HTML/CSS aprovecha las tecnologías web conocidas a la vez que proporciona funciones completas de manipulación de PDF (fusión, división, seguridad y formularios) en un único paquete.

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