IRONSOFTWAREHOME
VIDEOS

Cómo generar archivos PDF en la biblioteca VB .NET | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julio de 2026

La migración de SQL Server Reporting Services (SSRS) a IronPDF transforma su flujo de trabajo de generación de PDF de una pesada infraestructura basada en servidor a una biblioteca ligera y en proceso que puede incrustarse directamente en cualquier aplicación .NET. Esta guía proporciona una ruta de migración completa, paso a paso, que elimina las dependencias de SQL Server, la sobrecarga del servidor de informes y la dependencia del ecosistema de Microsoft.

Por qué migrar de SSRSa IronPDF

Comprensión de SSRS

SQL Server Reporting Services (SSRS) es la plataforma de informes empresariales de Microsoft que requiere una importante inversión en infraestructura. SSRSes una plataforma integral de generación de informes de Microsoft que proporciona un conjunto completo para crear, implementar y gestionar informes, y ofrece funciones de informes interactivos y con muchas funciones. Desarrollado como parte del ecosistema de SQL Server, SSRSestá estrechamente integrado con las soluciones de bases de datos de Microsoft.

Sin embargo, para muchos escenarios de generación de PDF, la infraestructura de SSRSes excesiva. Las razones clave para migrar incluyen:

  1. Infraestructura pesada: requiere configuración de SQL Server, Report Server e IIS
  2. Bloqueo del ecosistema de Microsoft: vinculado a las licencias de SQL Server y Windows Server
  3. Implementación compleja: implementación de informes, configuración de seguridad y gestión de suscripciones
  4. Licencias costosas: Licencias de SQL Server, especialmente para funciones empresariales
  5. Soporte web limitado: difícil de integrar con los marcos SPA modernos
  6. Gastos generales de mantenimiento: parches de servidor, mantenimiento de bases de datos, gestión de informes
  7. No hay opción nativa de la nube: Diseñado para instalaciones locales, el soporte en la nube es complicado.

Cuando SSRSes excesivo

Sus necesidadesSobrecarga de SSRS
Generar facturasServidor de informes completo
Exportar tablas de datosLicencia de SQL Server
Crear PDF a partir de datosServidor Windows
Generación sencilla de documentosSuscripción a informes

IronPDF proporciona generación de PDF en proceso sin ninguna infraestructura de servidor.

Comparación entre SSRSe IronPDF

CaracterísticaSSRSIronPDF
DependenciaRequiere SQL ServerSin dependencia específica de la base de datos
DespliegueBasado en servidorBiblioteca (integrada en aplicaciones)
IntegraciónEstrecha integración con MicrosoftFunciona con cualquier fuente de datos
Visualización de datosAmplias opciones nativasVisualizaciones centradas en PDF
ComplejidadAlta (requiere configuración del servidor)Moderado a bajo (configuración de la biblioteca)
CosteCostes de licencia de SQL ServerCoste de licencia por desarrollador
HTML a PDFNoChromium completo
URL a PDFNo
Soporte CSSLimitadoCSS3 completo
JavaScriptNoES2024 completo

IronPDF, a diferencia de SSRS, no está vinculado a ninguna base de datos o ecosistema de servidor específico. Proporciona a los desarrolladores una biblioteca flexible para crear, editar y manipular dinámicamente documentos PDF directamente en C#. Este desacoplamiento de una infraestructura basada en servidor ofrece una ventaja notable: es sencillo y adaptable, adecuado para una amplia gama de aplicaciones más allá de la elaboración de informes.

Para los equipos que planean la adopción de .NET 10 y C# 14 hasta 2025 y 2026,IronPDF proporciona un moderno motor de renderizado Chromium que elimina la complejidad de la infraestructura de SSRS.


Antes de empezar

Prerrequisitos

  1. Entorno .NET : .NET Framework 4.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

# SSRShas no direct NuGet - it's server-based
# Remove any ReportViewer controls

dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WinForms

# 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: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

Mapeos de API principales

Concepto de SSRSEquivalente de IronPDFNotas
LocalReportChromePdfRendererTraducción básica
ServerReportRenderUrlAsPdf()Representación basada en URL
.rdlc archivosPlantillas HTML/CSSFormato de la plantilla
ReportParameterInterpolación de cadenasParámetros
ReportDataSourceDatos en C# + HTMLVinculación de datos
LocalReport.Render("PDF")RenderHtmlAsPdf()Resultados en PDF
SubReportPDF fusionadosInformes anidados
Report Server URLNo es necesarioNo se requiere servidor
ReportViewer controlNo es necesarioGeneración directa de PDF
Formatos de exportaciónEl PDF es nativoResultados específicos

Ejemplos de migración de código

Ejemplo 1: Conversión de HTML a PDF

Antes (SSRS):

// SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSHtmlToPdf
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        
        // Load RDLC report definition
        reportViewer.LocalReport.ReportPath = "Report.rdlc";
        
        // Add HTML content as a parameter or dataset
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var param = new ReportParameter("HtmlContent", htmlContent);
        reportViewer.LocalReport.SetParameters(param);
        
        // Render the report to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF",
            null,
            out mimeType,
            out encoding,
            out fileNameExtension,
            out streams,
            out warnings);
        
        File.WriteAllBytes("output.pdf", bytes);
    }
}
C#

Después (IronPDF):

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

class IronPdfHtmlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        
        // Convert HTML string to PDF
        var htmlContent = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        
        // Save the PDF file
        pdf.SaveAs("output.pdf");
    }
}

Este ejemplo demuestra la diferencia arquitectónica fundamental. SSRSrequiere crear una instancia ReportViewer, cargar un archivo de definición de informe .rdlc, configurar parámetros y luego llamar a LocalReport.Render("PDF") con múltiples parámetros out para metadatos.

IronPDF utiliza un ChromePdfRenderer con RenderHtmlAsPdf() en solo tres líneas de código. No se requieren archivos de definición de informes, objetos de parámetros ni manejo de metadatos. Consulte la documentación HTML a PDF para ver ejemplos completos.

Ejemplo 2: URL a PDF con encabezados y pies de página

Antes (SSRS):

// SSRS- SQL Server Reporting Services
using System;
using System.IO;
using System.Net;
using Microsoft.Reporting.WebForms;

class SSRSUrlToPdf
{
    static void Main()
    {
        // Download HTML content from URL
        string url = "https://example.com";
        string htmlContent;
        
        using (var client = new WebClient())
        {
            htmlContent = client.DownloadString(url);
        }
        
        // Create RDLC report with header/footer configuration
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "WebReport.rdlc";
        
        // Set parameters for header and footer
        var parameters = new ReportParameter[]
        {
            new ReportParameter("HeaderText", "Company Report"),
            new ReportParameter("FooterText", "Page " + DateTime.Now.ToString()),
            new ReportParameter("HtmlContent", htmlContent)
        };
        reportViewer.LocalReport.SetParameters(parameters);
        
        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);
        
        File.WriteAllBytes("webpage.pdf", bytes);
    }
}
C#

Después (IronPDF):

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

class IronPdfUrlToPdf
{
    static void Main()
    {
        // Create a ChromePdfRenderer instance
        var renderer = new ChromePdfRenderer();
        
        // Configure rendering options with header and footer
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };
        
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages} - " + DateTime.Now.ToString("MM/dd/yyyy") + "</div>"
        };
        
        // Convert URL to PDF
        string url = "https://example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        
        // Save the PDF file
        pdf.SaveAs("webpage.pdf");
    }
}

SSRS no puede convertir directamente URL a PDF. Debe descargar manualmente el contenido HTML con WebClient.DownloadString(), crear un archivo de informe separado .rdlc, pasar el HTML y el texto del encabezado/pie de página como matrices ReportParameter y luego renderizar con la firma de método compleja Render().

RenderUrlAsPdf() de IronPDF maneja todo el proceso en una sola llamada. Los encabezados y pies de página se configuran con objetos HtmlHeaderFooter que admiten HTML/CSS completo y marcadores de posición como {page} y {total-pages}. Más información en nuestros tutoriales.

Ejemplo 3: Informe basado en bases de datos

Antes (SSRS):

// SSRS- SQL Server Reporting Services
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
using System.IO;

class SSRSDatabaseReport
{
    static void Main()
    {
        // Create a ReportViewer instance
        var reportViewer = new ReportViewer();
        reportViewer.ProcessingMode = ProcessingMode.Local;
        reportViewer.LocalReport.ReportPath = "SalesReport.rdlc";
        
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            var dataSet = new DataSet();
            adapter.Fill(dataSet, "Sales");
            
            // Bind data to report
            var dataSource = new ReportDataSource("SalesDataSet", dataSet.Tables[0]);
            reportViewer.LocalReport.DataSources.Clear();
            reportViewer.LocalReport.DataSources.Add(dataSource);
        }
        
        // Render to PDF
        string mimeType, encoding, fileNameExtension;
        string[] streams;
        Warning[] warnings;
        
        byte[] bytes = reportViewer.LocalReport.Render(
            "PDF", null, out mimeType, out encoding,
            out fileNameExtension, out streams, out warnings);
        
        File.WriteAllBytes("sales-report.pdf", bytes);
    }
}
C#

Después (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

class IronPdfDatabaseReport
{
    static void Main()
    {
        // Create database connection and fetch data
        string connString = "Server=localhost;Database=SalesDB;Integrated Security=true;";
        var dataTable = new DataTable();
        
        using (var connection = new SqlConnection(connString))
        {
            var adapter = new SqlDataAdapter("SELECT * FROM Sales", connection);
            adapter.Fill(dataTable);
        }
        
        // Build HTML table from data
        var htmlBuilder = new StringBuilder();
        htmlBuilder.Append("<h1>Sales Report</h1><table border='1'><tr>");
        
        foreach (DataColumn column in dataTable.Columns)
            htmlBuilder.Append($"<th>{column.ColumnName}</th>");
        htmlBuilder.Append("</tr>");
        
        foreach (DataRow row in dataTable.Rows)
        {
            htmlBuilder.Append("<tr>");
            foreach (var item in row.ItemArray)
                htmlBuilder.Append($"<td>{item}</td>");
            htmlBuilder.Append("</tr>");
        }
        htmlBuilder.Append("</table>");
        
        // Convert to PDF
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
        pdf.SaveAs("sales-report.pdf");
    }
}

SSRS requiere un archivo de informe prediseñado ("SalesReport.rdlc"), completar un DataSet, crear un ReportDataSource con un nombre específico ("SalesDataSet") que debe coincidir con la definición del informe, borrar las fuentes de datos existentes, agregar la nueva fuente de datos y luego renderizar.

IronPDF utiliza su código de acceso a datos existente (el mismo patrón SqlDataAdapter) y luego crea HTML dinámicamente con StringBuilder. Usted tiene el control total sobre el diseño utilizando HTML/CSS estándar, sin necesidad de archivos propietarios de definición de informes.


Comparación de características

CaracterísticaSSRSIronPDF
: Infraestructura :
Licencia de SQL ServerRequeridoNo es necesario
Servidor WindowsRequeridoCualquier plataforma
Base de datos requeridaSí (ReportServer DB)No
: Desarrollo :
Formato de plantillaRDLC/RDLHTML/CSS/Razor
Fuentes de datosDSN incorporadoCualquier dato de C#
: Representación :
URL a PDFNo
Soporte CSSLimitadoCSS3 completo
JavaScriptNoES2024 completo
GráficosIncorporado enA través de bibliotecas JS
: Implementación :
ConfiguraciónComplejoSimple
MantenimientoAltaBajo

Problemas comunes de migración

Número 1: Definiciones del informe RDLC

SSRS: Utiliza el formato propietario .rdlc XML.

Solución: Convertir a plantillas HTML:

  1. Abrir .rdlc en Visual Studio
  2. Documentar la estructura del diseño
  3. Recrear en HTML/CSS
  4. Utilizar Razor para la vinculación de datos

Número 2: Fuentes de datos compartidas

SSRS: Cadenas de conexión en Report Server.

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

var data = await _dbContext.Sales.ToListAsync();
// Then bind to HTML template

Tema 3: Interfaz de usuario de parámetros de informe

SSRS: Avisos de parámetros incorporados.

Solución: Construya una interfaz de usuario paramétrica en su aplicación:

// Your own parameter form, then:
var pdf = GenerateReport(startDate, endDate, region);

Número 4: Suscripciones/Informes programados

SSRS: Motor de suscripción integrado.

Solución: Utilizar marco de trabajo de fondo:

// Using Hangfire or similar
RecurringJob.AddOrUpdate("weekly-report",
    () => GenerateAndEmailReport(), Cron.Weekly);

Lista de comprobación de la migración

Pre-Migración

  • Inventariar todos los informes SSRS(archivos (.rdlc)
  • Documentar fuentes de datos y conexiones
  • Diseños de informes de captura de pantalla para referencia visual
  • Enumere los parámetros del informe para cada informe
  • Horarios de suscripción de notas
  • Obtenga la clave de licencia de IronPDFen IronPDF

Actualizaciones de código

  • Eliminar paquetes de ReportViewer
  • Instalar el paquete NuGet IronPdf
  • Convertir archivos .rdlc en plantillas HTML
  • Reemplace LocalReport con ChromePdfRenderer
  • Reemplace ReportDataSource con datos de C# + plantillas HTML
  • Reemplazar ReportParameter con interpolación de cadena
  • Reemplace LocalReport.Render("PDF") con RenderHtmlAsPdf()
  • Implementar encabezados/pies de página con HtmlHeaderFooter
  • Agregar inicialización de licencia al iniciar la aplicación

Infraestructura

  • Desmantelamiento del servidor de informes del plan
  • Migrar suscripciones al programador de trabajos (Hangfire, etc.)
  • Actualizar scripts de implementación

Pruebas

  • Comparar visualmente la salida PDF
  • Verificar la exactitud de los datos
  • Paginación de pruebas
  • Compruebe todos los parámetros
  • Pruebas de rendimiento

Migración de SSRS a IronPDF: contexto regulatorio para ISVs en España

Para los equipos de desarrollo en España que migran de SSRS a IronPDF en contextos de software de facturación, ERP o gestión documental, la migración tiene implicaciones regulatorias directas.

VeriFactu (RDL 15/2025): SSRS fue diseñado para informes empresariales generales, no para el cumplimiento de VeriFactu. Los proveedores de software de facturación que migran a IronPDF pueden diseñar su arquitectura para generar registros con huella anti-manipulación, código QR verificable ante la AEAT y la leyenda VERI*FACTU en las visualizaciones de factura. El incumplimiento puede acarrear sanciones de hasta €150.000 al año. IronPDF actúa como componente de generación PDF dentro del software certificado.

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

Facturae, Crea y Crece y FACe: La generación de documentos Facturae XML con adjuntos PDF/A-3 para la plataforma FACe (facturación B2G) es nativa en IronPDF. La ley Crea y Crece extiende esta obligatoriedad a B2B desde 2027-2028.

LOPDGDD y procesamiento on-premise: A diferencia de SSRS (que puede requerir infraestructura de servidor compartida), IronPDF permite procesar documentos completamente on-premise, sin enviar datos a infraestructuras externas, facilitando el cumplimiento del LOPDGDD supervisado por la AEPD.


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