IRONSOFTWAREHOME
VÍDEOS

Como gerar arquivos PDF em VB .NET | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 de julho de 2026

A migração do SQL Server Reporting Services (SSRS) para o IronPDF transforma seu fluxo de trabalho de geração de PDFs, passando de uma infraestrutura complexa baseada em servidor para uma biblioteca leve e integrada ao processo, que pode ser incorporada diretamente em qualquer aplicação .NET . Este guia fornece um caminho de migração completo, passo a passo, que elimina as dependências do SQL Server, a sobrecarga do servidor de relatórios e a dependência do ecossistema da Microsoft.

Por que migrar doSSRSpara o IronPDF?

Entendendo o SSRS

SQL Server Reporting Services (SSRS) é a plataforma de relatórios empresariais da Microsoft — um conjunto completo para criar, implantar e gerenciar relatórios, integrado de perto com o ecossistema do SQL Server. A Microsoft confirmou que SSRS 2022 é a última versão independente: a partir do SQL Server 2025, os relatórios localizados são consolidados no Power BI Report Server (PBIRS), e não serão lançadas novas versões do SSRS. OSSRS2022 recebe atualizações de segurança até 11 de janeiro de 2033, em linha com o ciclo de vida do SQL Server 2022 (veja as Perguntas Frequentes sobre a Consolidação de Serviços de Relatórios).

Para muitos cenários de geração de PDF, a infraestrutura doSSRSé excessiva. As principais razões para migrar incluem:

  1. Fim da linha do SSRS: O SQL Server 2025 é lançado sem SSRS; PBIRS o substitui. Novo trabalho direcionado aoSSRSé um beco sem saída.
  2. Infraestrutura Pesada: Requer SQL Server, Report Server e (para o visualizador Web Forms mais antigo) configuração do IIS
  3. Dependência do Ecossistema Microsoft: Vinculado ao licenciamento do SQL Server e Windows Server
  4. Implantação Complexa: Implantação de relatórios, configuração de segurança e gerenciamento de assinaturas
  5. Licenciamento Caro: Licenças do SQL Server, especialmente para recursos empresariais
  6. Sem Suporte First-Class for .NET Core: Os pacotes Microsoft.ReportingServices.ReportViewerControl.WebForms / .Winforms da Microsoft têm como alvo apenas o .NET Framework 4.0–4.8.1. Usuários do .NET Core / .NET 5+ dependem da portabilidade da comunidade ReportViewerCore.NETCore.
  7. Sobrecarga de Manutenção: Patching do servidor, manutenção do banco de dados, gerenciamento de relatórios
  8. Sem Opção Nativa na Nuvem: Projetado para ambientes locais, o suporte na nuvem é desajeitado

Quando oSSRSé exagerado

Sua necessidadeVisão geral doSSRS
Gerar faturasServidor de relatório completo
Exportar tabelas de dadosLicença do SQL Server
Criar PDFs a partir de dadosServidor Windows
Geração simples de documentosAssinaturas de relatórios

O IronPDF oferece geração de PDFs em tempo real, sem a necessidade de infraestrutura de servidor.

Comparação entreSSRSe IronPDF

RecursoSSRSIronPDF
DependênciaRequer o SQL Server.Sem dependência específica de banco de dados
ImplantaçãoBaseado em servidorBiblioteca (incorporada em aplicativos)
IntegraçãoIntegração estreita com a MicrosoftFunciona com qualquer fonte de dados.
Visualização de dadosAmpla variedade de opções nativasVisualizações focadas em PDF
ComplexidadeAlta (configuração do servidor necessária)Moderado a baixo (configuração da biblioteca)
Custocustos de licenciamento do SQL ServerCusto de licenciamento por desenvolvedor
HTML para PDFNãoCromo completo
URL para PDFNãoSim
Suporte a CSSLimitadoCSS3 completo
JavaScriptNãoES2024 completo

O IronPDF, diferentemente do SSRS, não está vinculado a nenhum banco de dados ou ecossistema de servidor específico. Ela fornece aos desenvolvedores uma biblioteca flexível para criar, editar e manipular documentos PDF dinamicamente diretamente em C#. Essa separação de uma infraestrutura baseada em servidor oferece uma vantagem notável: é simples e adaptável, adequada para uma ampla gama de aplicações além da geração de relatórios.

Para equipes adotando o .NET moderno, o IronPDF fornece um mecanismo de renderização baseado em Chromium que elimina a complexidade da infraestrutura do SSRS.


Antes de começar

Pré-requisitos

  1. Ambiente .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Acesso ao NuGet : Capacidade de instalar pacotes NuGet.
  3. Licença do IronPDF: Obtenha sua chave de licença em IronPDF

Alterações no pacote NuGet

#SSRSitself is server-based, but the in-process LocalReport API
# ships via Microsoft's ReportViewerControl packages (latest 150.1652.0,
# June 2024 — .NET Framework 4.0–4.8.1 only).
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.WebForms
dotnet remove package Microsoft.ReportingServices.ReportViewerControl.Winforms

# If your project used the community .NET Core port, remove it too:
# dotnet remove package ReportViewerCore.NETCore

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuração de licença

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

Referência completa da API

Alterações de namespace

// Before: SSRS
using Microsoft.Reporting.WebForms;
using Microsoft.Reporting.WinForms;

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

Mapeamentos da API principal

ConceitoSSRSEquivalente ao IronPDFNotas
LocalReportChromePdfRendererRenderização principal
ServerReportRenderUrlAsPdf()renderização baseada em URL
arquivos .rdlcModelos HTML/CSSFormato do modelo
ReportParameterInterpolação de stringsParâmetros
ReportDataSourceDados em C# + HTMLVinculação de dados
LocalReport.Render("PDF")RenderHtmlAsPdf()Saída em PDF
SubReportPDFs mescladosRelatórios aninhados
Report Server URLNão é necessárioNão é necessário servidor
controle ReportViewerNão é necessárioGeração direta de PDF
Formatos de exportaçãoO PDF é nativoProdução focada

Exemplos de migração de código

Exemplo 1: Conversão de HTML para 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#

Apó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 exemplo demonstra a diferença arquitetônica fundamental. OSSRSexige a criação de uma instância ReportViewer, carregando um arquivo de definição de relatório .rdlc, definindo parâmetros, e então chamando LocalReport.Render("PDF") com múltiplos parâmetros out para metadados.

O IronPDF usa um ChromePdfRenderer com RenderHtmlAsPdf() em apenas três linhas de código. Não são necessários arquivos de definição de relatório, objetos de parâmetros ou manipulação de metadados. Consulte a documentação de conversão de HTML para PDF para obter exemplos completos.

Exemplo 2: URL para PDF com cabeçalhos e rodapés

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#

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

OSSRSnão consegue converter URLs diretamente para PDF. Você deve baixar manualmente o conteúdo HTML com WebClient.DownloadString(), criar um arquivo de relatório .rdlc separado, passar o texto HTML e de cabeçalho/rodapé como arrays ReportParameter, e então renderizar com a assinatura de método complexa Render().

O RenderUrlAsPdf() do IronPDF lida com todo o processo em uma única chamada. Cabeçalhos e rodapés são configurados com objetos HtmlHeaderFooter que suportam HTML/CSS completo e espaços reservados como {page} e {total-pages}. Saiba mais em nossos tutoriais .

Exemplo 3: Relatório baseado em banco de dados

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#

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

OSSRSexige um arquivo de relatório pré-desenhado .rdlc ("SalesReport.rdlc"), preenchendo um DataSet, criando um ReportDataSource com um nome específico ("SalesDataSet") que deve corresponder à definição do relatório, limpando fontes de dados existentes, adicionando a nova fonte de dados, e então renderizando.

O IronPDF usa seu código de acesso a dados existente (mesmo padrão SqlDataAdapter), e constrói HTML dinamicamente com StringBuilder. Você tem controle total sobre o layout usando HTML/CSS padrão — não são necessários arquivos de definição de relatório proprietários.


Comparação de recursos

RecursoSSRSIronPDF
Infraestrutura :
Licença do SQL ServerObrigatórioNão é necessário
Servidor WindowsObrigatórioQualquer plataforma
Banco de dados necessárioSim (Banco de Dados do Servidor de Relatórios)Não
: Desenvolvimento :
Formato do modeloRDLC/RDLHTML/CSS/Razor
Fontes de dadosDSN integradoQuaisquer dados em C#
Renderização :
URL para PDFNãoSim
Suporte a CSSLimitadoCSS3 completo
JavaScriptNãoES2024 completo
GráficosEmbutidoPor meio de bibliotecas JS
: Implantação :
ConfiguraçãoComplexoSimples
ManutençãoAltoBaixo

Problemas comuns de migração

Edição 1: Definições do Relatório RDLC

SSRS: Utiliza o formato XML proprietário .rdlc.

Solução: Converter para modelos HTML:

  1. Abra o arquivo .rdlc no Visual Studio.
  2. Documente a estrutura do layout.
  3. Recriar em HTML/CSS
  4. Use o Razor para vinculação de dados.

Questão 2: Fontes de dados compartilhadas

SSRS: Cadeias de conexão no Servidor de Relatórios.

Solução: Utilize a camada de acesso a dados da sua aplicação:

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

Problema 3: Interface do usuário de parâmetros de relatório

SSRS: Solicitações de parâmetros integradas.

Solução: Crie uma interface de usuário para parâmetros em sua aplicação:

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

Edição 4: Assinaturas/Relatórios Agendados

SSRS: Mecanismo de assinatura integrado.

Solução: Utilize a estrutura de tarefas em segundo plano:

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

Lista de verificação para migração

Pré-migração

  • Inventarie todos os relatóriosSSRS(arquivos .rdlc)
  • Documentar as fontes de dados e conexões
  • Capturas de tela dos layouts dos relatórios para referência visual.
  • Listar os parâmetros de cada relatório
  • Observe os cronogramas de assinatura.
  • Obtenha a chave de licença do IronPDF em IronPDF

Atualizações de código

  • Remover pacotes ReportViewer
  • Instale o pacote NuGet IronPdf
  • Converta os arquivos .rdlc em modelos HTML
  • Substitua LocalReport por ChromePdfRenderer
  • Substitua ReportDataSource por dados C# + modelos HTML
  • Substitua ReportParameter por interpolação de strings
  • Substitua LocalReport.Render("PDF") por RenderHtmlAsPdf()
  • Implemente cabeçalhos/rodapés com HtmlHeaderFooter
  • Adicionar inicialização de licença na inicialização do aplicativo

Infraestrutura

  • Desativação do servidor de relatórios de planos
  • Migrar assinaturas para o agendador de tarefas (Hangfire, etc.)
  • Atualizar scripts de implantação

Testando

  • Comparar visualmente a saída em PDF
  • Verificar a precisão dos dados
  • Paginação de teste
  • Verifique todos os parâmetros
  • Testes de desempenho

Observe: ASSRSé uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pela Microsoft. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.
Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.