Como migrar do Telerik Reporting para o IronPDF em C#
O Relatórios da Telerik é uma plataforma poderosa de relatórios corporativos que tem sido muito útil para desenvolvedores .NET na criação de relatórios interativos com recursos de design visual e detalhamento (drill-down). Não entanto, para equipes cuja principal necessidade é a geração de PDFs em vez de uma infraestrutura de relatórios abrangente, o Relatórios da Telerik geralmente representa uma sobrecarga significativa em custos de licenciamento, complexidade de implantação e espaço ocupado em tempo de execução.
Este guia fornece um caminho completo de migração do Relatórios da Telerik para o IronPDF, com instruções passo a passo, comparações de código e exemplos práticos para desenvolvedores .NET profissionais que estejam avaliando essa transição.
Por que migrar do Telerik Reporting?
A decisão de migrar do Relatórios da Telerik geralmente se concentra em adequar suas ferramentas às suas necessidades reais. Os principais motivos pelos quais as equipes de desenvolvimento consideram a migração incluem:
Licenciamento de pacote caro: o Relatórios da Telerik exige o pacote DevCraft (mais de US$ 1.000 por desenvolvedor) ou uma licença independente. Para equipes que precisam apenas da geração de PDFs, isso representa uma capacidade significativa não utilizada.
Dependência do Designer de Relatórios: O Relatórios da Telerik requer a instalação de extensões do Visual Studio e componentes de tempo de execução. Isso aumenta a complexidade dos ambientes de desenvolvimento e dos pipelines de CI/CD.
Infraestrutura complexa: Implantações em produção podem exigir hospedagem de serviço de relatórios, strings de conexão e configuração de fonte de dados — infraestrutura que aumenta a carga de manutenção para tarefas simples de geração de PDFs.
Formato proprietário: Os formatos de arquivo .trdp e .trdx vinculam você ao ecossistema Telerik. Migrar ou modificar modelos requer ferramentas da Telerik.
Tempo de execução intenso: O espaço ocupado pela implantação é substancial para o que podem ser requisitos simples de conversão de HTML para PDF.
Assinatura anual: Os custos contínuos de atualizações e suporte aumentam o custo total de propriedade.
Quando o Relatórios da Telerik é um exagero
Se você usa o Relatórios da Telerik principalmente para gerar PDFs a partir de dados, provavelmente está pagando por recursos que não utiliza:
| Você precisa | A Telerik fornece (não utilizado) |
|---|---|
| PDF a partir de HTML | Designer visual, detalhamento |
| Relatórios simples | Visualizador interativo, exportações |
| PDFs do lado do servidor | Controles de desktop, mecanismo de gráficos |
O IronPDF oferece geração de PDFs focada, sem a sobrecarga de relatórios corporativos.
IronPDF vs Telerik Reporting: Comparação de Recursos
Compreender as diferenças arquitetônicas ajuda os responsáveis pelas decisões técnicas a avaliar o investimento em migração:
| Recurso | Relatórios da Telerik | IronPDF |
|---|---|---|
| Foco | Criação de relatórios com opção de exportação para PDF | Geração completa de PDFs a partir de HTML |
| Integração | Integração perfeita com aplicações ASP.NET Core | Pode ser integrado a qualquer aplicação .NET. |
| Complexidade de configuração | Requer a instalação de um editor de relatórios. | Instalação simples do NuGet |
| Preços | Parte do pacote comercial DevCraft | Licenciamento separado, mais econômico para geração independente de PDFs. |
| Geração de PDF | Limitado a relatar exportações | Completo com recursos avançados de manipulação de PDF. |
| Público-alvo | Desenvolvedores que precisam de soluções centradas em relatórios | Desenvolvedores que precisam de soluções flexíveis para geração de PDFs |
| Formato do modelo | .trdp / .trdx |
HTML/CSS/ Razor |
| Curva de Aprendizagem | Específico da Telerik | Tecnologias web padrão |
| HTML para PDF | Limitado | Renderização completa do Chromium |
| URL para PDF | Não | Sim |
| Suporte a CSS | Limitado | CSS3 completo |
| JavaScript | Não | ES2024 completo |
| Assinaturas digitais | Não | Sim |
| PDF/A | Não | Sim |
| Tamanho de tempo de execução | Grande | Menor |
Guia Rápido: Migração de Relatórios Telerik para IronPDF
A migração pode começar imediatamente com esses passos fundamentais.
Passo 1: Substituir pacotes NuGet
Remova todos os pacotes de relatórios da Telerik:
# Remove Relatórios da Telerik packages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
# Remove Relatórios da Telerik packages
dotnet remove package Telerik.Reporting
dotnet remove package Telerik.Reporting.Services.AspNetCore
dotnet remove package Telerik.ReportViewer.Mvc
Instale o IronPDF:
# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
Etapa 2: Atualizar Namespaces
Substitua os namespaces Telerik pelo namespace 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;
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports Telerik.Reporting.Drawing
' After (IronPDF)
Imports IronPdf
Etapa 3: Inicializar a licença
Adicionar inicialização de licença na inicialização do aplicativo:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Exemplos de migração de código
Converter HTML para PDF
O caso de uso mais comum demonstra a diferença arquitetônica entre essas bibliotecas PDF for .NET .
Abordagem de Relatórios da 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);
}
}
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports System.Collections.Specialized
Imports System.IO
Class TelerikExample
Shared Sub Main()
Dim reportSource As New Telerik.Reporting.TypeReportSource()
Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
instanceReportSource.ReportDocument = New Telerik.Reporting.Report() With {
.Items = {New Telerik.Reporting.HtmlTextBox() With {.Value = "<h1>Hello World</h1><p>Sample HTML content</p>"}}
}
Dim reportProcessor As New ReportProcessor()
Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)
Using fs As New FileStream("output.pdf", FileMode.Create)
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
End Using
End Sub
End Class
Abordagem 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");
}
}
Imports IronPdf
Imports System
Class IronPdfExample
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>Sample HTML content</p>")
pdf.SaveAs("output.pdf")
End Sub
End Class
A versão Telerik requer a criação de um objeto TypeReportSource, um objeto InstanceReportSource, um objeto Report com um objeto HtmlTextBox, um objeto ReportProcessor e gerenciamento manual do fluxo de arquivos. O ChromePdfRenderer do IronPDF lida com todo o processo com três linhas de código.
Para cenários avançados de conversão de HTML para PDF, consulte o guia de conversão de HTML para PDF .
Converter URLs em PDF
A conversão de URL para PDF revela uma lacuna significativa de funcionalidade no Telerik Reporting.
Abordagem de Relatórios da 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);
}
}
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports System.Net
Imports System.IO
Class TelerikExample
Shared Sub Main()
Dim htmlContent As String
Using client As New WebClient()
htmlContent = client.DownloadString("https://example.com")
End Using
Dim report As New Telerik.Reporting.Report()
Dim htmlTextBox As New Telerik.Reporting.HtmlTextBox() With {
.Value = htmlContent
}
report.Items.Add(htmlTextBox)
Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
instanceReportSource.ReportDocument = report
Dim reportProcessor As New ReportProcessor()
Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)
Using fs As New FileStream("webpage.pdf", FileMode.Create)
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
End Using
End Sub
End Class
Abordagem 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");
}
}
Imports IronPdf
Imports System
Class IronPdfExample
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
O Relatórios da Telerik não possui um recurso nativo de conversão de URL para PDF. Você precisa buscar manualmente o conteúdo HTML usando WebClient, perdendo CSS externo, execução de JavaScript e conteúdo dinâmico no processo. O método RenderUrlAsPdf do IronPDF captura a página renderizada completa exatamente como ela aparece em um navegador.
Consulte a documentação sobre URLs para PDF para obter informações sobre autenticação e opções de cabeçalho personalizadas.
Implementando cabeçalhos e rodapés com números de página
Cabeçalhos e rodapés com numeração de páginas dinâmica é essencial para documentos profissionais. As abordagens de implementação diferem significativamente.
Abordagem de Relatórios da 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);
}
}
}
Imports Telerik.Reporting
Imports Telerik.Reporting.Processing
Imports Telerik.Reporting.Drawing
Imports System.IO
Class TelerikExample
Shared Sub Main()
Dim report As New Telerik.Reporting.Report()
' Add page header
Dim pageHeader As New Telerik.Reporting.PageHeaderSection()
pageHeader.Height = New Unit(0.5, UnitType.Inch)
pageHeader.Items.Add(New Telerik.Reporting.TextBox() With {
.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
Dim pageFooter As New Telerik.Reporting.PageFooterSection()
pageFooter.Height = New Unit(0.5, UnitType.Inch)
pageFooter.Items.Add(New Telerik.Reporting.TextBox() With {
.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
Dim htmlTextBox As New Telerik.Reporting.HtmlTextBox() With {
.Value = "<h1>Report Content</h1><p>This is the main content.</p>"
}
report.Items.Add(htmlTextBox)
Dim instanceReportSource As New Telerik.Reporting.InstanceReportSource()
instanceReportSource.ReportDocument = report
Dim reportProcessor As New ReportProcessor()
Dim result = reportProcessor.RenderReport("PDF", instanceReportSource, Nothing)
Using fs As New FileStream("report_with_headers.pdf", FileMode.Create)
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length)
End Using
End Sub
End Class
Abordagem 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");
}
}
Imports IronPdf
Imports IronPdf.Rendering
Imports System
Class IronPdfExample
Shared Sub Main()
Dim renderer As New ChromePdfRenderer()
' Configure header and footer
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center'>Document Header</div>"
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
}
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Report Content</h1><p>This is the main content.</p>")
pdf.SaveAs("report_with_headers.pdf")
End Sub
End Class
O Relatórios da Telerik exige a criação de objetos PageHeaderSection e PageFooterSection, a configuração de medições Unit, a definição de propriedades Location e o gerenciamento de itens TextBox com coordenadas específicas. A abordagem do IronPDF, baseada em HTML, utiliza estilos CSS familiares e marcadores simples como {page} e {total-pages}.
Saiba mais sobre as opções de cabeçalho e rodapé na documentação de cabeçalhos e rodapés .
Referência de mapeamento da API de relatórios da Telerik para o IronPDF
Este mapeamento acelera a migração ao mostrar equivalentes diretos da API:
| Relatórios da Telerik | IronPDF |
|---|---|
Report classe |
ChromePdfRenderer |
ReportProcessor |
renderer.RenderHtmlAsPdf() |
ReportSource |
String ou arquivo HTML |
.trdp / .trdx arquivos |
Modelos HTML/CSS |
ReportParameter |
Interpolação de strings / Razor |
ReportDataSource |
vinculação de dados em C# |
RenderReport("PDF") |
RenderHtmlAsPdf() |
Export() |
pdf.SaveAs() |
TextBox item de relatório |
HTML <span>, <p>, <div> |
Table item de relatório |
HTML <table> |
PictureBox |
HTML <img> |
PageSettings |
RenderingOptions |
Problemas e soluções comuns em migrações
Problema 1: Definições de relatório (arquivos .trdp/.trdx)
O Telerik Reporting utiliza definições de relatório XML proprietárias que não podem ser convertidas diretamente.
Solução: Converter para modelos HTML abrindo o relatório no designer, documentando o layout, as vinculações de dados e a formatação e, em seguida, recriando-os como modelos HTML/CSS. Utilize o Razor para vinculação de dados em cenários complexos.
Problema 2: Vinculação da fonte de dados
O Telerik Reporting usa SqlDataSource e fontes de dados de objeto com vinculação de expressão.
Solução: Obter dados em C# e associá-los ao 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>";
Dim data = Await dbContext.Orders.ToListAsync()
Dim html = $"<table>{String.Join("", data.Select(Function(d) $"<tr><td>{d.Name}</td></tr>"))}</table>"
Problema 3: Parâmetros do relatório
O Telerik Reporting usa ReportParameter com interface de usuário de parâmetros integrada.
Solução: Passe os parâmetros diretamente para a geração do 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>";
}
Public Function GenerateReport(customerId As String, fromDate As DateTime) As String
Return $"<h1>Report for {customerId}</h1><p>From: {fromDate:d}</p>"
End Function
Edição 4: Recursos interativos
O Telerik Reporting oferece recursos de detalhamento, classificação e filtragem no visualizador.
Solução: O IronPDF gera PDFs estáticos. Para maior interatividade, mantenha os dados na sua interface web e gere o PDF quando o usuário clicar em "Exportar". Isso separa as responsabilidades entre a exploração interativa de dados e a geração do documento.
Lista de verificação para migração de relatórios da Telerik
Tarefas pré-migração
Audite seu código-fonte para identificar todos os usos do 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" .
Documente as fontes de dados e os parâmetros, faça capturas de tela dos layouts de relatório atuais para referência visual e identifique os componentes de relatório compartilhados que podem ser convertidos em modelos HTML reutilizáveis.
Tarefas de atualização de código
- Remova os pacotes NuGet da Telerik.
- Instale o pacote NuGet IronPDF
- Converter arquivos
.trdxem modelos HTML - Substitua
ReportProcessorporChromePdfRenderer - Atualize a vinculação de dados para interpolação de strings ou Razor.
- Converter cabeçalhos/rodapés em HTML usando
HtmlHeaderFooter - Adicionar inicialização de licença na inicialização
Testes pós-migração
Após a migração, verifique os seguintes aspectos:
- Compare visualmente a saída em PDF com os relatórios originais.
- Verificar a exatidão dos dados nos PDFs gerados
- Testar a paginação para documentos com várias páginas
- Verifique se os cabeçalhos/rodapés aparecem corretamente em todas as páginas.
- Realizar testes de desempenho para cenários de alto volume
Principais benefícios da migração para o IronPDF
A migração do Relatórios da Telerik para o IronPDF oferece diversas vantagens para equipes focadas na geração de PDFs:
Mecanismo de renderização Chromium moderno: O IronPDF usa o mesmo mecanismo de renderização do Google Chrome, garantindo que os PDFs sejam exibidos exatamente como o conteúdo aparece nos navegadores modernos. O suporte completo a CSS3 e JavaScript significa que seus designs da web são convertidos diretamente para PDF.
Licenciamento simplificado: o IronPDF oferece licenciamento por desenvolvedor sem exigir a compra de um pacote completo. Para equipes que precisam apenas da geração de PDFs, isso representa uma economia significativa de custos.
Tecnologias Web padrão: HTML, CSS e JavaScript são habilidades que todo desenvolvedor web possui. Sem formatos de modelos proprietários ou ferramentas de design especializadas para aprender.
Implantação com menor impacto: Sem a infraestrutura de serviço de relatórios e componentes de design, as implantações são mais simples e rápidas.
Desenvolvimento ativo: À medida que a adoção do .NET 10 e do C# 14 aumenta até 2026, as atualizações regulares do IronPDF garantem a compatibilidade com as versões atuais e futuras do .NET .

