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
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.
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.
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.
Vinculación de datos compleja: RegisterData() y las conexiones DataSource añaden boilerplate para escenarios sencillos de generación de PDF.
Paquetes fragmentados: Múltiples paquetes NuGet necesarios para la funcionalidad completa (FastReport.OpenSource, FastReport.OpenSource.Export.PdfSimple, etc.).
- 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
| Aspecto | FastReport | IronPDF |
|---|---|---|
| Enfoque de diseño | Diseñador visual + archivos .frx | HTML/CSS (tecnologías web) |
| Curva de aprendizaje | Steep (conceptos basados en bandas) | Suave (conocimientos de HTML/CSS) |
| Vinculación de datos | RegisterData(), DataBand | Interpolación de cadenas, Razor, plantillas |
| Soporte CSS | Limitado | CSS3 completo con Flexbox/Grid |
| Modelo de paquete | Múltiples paquetes | Paquete único (todas las funciones) |
| Motor de renderizado | A medida | Último Chromium |
| Manipulación de PDF | Orientado a la exportación | Completo (fusión, división, seguridad, formularios) |
| Moderno .NET | .NET Standard 2.0 | .NET 6/7/8/9+ nativo |
Beneficios clave de la migración
- Tecnologías web: Utilizar HTML/CSS conocido en lugar de diseños propietarios basados en bandas
- Desarrollo basado en código: Genera PDFs mediante programación sin depender del diseñador visual
- Un solo paquete: Un paquete NuGet incluye todas las funciones de PDF
- Renderizado moderno: El último motor de Chromium para una salida CSS3 con píxeles perfectos
- 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 FastReportDocumente 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 IronPdfPaso 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.comPaso 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.comReferencia completa de migración de API
Mapeo de clases principales
| Clase FastReport | Equivalente de IronPDF | Notas |
|---|---|---|
Informe | <código>ChromePdfRenderer</código | Clase 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ódigo | Exportación simplificada |
Página de informe | HTML <body> o <div> | Contenido de la página |
Objeto de texto | HTML <p>, <span>, <div> | Elementos de texto |
| <código>HTMLObject</código | Representación directa en HTML | Contenido HTML |
Banda de cabecera de página | <código>HtmlHeaderFooter</código | Encabezados de página |
| <código>BandaPieDePágina</código | <código>HtmlHeaderFooter</código | Pie de página |
Métodos
| Método FastReport | Equivalente de IronPDF | Notas |
|---|---|---|
| <código>report.Load("template.frx")</código | Archivo o cadena de plantilla HTML | Utilizar HTML/CSS para la maquetación |
| <código>report.RegisterData(data, "name")</código | Interpolación de cadenas o Razor | Vinculación directa de datos |
| <código>report.Prepare()</código | N/A | No es necesario (traducción directa) |
| <código>report.Export(export, stream)</código | <código>pdf.SaveAs(ruta)</código | Exportació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:
| FastReport | IronPDF |
|---|---|
[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.comImplementació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.comFastReport 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.comImplementació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.comFastReport 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.comImplementació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.comFastReport 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.comConversió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.comConfiguració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.comPara 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.






