Ir para o conteúdo do rodapé
USANDO O IRONPDF

Como Criar Arquivos PDF em .NET Core com IronPDF

O problema com a exportação de dashboards

Página inicial do IronPDF Os painéis internos são projetados para serem visualizados em um navegador da web. No momento em que alguém precisa compartilhar algo fora desse contexto — seja uma apresentação para uma reunião do conselho, um resumo semanal de KPIs para a equipe de liderança ou um relatório de auditoria de conformidade — as coisas rapidamente desmoronam.

A impressão em PDF pelo navegador é a primeira coisa que as pessoas tentam e a primeira coisa que falha. As páginas são interrompidas e cortam os gráficos, as barras laterais de navegação invadem o layout e o PDF resultante não se parece em nada com o painel de controle em tempo real. As capturas de tela são piores: a resolução se degrada ao serem redimensionadas para A4, o texto não pode ser pesquisado e uma visualização de KPIs com várias seções raramente cabe em uma única imagem sem perder metade dos dados.

O problema mais profundo são os gráficos renderizados em JavaScript. Como Chart.js, ApexCharts e Highcharts desenham para um elemento HTML assíncronamente, uma captura nativa de HTML para PDF frequentemente captura uma lona vazia. O conteúdo HTML está presente no DOM, mas a visualização não. É aí que o IronPDF pode ajudar.

O resultado é que o desenvolvedor recebe um ícone de mensagem toda segunda-feira, solicitando que ele extraia e formate um relatório manualmente. Esse não é um fluxo de trabalho escalável. Hoje, vamos analisar um exemplo do IronPDF para ver como ele pode criar documentos PDF a partir de conteúdo HTML.

A solução: renderização de dashboards no servidor com IronPDF

O IronPDF transforma o mesmo HTML que alimenta seu painel de controle em um documento PDF com qualidade de imagem perfeita. O usuário clica em um botão "Exportar para PDF" (talvez marcado com uma chave em um círculo azul ou uma chave azul em um círculo), um endpoint da API lida com a lógica de conversão do HTML e o navegador baixa o conteúdo do PDF.

Não há nenhum componente auxiliar do Puppeteer para implantar, nenhum binário wkhtmltopdf para gerenciar e nenhuma API de exportação de terceiros para pagar e monitorar. O IronPDF funciona dentro da sua aplicação ASP.NET existente como uma biblioteca NuGet em C# para tarefas de PDF. Ele incorpora um mecanismo Chromium que executa JavaScript da mesma forma que um navegador real, o que significa que o Chart.js e o ApexCharts são renderizados corretamente, porque são executados antes da página ser capturada.

O botão de exportação se torna um recurso de autoatendimento que qualquer usuário corporativo pode operar, sem a necessidade de envolver um desenvolvedor.

Como funciona na prática

1. O usuário clica em "Exportar para PDF"

Uma chamada padrão de busca em JavaScript na página do painel envia os filtros ativos do usuário e o intervalo de datas para um endpoint de API, para ajudar a criar um documento PDF:

document.getElementById('export-btn').addEventListener('click', async () => {
    const params = new URLSearchParams({ from: dateFrom, to: dateTo, region: selectedRegion });
    const response = await fetch(`/api/reports/export?${params}`);
    const blob = await response.blob();
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'dashboard-report.pdf';
    a.click();
});
document.getElementById('export-btn').addEventListener('click', async () => {
    const params = new URLSearchParams({ from: dateFrom, to: dateTo, region: selectedRegion });
    const response = await fetch(`/api/reports/export?${params}`);
    const blob = await response.blob();
    const url = URL.createObjectURL(blob);
    const a = document.createElement('a');
    a.href = url;
    a.download = 'dashboard-report.pdf';
    a.click();
});
JAVASCRIPT

Botão com nosso código JavaScript

Botão que usa nosso código JavaScript Sem recarregamento de página, sem redirecionamento, apenas um download de arquivo acionado a partir da visualização atual do painel.

2. O servidor cria o conteúdo HTML do painel de controle.

A camada de controlador ou serviço consulta os mesmos dados que o usuário vê na tela e preenche um modelo HTML — seja uma visualização Razor renderizada ou uma string HTML construída — com cartões de KPIs, tabelas de dados e o JSON de configuração do gráfico que o Chart.js ou o ApexCharts executarão.

O HTML pode referenciar a folha de estilo da sua marca, incluir o logotipo do Iron Software ou usar os logotipos dos clientes do Iron Software. Também pode incluir regras CSS de impressão com o atributo @media para suprimir elementos de navegação e controlar quebras de página.

Arquivo de controlador de exemplo

Arquivo de controlador de exemplo

3. O ChromePdfRenderer renderiza o arquivo HTML ou o conteúdo com o JavaScript ativado.

É aqui que o IronPDF resolve a parte difícil. EnableJavaScript = true instrui o renderizador a executar scripts antes da captura. WaitFor.NetworkIdle0() mantém o snapshot ativo até que todos os recursos assíncronos, incluindo os dados do gráfico carregados via fetch, estejam estabilizados.

Após instalar o IronPDF através da DLL de PDF em C#, você pode usar o seguinte código:

using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.EnableJavaScript = true;

renderer.RenderingOptions.WaitFor.NetworkIdle0();

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

var pdf = renderer.RenderHtmlAsPdf(dashboardHtml);
using IronPdf;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.EnableJavaScript = true;

renderer.RenderingOptions.WaitFor.NetworkIdle0();

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

renderer.RenderingOptions.MarginTop = 15;

renderer.RenderingOptions.MarginBottom = 15;

var pdf = renderer.RenderHtmlAsPdf(dashboardHtml);
Imports IronPdf
Imports IronPdf.Rendering

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.EnableJavaScript = True

renderer.RenderingOptions.WaitFor.NetworkIdle0()

renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

renderer.RenderingOptions.MarginTop = 15

renderer.RenderingOptions.MarginBottom = 15

Dim pdf = renderer.RenderHtmlAsPdf(dashboardHtml)
$vbLabelText   $csharpLabel

Para dashboards onde os gráficos são inicializados por um temporizador em vez de uma solicitação de rede, substitua NetworkIdle0() por WaitFor. JavaScript() e sinalize a prontidão dentro do retorno de chamada onComplete do seu gráfico. Qualquer uma das estratégias garante que a biblioteca PDF do C# capture o gráfico depois de terminar de desenhá-lo, e não antes.

PontasDefina CssMediaType como Print para aplicar suas regras de folha de estilo @media print. Isso permite ocultar barras laterais, barras de navegação e botões de ação do PDF exportado sem modificar o HTML do painel de controle em tempo real.

4. O controlador retorna o documento PDF como um arquivo para download.

O endpoint da API encapsula o conteúdo do PDF em um FileContentResult. Seja você membro de uma associação de PDF ou usuário da rede de parceiros da AWS, a entrega é perfeita:

[HttpGet("api/reports/export")]

public IActionResult ExportDashboard([FromQuery] ReportFilters filters)

{

    var dashboardHtml = _reportService.BuildDashboardHtml(filters);

    var renderer = new ChromePdfRenderer();

    renderer.RenderingOptions.EnableJavaScript = true;

    renderer.RenderingOptions.WaitFor.NetworkIdle0();

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    PdfDocument report = renderer.RenderHtmlAsPdf(dashboardHtml);

    return File(

        report.BinaryData,

        "application/pdf",

        $"KPI-Report-{filters.From:yyyyMMdd}.pdf"

    );

}
[HttpGet("api/reports/export")]

public IActionResult ExportDashboard([FromQuery] ReportFilters filters)

{

    var dashboardHtml = _reportService.BuildDashboardHtml(filters);

    var renderer = new ChromePdfRenderer();

    renderer.RenderingOptions.EnableJavaScript = true;

    renderer.RenderingOptions.WaitFor.NetworkIdle0();

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    PdfDocument report = renderer.RenderHtmlAsPdf(dashboardHtml);

    return File(

        report.BinaryData,

        "application/pdf",

        $"KPI-Report-{filters.From:yyyyMMdd}.pdf"

    );

}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<HttpGet("api/reports/export")>
Public Function ExportDashboard(<FromQuery> filters As ReportFilters) As IActionResult

    Dim dashboardHtml = _reportService.BuildDashboardHtml(filters)

    Dim renderer = New ChromePdfRenderer()

    renderer.RenderingOptions.EnableJavaScript = True

    renderer.RenderingOptions.WaitFor.NetworkIdle0()

    renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

    Dim report As PdfDocument = renderer.RenderHtmlAsPdf(dashboardHtml)

    Return File(report.BinaryData, "application/pdf", $"KPI-Report-{filters.From:yyyyMMdd}.pdf")

End Function
$vbLabelText   $csharpLabel

O atributo Content-Disposition: attachment é definido automaticamente pela função File() com um nome de arquivo, de forma que o navegador inicie o download em vez de abrir o PDF em uma nova aba.

Arquivo PDF baixado

Relatório PDF gerado com código de exemplo do IronPDF

5. Opcional: Distribuição programada de relatórios

A mesma chamada de renderização pode ser executada em segundo plano, em uma tarefa recorrente do Hangfire ou em um serviço hospedado (IHostedService), que gera o PDF semanal de KPIs toda segunda-feira de manhã e o envia por e-mail para a lista de distribuição da liderança. Nenhuma interação do usuário é necessária.

Benefícios no mundo real

Autosserviço para usuários corporativos. Assim que o botão de exportação estiver ativo, as mensagens do Slack do tipo "você pode gerar um relatório para mim?" cessarão. Qualquer usuário com acesso ao painel poderá baixar seu próprio PDF sem precisar fazer uma solicitação.

Fidelidade dos gráficos. Como o Chromium executa o JavaScript dentro do IronPDF, os gráficos do Chart.js, ApexCharts e Highcharts são renderizados no PDF exatamente como aparecem na tela — incluindo cores, dicas de ferramentas renderizadas como rótulos estáticos e dimensionamento responsivo.

Consistência da marca. Todos os relatórios exportados incluem o logotipo da empresa, a paleta de cores e a tipografia definidas na folha de estilo do painel. Não há etapa de reformatação entre a exportação e a distribuição.

Geração agendada. Combine a chamada de renderização com uma tarefa em segundo plano para enviar PDFs semanais ou mensais aos stakeholders automaticamente por e-mail. A liderança recebe um relatório impecável sem que ninguém o tenha gerado manualmente.

Sem dependências externas. O IronPDF é executado no mesmo processo. Não há nenhum processo Puppeteer Node.js para manter ativo, nenhum binário wkhtmltopdf para incluir em cada plataforma e nenhuma API de exportação SaaS com limites de taxa ou preços por documento.

Layout otimizado para impressão. O CssMediaType.Print aplica suas regras de impressão @media no momento da renderização, permitindo que você defina um layout limpo e específico para exportação em CSS sem precisar manter um modelo HTML separado.

Encerramento

Adicionar um botão "Exportar para PDF" a um painel de administração parece ser um recurso pequeno. Na prática, elimina uma tarefa manual recorrente, oferece aos usuários não técnicos uma funcionalidade que eles vêm contornando há anos e produz um documento que reflete a aparência real dos dados, em vez de uma aproximação defeituosa da caixa de diálogo de impressão.

O IronPDF lida com a complexidade da renderização — execução de JavaScript , tipos de mídia CSS, captura de gráficos — portanto, a implementação do seu lado consiste em uma ação de controlador e um modelo HTML. Se você quiser testá-lo em seu próprio painel, um teste gratuito de 30 dias com todos os recursos e sem marcas d'água está disponível em IronPDF .

Perguntas frequentes

Qual é o principal propósito do IronPDF em painéis administrativos?

O IronPDF permite aos usuários exportar painéis administrativos dinâmicos para PDF com um único clique, simplificando o processo de compartilhamento e preservação dos dados do painel.

Como o IronPDF melhora o processo de exportação para painéis administrativos?

O IronPDF aprimora o processo de exportação convertendo conteúdo de painel complexo e dinâmico diretamente em formato PDF, garantindo que todos os elementos visuais e dados sejam mantidos com precisão.

O IronPDF pode lidar com conteúdo dinâmico ao exportar para PDF?

Sim, o IronPDF é projetado para lidar eficientemente com conteúdo dinâmico, garantindo que qualquer atualização ou mudança no painel seja refletida com precisão no PDF exportado.

É possível personalizar as configurações de exportação para PDF usando o IronPDF?

O IronPDF fornece várias opções de personalização para exportações de PDF, permitindo que os usuários ajustem a saída para atender a requisitos específicos, como ajuste de tamanho de página, orientação e margens.

Qual linguagem de programação é suportada pelo IronPDF para exportar painéis?

O IronPDF suporta C# para exportar painéis para PDF, tornando-se uma escolha ideal para desenvolvedores que trabalham dentro do framework .NET.

O IronPDF mantém o layout do painel administrativo no PDF?

O IronPDF garante que o layout do painel administrativo seja preservado no PDF exportado, mantendo a integridade e aparência do conteúdo original.

Quais são os benefícios de usar o IronPDF para exportar painéis em comparação com outros métodos?

O IronPDF oferece um processo de exportação simplificado, de um clique, que mantém alta qualidade de saída, suporta conteúdo dinâmico e integra-se perfeitamente com C#, proporcionando vantagens significativas sobre métodos de exportação manual.

O IronPDF pode exportar painéis com elementos interativos para PDF?

Embora o IronPDF se destaque na exportação de conteúdo estático e dinâmico, elementos interativos como gráficos ao vivo podem exigir tratamento adicional para serem representados com precisão em formato PDF.

O IronPDF é adequado para exportações de painéis em nível empresarial?

Sim, o IronPDF é bem adequado para aplicações em nível empresarial, oferecendo desempenho robusto e confiabilidade para exportar painéis complexos e ricos em dados para PDF.

Quão fácil é integrar o IronPDF em projetos C# existentes?

Integrar o IronPDF em projetos C# existentes é direto, graças à sua documentação abrangente e suporte, permitindo que os desenvolvedores adicionem rapidamente funcionalidade de exportação para PDF em seus aplicativos.

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 ...

Leia mais

Equipe de Suporte Iron

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim