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

Criar um visualizador de PDF em ASP.NET Core MVC | Tutorial

Crie um visualizador de PDF ASP.NET Core MVC usando o mecanismo de renderização baseado no Chrome do IronPDF para exibir arquivos PDF diretamente nos navegadores, gerar PDFs dinâmicos a partir de conteúdo HTML e controlar se os usuários visualizam ou baixam os documentos — tudo isso sem plugins ou dependências externas.

Os navegadores modernos incluem um visualizador de PDF integrado que é ativado automaticamente quando um aplicativo da web fornece arquivos PDF com o tipo MIME correto. Isso elimina a necessidade de ferramentas ou plugins de terceiros, permitindo que os usuários visualizem documentos PDF diretamente em seus navegadores. IronPDF , uma biblioteca .NET para PDF com um mecanismo de renderização baseado no Chrome, facilita a geração, renderização e exibição de arquivos PDF em aplicações ASP.NET Core MVC.

!{--010011000100100101000010010100100100000101010010010110010101111101000111010001010101010100010111110101001101010100010000010101001001010100010001010100010001011111010101110100100 101010100010010000101111101010000010100100111101000100010101010100001101010100010111110101010001010010010010010010010100000101001100010111110100001001001100010011110100001101001011--}

Como instalar o IronPDF em um projeto ASP.NET Core MVC?

Antes de criar um visualizador de PDF em ASP.NET Core MVC, você precisa adicionar o IronPDF ao seu projeto. A maneira mais rápida é através do Gerenciador de Pacotes NuGet no Visual Studio, ou via linha de comando usando a CLI do .NET ou o Console do Gerenciador de Pacotes.

Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
SHELL

Depois que o pacote estiver instalado, adicione o namespace IronPdf aos seus arquivos de controlador e você estará pronto para começar a gerar e servir documentos PDF. O IronPDF é compatível com .NET 8 e .NET 10, portanto, funciona com as versões mais recentes do ASP.NET Core sem qualquer configuração adicional.

Para projetos que exigem instalação offline ou fixação de versão específica, você também pode baixar o pacote NuGet diretamente e adicioná-lo como um feed local. A página de licenciamento do IronPDF aborda as opções de licença de avaliação e de produção, caso você precise delas antes de entrar em operação.

Como os navegadores modernos exibem arquivos PDF?

Navegadores modernos como Chrome, Firefox, Edge e Safari incluem funcionalidade nativa de visualização de PDF. Quando sua aplicação ASP.NET Core retorna um arquivo com o tipo de conteúdo application/pdf, o navegador renderiza o documento PDF embutido sem exigir o Adobe Acrobat ou plugins externos. Este visualizador de PDF integrado oferece suporte à seleção de texto, impressão, controles de zoom, marcadores e navegação de página, criando uma experiência de visualização de documentos que os usuários já conhecem.

Para disponibilizar arquivos existentes de forma segura, a melhor prática é usar o ambiente de hospedagem para localizá-los, em vez de depender de caminhos de diretório que podem mudar entre os ambientes de desenvolvimento e produção. Utilizar um fluxo de arquivos também é mais eficiente em termos de memória do que carregar matrizes de bytes inteiras para documentos grandes.

using Microsoft.AspNetCore.Mvc;

public class DocumentController : Controller
{
    public IActionResult ViewPdf()
    {
        // Path to an existing PDF file in the wwwroot folder
        string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf");
        byte[] fileBytes = System.IO.File.ReadAllBytes(path);
        // Return file for inline browser display
        return File(fileBytes, "application/pdf");
    }
}
using Microsoft.AspNetCore.Mvc;

public class DocumentController : Controller
{
    public IActionResult ViewPdf()
    {
        // Path to an existing PDF file in the wwwroot folder
        string path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf");
        byte[] fileBytes = System.IO.File.ReadAllBytes(path);
        // Return file for inline browser display
        return File(fileBytes, "application/pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc

Public Class DocumentController
    Inherits Controller

    Public Function ViewPdf() As IActionResult
        ' Path to an existing PDF file in the wwwroot folder
        Dim path As String = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "documents", "sample.pdf")
        Dim fileBytes As Byte() = System.IO.File.ReadAllBytes(path)
        ' Return file for inline browser display
        Return File(fileBytes, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Qual é a aparência de um PDF quando exibido no navegador?

Um documento PDF sobre 'O que é um PDF?' exibido em um navegador web em localhost:7162/Pdf/ViewPdf, mostrando conteúdo de texto formatado em uma interface de visualizador de PDF com controles de zoom e opções de navegação

O código acima lê um arquivo PDF existente do servidor e o retorna para o navegador. O método File() aceita um array de bytes e um tipo de conteúdo, instruindo o visualizador de documentos do navegador a renderizar o conteúdo embutido. Esta abordagem funciona em todos os navegadores modernos, tanto em desktops quanto em dispositivos móveis, proporcionando uma experiência consistente para todos os usuários.

Para cenários mais avançados, você pode carregar PDFs da memória ou do Armazenamento de Blobs do Azure , o que pode melhorar a escalabilidade e reduzir os requisitos de armazenamento do servidor. A documentação da Microsoft sobre como servir arquivos estáticos no ASP.NET Core aborda as melhores práticas para o tratamento de arquivos em produção.

Como gerar documentos PDF dinamicamente em ASP.NET Core?

Arquivos PDF estáticos são úteis, mas muitas aplicações web exigem documentos gerados dinamicamente sob medida para o usuário ou solicitação atuais. A classe ChromePdfRenderer do IronPDF converte conteúdo HTML em arquivos PDF renderizados profissionalmente usando um mecanismo real de navegador Chromium nos bastidores.

Você pode incluir recursos externos, como CSS para seu tema específico ou JavaScript para gráficos , diretamente na string HTML. O mecanismo de renderização é compatível com os padrões modernos da web, incluindo CSS3, JavaScript ES6+ e fontes da web , de modo que o PDF gerado fica exatamente como o navegador renderizaria a mesma página HTML.

using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    public IActionResult GenerateReport()
    {
        var renderer = new ChromePdfRenderer();
        // HTML content with CSS styling
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1 { color: #2c3e50; }
                    .report-body { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Monthly Sales Report</h1>
                <div class='report-body'>
                    <p>Generated: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
                    <p>This report contains the latest sales figures.</p>
                </div>
            </body>
            </html>";

        PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class ReportController : Controller
{
    public IActionResult GenerateReport()
    {
        var renderer = new ChromePdfRenderer();
        // HTML content with CSS styling
        string html = @"
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1 { color: #2c3e50; }
                    .report-body { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Monthly Sales Report</h1>
                <div class='report-body'>
                    <p>Generated: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
                    <p>This report contains the latest sales figures.</p>
                </div>
            </body>
            </html>";

        PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
        return File(pdf.BinaryData, "application/pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Public Class ReportController
    Inherits Controller

    Public Function GenerateReport() As IActionResult
        Dim renderer As New ChromePdfRenderer()
        ' HTML content with CSS styling
        Dim html As String = "
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; padding: 40px; }
                    h1 { color: #2c3e50; }
                    .report-body { line-height: 1.6; }
                </style>
            </head>
            <body>
                <h1>Monthly Sales Report</h1>
                <div class='report-body'>
                    <p>Generated: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
                    <p>This report contains the latest sales figures.</p>
                </div>
            </body>
            </html>"

        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
        Return File(pdf.BinaryData, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Como o conteúdo HTML aparece após a geração do PDF?

Visualizador de PDF exibindo um Relatório de Vendas Mensal com texto de cabeçalho formatado e data de geração, demonstrando a conversão de HTML para PDF com estilos CSS personalizados aplicados através do IronPDF

Este exemplo demonstra como o IronPDF transforma uma string HTML em um documento PDF . O ChromePdfRenderer usa um mecanismo baseado em Chromium, garantindo renderização CSS precisa e suporte a JavaScript. O PDF gerado mantém toda a formatação definida no HTML, tornando-o ideal para a criação de relatórios , faturas e outros documentos que exigem formatação consistente.

Para exemplos de código adicionais sobre conversão de HTML para PDF , explore a documentação do IronPDF. Você também pode gerar PDFs a partir de visualizações CSHTML Razor , URLs ou até mesmo conteúdo Markdown .

Como controlar a exibição embutida versus o download do arquivo?

Às vezes, os usuários precisam baixar arquivos PDF em vez de visualizá-los no navegador. A maneira como o navegador lida com a resposta depende do cabeçalho Content-Disposition. Compreender essa distinção é importante para proporcionar a experiência adequada em seu aplicativo.

Quando você omite o parâmetro de nome de arquivo no método File(), o ASP.NET Core não define um cabeçalho Content-Disposition, então o navegador usa seu comportamento padrão -- que é tipicamente exibição embutida. Quando você fornece um nome de arquivo como o terceiro parâmetro, o ASP.NET Core adiciona automaticamente Content-Disposition: attachment, solicitando aos usuários que salvem o arquivo em vez disso.

using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    public IActionResult DisplayInline()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
        // Display PDF inline in browser -- no filename = inline
        return File(pdf.BinaryData, "application/pdf");
    }

    public IActionResult DownloadPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.EnableJavaScript = true;

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
        // Prompt download with specified filename
        return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;

public class PdfController : Controller
{
    public IActionResult DisplayInline()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
        // Display PDF inline in browser -- no filename = inline
        return File(pdf.BinaryData, "application/pdf");
    }

    public IActionResult DownloadPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.EnableJavaScript = true;

        PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
        // Prompt download with specified filename
        return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc

Public Class PdfController
    Inherits Controller

    Public Function DisplayInline() As IActionResult
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
        renderer.RenderingOptions.MarginTop = 25
        renderer.RenderingOptions.MarginBottom = 25

        Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
        ' Display PDF inline in browser -- no filename = inline
        Return File(pdf.BinaryData, "application/pdf")
    End Function

    Public Function DownloadPdf() As IActionResult
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter
        renderer.RenderingOptions.EnableJavaScript = True

        Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
        ' Prompt download with specified filename
        Return File(pdf.BinaryData, "application/pdf", "webpage-report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Quando você deve usar a exibição embutida em vez do download?

Captura de tela mostrando a página principal da Wikipédia convertida para formato PDF e exibida embutida em uma janela do navegador com controles do visualizador de PDF, incluindo zoom, navegação de página e opções de impressão

A diferença entre as duas ações do controlador se resume a esse terceiro parâmetro em File(). Essa flexibilidade permite que seu aplicativo suporte ambos os cenários, com base nas necessidades do usuário ou nos requisitos de negócios. Para um controle aprimorado, você também pode definir cabeçalhos HTTP personalizados ou configurar o tamanho e a orientação do papel antes da renderização.

Algumas aplicações combinam ambas as abordagens: um endpoint de pré-visualização que exibe o PDF diretamente no conteúdo e um endpoint de download separado que aciona o salvamento do arquivo. Esse padrão oferece aos usuários visibilidade do documento antes que eles confirmem o download.

Como integrar o Razor Pages com a geração de PDFs?

As Razor Pages no ASP.NET Core MVC oferecem uma abordagem diferente para implementar um visualizador de PDF em .NET . O modelo de página pode gerar e retornar arquivos PDF usando a mesma funcionalidade do IronPDF disponível nos controladores MVC padrão. Esse padrão funciona bem para aplicações que já utilizam Razor Pages, pois mantém a lógica de geração de PDF localizada junto à página que a aciona.

O manipulador OnGet em uma Página Razor atua como uma ação de controlador -- ele recebe a solicitação, realiza o trabalho e retorna um resultado. Retornar um FileResult de um modelo de página é suportado pelo ASP.NET Core e funciona da mesma forma que retornar File() de um controlador.

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

public class InvoiceModel : PageModel
{
    public IActionResult OnGet(int id)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;

        // Add header and footer
        renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document";
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.TextFooter.FontSize = 10;

        string html = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
                    h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
                    .invoice-details {{ margin: 20px 0; }}
                    table {{ width: 100%; border-collapse: collapse; }}
                    th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
                </style>
            </head>
            <body>
                <h1>Invoice #{id}</h1>
                <div class='invoice-details'>
                    <p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
                    <p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
                </div>
                <table>
                    <tr><th>Description</th><th>Amount</th></tr>
                    <tr><td>Professional Services</td><td>$1,500.00</td></tr>
                </table>
                <p style='margin-top: 40px;'>Thank you for your business!</p>
            </body>
            </html>";

        PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
        return File(pdf.BinaryData, "application/pdf");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;

public class InvoiceModel : PageModel
{
    public IActionResult OnGet(int id)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;

        // Add header and footer
        renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document";
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}";
        renderer.RenderingOptions.TextFooter.FontSize = 10;

        string html = $@"
            <html>
            <head>
                <style>
                    body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
                    h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
                    .invoice-details {{ margin: 20px 0; }}
                    table {{ width: 100%; border-collapse: collapse; }}
                    th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
                </style>
            </head>
            <body>
                <h1>Invoice #{id}</h1>
                <div class='invoice-details'>
                    <p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
                    <p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
                </div>
                <table>
                    <tr><th>Description</th><th>Amount</th></tr>
                    <tr><td>Professional Services</td><td>$1,500.00</td></tr>
                </table>
                <p style='margin-top: 40px;'>Thank you for your business!</p>
            </body>
            </html>";

        PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
        return File(pdf.BinaryData, "application/pdf");
    }
}
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages

Public Class InvoiceModel
    Inherits PageModel

    Public Function OnGet(id As Integer) As IActionResult
        Dim renderer = New ChromePdfRenderer()
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4

        ' Add header and footer
        renderer.RenderingOptions.TextHeader.CenterText = "Invoice Document"
        renderer.RenderingOptions.TextFooter.RightText = "Page {page} of {total-pages}"
        renderer.RenderingOptions.TextFooter.FontSize = 10

        Dim html As String = $"
            <html>
            <head>
                <style>
                    body {{ font-family: 'Segoe UI', Arial, sans-serif; padding: 40px; }}
                    h1 {{ color: #1a5490; border-bottom: 2px solid #1a5490; padding-bottom: 10px; }}
                    .invoice-details {{ margin: 20px 0; }}
                    table {{ width: 100%; border-collapse: collapse; }}
                    th, td {{ padding: 10px; text-align: left; border-bottom: 1px solid #ddd; }}
                </style>
            </head>
            <body>
                <h1>Invoice #{id}</h1>
                <div class='invoice-details'>
                    <p><strong>Date:</strong> {DateTime.Now:yyyy-MM-dd}</p>
                    <p><strong>Due Date:</strong> {DateTime.Now.AddDays(30):yyyy-MM-dd}</p>
                </div>
                <table>
                    <tr><th>Description</th><th>Amount</th></tr>
                    <tr><td>Professional Services</td><td>$1,500.00</td></tr>
                </table>
                <p style='margin-top: 40px;'>Thank you for your business!</p>
            </body>
            </html>"

        Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
        Return File(pdf.BinaryData, "application/pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Quais opções de renderização estão disponíveis para personalização de PDF?

Visualizador de PDF exibindo Fatura #20 com formatação profissional, incluindo cabeçalhos estilizados, informações de data de vencimento e uma mensagem de agradecimento em uma interface de navegador de tema escuro

Este exemplo de Páginas Razor demonstra como o manipulador OnGet gera um PDF a partir de um parâmetro de URL. A propriedade RenderingOptions permite controle granular sobre margens, orientação da página e outras configurações de layout. Você também pode adicionar cabeçalhos e rodapés , configurar números de página ou definir tamanhos de papel personalizados .

Recursos avançados disponíveis através de RenderingOptions incluem marca d'água, compressão de PDF, e assinaturas digitais. Para obter detalhes completos sobre todas as opções disponíveis, consulte a referência de opções de renderização do IronPDF .

Como você lida com a segurança e o controle de acesso a PDFs?

Muitas vezes, as aplicações de produção precisam restringir quem pode visualizar ou modificar um documento PDF. O IronPDF oferece suporte integrado para senhas e permissões de PDF , permitindo criptografar documentos, exigir uma senha para abri-los ou restringir a impressão e a cópia.

Você pode aplicar configurações de segurança a qualquer objeto PdfDocument antes de retorná-lo do seu controlador. Essa abordagem funciona independentemente de o PDF ter sido gerado a partir de HTML, carregado do disco ou recuperado de um banco de dados.

Opções comuns de segurança de PDF disponíveis no IronPDF
Recurso de segurança Propriedade IronPDF Caso de uso
Senha do proprietário `OwnerPassword` Impedir alterações de permissão não autorizadas
Senha do usuário `UserPassword` É necessário inserir uma senha para abrir o documento.
Desativar impressão `AllowUserPrinting` Impedir que os destinatários imprimam o arquivo.
Desativar cópia `AllowUserCopyPasteContent` Extração de texto em blocos de PDFs
Assinatura digital `PdfSignature` Verificar a autenticidade do documento

Para documentos sensíveis, como contratos, demonstrações financeiras ou registros médicos, combinar uma senha de usuário com permissões restritas oferece controle preciso sobre o que os destinatários podem fazer com o arquivo. O modo de conformidade com PDF/A é outra opção a ser considerada para cenários de arquivamento de longo prazo, nos quais a integridade do documento precisa ser preservada por décadas.

Como otimizar o desempenho da geração de PDFs?

A geração de PDFs envolve processamento de CPU e uso de memória, portanto o desempenho é importante em aplicações com alto tráfego de dados. A API de renderização assíncrona do IronPDF permite delegar a criação de PDFs para uma thread em segundo plano sem bloquear o fluxo de requisições. Isso é especialmente útil ao gerar vários PDFs em uma única requisição ou ao processar trabalhos em lote.

Para implantações em produção no Linux ou em contêineres Docker, o IronPDF oferece suporte à execução multiplataforma sem exigir dependências específicas do Windows. O guia de instalação do IronPDF para Linux e a referência de configuração do Docker cobrem as etapas de configuração. Tanto o projeto Mozilla PDF.js quanto os visualizadores nativos do navegador são compatíveis com qualquer PDF produzido IronPDF , oferecendo flexibilidade também na visualização.

Algumas práticas que melhoram a produtividade na produção:

  • Reutilize instâncias ChromePdfRenderer onde possível, em vez de criar uma nova por solicitação, já que a inicialização do mecanismo carrega algum custo.
  • Use métodos assíncronos como RenderHtmlAsPdfAsync para liberar o thread enquanto o motor Chromium renderiza.
  • Armazene em cache os PDFs gerados usando IMemoryCache ou um cache distribuído quando o mesmo documento for solicitado repetidamente.
  • Para documentos muito grandes, considere transmitir a saída em fluxo contínuo em vez de armazenar todo o array de bytes em buffer na memória.

Como funciona a renderização assíncrona na prática?

A API assíncrona espelha a versão síncrona, mas retorna um Task<PdfDocument>. Você aguarda o resultado dentro de uma ação de controlador async, mantendo o pool de threads livre para lidar com outras solicitações enquanto o processo de renderização continua. A mudança da renderização síncrona para a assíncrona em cenários de alta carga normalmente reduz a disputa por threads e melhora os tempos de resposta gerais sob carga simultânea.

Quais são os seus próximos passos?

Criar um visualizador de PDF em ASP.NET Core MVC combina os recursos de exibição nativos do navegador com os recursos de geração do IronPDF. O visualizador de PDF integrado nos navegadores modernos lida com a exibição, impressão e navegação automaticamente quando o seu controlador ASP.NET retorna arquivos com o tipo MIME correto. O IronPDF cuida da geração do documento, convertendo HTML, URLs ou arquivos existentes em documentos PDF bem formatados, com suporte completo para CSS, JavaScript, cabeçalhos, rodapés e configurações de segurança.

Principais funcionalidades abordadas neste guia:

  • Servindo arquivos PDF existentes embutidos usando o método File() com tipo MIME application/pdf
  • Gerando PDFs dinâmicos a partir de strings HTML usando ChromePdfRenderer
  • Controlando a exibição embutida versus o download de arquivos através do cabeçalho Content-Disposition
  • Adicionando cabeçalhos, rodapés, margens e configurações de segurança através de RenderingOptions
  • Utilizando Razor Pages como alternativa aos controladores MVC para geração de PDFs
  • Aplicar proteção por senha e restrições de permissão a documentos confidenciais.
  • Melhorando o desempenho com renderização assíncrona e cache de respostas

A partir daqui, você pode explorar fluxos de trabalho mais avançados, como mesclar vários PDFs , criar formulários preenchíveis ou gerar PDFs a partir de visualizações CSHTML Razor . A documentação do IronPDF abrange todos os recursos com exemplos de código funcionais.

Inicie seu teste gratuito para explorar todos os recursos do IronPDF ou adquira uma licença para uso em produção.

Perguntas frequentes

Como posso exibir arquivos PDF em aplicações ASP.NET Core MVC?

Você pode exibir arquivos PDF em aplicações ASP.NET Core MVC usando o IronPDF. Ele permite gerar, renderizar e exibir arquivos PDF diretamente no navegador, utilizando visualizadores de PDF modernos e integrados.

Preciso de plugins de terceiros para visualizar PDFs em um navegador?

Não, os navegadores modernos possuem visualizadores de PDF integrados que são ativados automaticamente ao exibir arquivos PDF com o tipo MIME correto. O IronPDF pode ajudar a garantir que seus PDFs sejam exibidos corretamente.

Qual a vantagem de usar o IronPDF no ASP.NET Core MVC?

IronPDF é uma biblioteca .NET para PDF que simplifica o processo de geração e renderização de documentos PDF em aplicações ASP.NET Core MVC, aumentando a produtividade e otimizando o gerenciamento de PDFs.

O IronPDF funciona com os visualizadores de PDF existentes nos navegadores?

Sim, o IronPDF funciona perfeitamente com os visualizadores de PDF existentes nos navegadores, garantindo que os PDFs sejam fornecidos com o tipo MIME correto para exibição automática no navegador.

O IronPDF é atualizado com frequência?

Sim, o IronPDF é uma biblioteca .NET para PDF que é atualizada frequentemente, oferecendo os recursos e melhorias mais recentes para o processamento de documentos PDF em aplicações ASP.NET Core MVC.

Como o IronPDF lida com a geração de PDFs em aplicações web?

O IronPDF oferece funcionalidades robustas para gerar PDFs a partir de diversos tipos de conteúdo, permitindo que os desenvolvedores criem documentos PDF dinâmicos e interativos em aplicações web.

Qual tipo MIME deve ser usado para servir arquivos PDF?

Para garantir a exibição correta nos navegadores, os arquivos PDF devem ser servidos com o tipo MIME 'application/pdf'. O IronPDF pode auxiliar no gerenciamento eficiente desse aspecto.

Posso personalizar a renderização de PDFs no IronPDF?

Sim, o IronPDF oferece amplas opções de personalização para renderização de PDFs, permitindo que você adapte a saída para atender a requisitos específicos de design e funcionalidade.

O IronPDF é compatível apenas com aplicações ASP.NET Core MVC?

Embora o IronPDF seja excelente para aplicações ASP.NET Core MVC, ele também é versátil e pode ser usado com outras aplicações .NET para lidar com funcionalidades de PDF.

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 de ferro

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