Como converter CSHTML para PDF usando Razor sem interface gráfica em C# | IronPDF

Como converter Razor Views em PDFs sem interface gráfica em C

This article was translated from English: Does it need improvement?
Translated
View the article in English

Converta Views Razor em PDFs em C# usando Razor para transformar arquivos cshtml em HTML e, em seguida, use o método RenderHtmlAsPdf do IronPDF para converter PDF sem a necessidade de uma GUI ou janela do navegador.

A renderização headless processa conteúdo da web sem uma interface gráfica de usuário. Embora o IronPDF .Extensions.Razor seja útil, ele não possui recursos de renderização sem interface gráfica. Este guia visa preencher essa lacuna.

Usaremos o Razor para converter cshtml em HTML e, em seguida, o IronPDF para gerar PDFs.

Início Rápido: Converter Visualizações Razor para PDF em Segundos

Transforme visualizações do Razor em PDFs com a conversão headless do IronPDF. Use IronPdf.HtmlToPdf.StaticRender.RenderHtmlAsPdf para renderizar HTML de Razor Views em PDFs. Essa abordagem funciona perfeitamente em ambientes ASP.NET Core .

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    var html = await RazorTemplateEngine.RenderAsync("Views/Template.cshtml", model); 
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs("output.pdf");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Instale o Razor para converter Views Razor em HTML em aplicativos Web ASP.NET Core .

# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
# Install the Razor.Templating.Core package using NuGet Package Manager
Install-Package Razor.Templating.Core
SHELL

Como configuro meu projeto ASP.NET Core para conversão de Razor para PDF?

Você precisa de um projeto de aplicativo Web ASP.NET Core (Model-View-Controller) para converter Views em PDFs. A configuração envolve a criação de um projeto no Visual Studio, a instalação de pacotes NuGet e a configuração da estrutura do projeto. Para técnicas semelhantes, consulte Converter CSHTML para PDF no MVC Core ou Converter CSHTML para PDF usando Razor Pages .

Por que preciso do Razor em vez do IronPDF ?

O Razor oferece renderização verdadeiramente headless — convertendo Views do Razor em HTML sem um contexto web ou janela do navegador. Isso é adequado para serviços em segundo plano, aplicativos de console ou ambientes sem interface gráfica. IronPdf.Extensions. O Razor requer um contexto web para funcionar.

Qual o tipo de projeto mais adequado para geração de PDFs sem interface gráfica?

Os projetos de aplicativos Web ASP.NET Core (Model-View-Controller) fornecem a infraestrutura Razor View necessária com opções de implantação flexíveis. Utilize essa abordagem em serviços em segundo plano, Funções do Azure ou aplicativos de console. Consulte a seção sobre como implantar o IronPDF no Azure para geração baseada em nuvem.

Como faço para instalar os pacotes NuGet necessários?

Instale pacotes usando o Gerenciador de Pacotes NuGet . Você precisa do IronPDF e do Razor.Templating.Core:

// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
// Install via Package Manager Console
Install-Package IronPdf
Install-Package Razor.Templating.Core

// Or add to your .csproj file
// <PackageReference Include="IronPdf" Version="2024.x.x" />
// <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
' Install via Package Manager Console
' Install-Package IronPdf
' Install-Package Razor.Templating.Core

' Or add to your .vbproj file
' <PackageReference Include="IronPdf" Version="2024.x.x" />
' <PackageReference Include="Razor.Templating.Core" Version="1.x.x" />
$vbLabelText   $csharpLabel

Como faço para criar e configurar uma Razor View para geração de PDF?

  • Clique com o botão direito do mouse na pasta "Início". Selecione "adicionar" e depois "Adicionar vista".
  • Crie uma Razor View vazia chamada "Data.cshtml".

 related to Como faço para criar e configurar uma Razor View para geração de PDF?

Que conteúdo HTML devo adicionar à minha view Razor ?

Adicione o HTML que você deseja renderizar como PDF:

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    <tr>
        <td>John Doe</td>
        <td>Software Engineer</td>
        <td>Experienced software engineer specializing in web development.</td>
    </tr>
    <tr>
        <td>Alice Smith</td>
        <td>Project Manager</td>
        <td>Seasoned project manager with expertise in agile methodologies.</td>
    </tr>
    <tr>
        <td>Michael Johnson</td>
        <td>Data Analyst</td>
        <td>Skilled data analyst proficient in statistical analysis and data visualization.</td>
    </tr>
</table>
HTML

Para layouts complexos, utilize CSS e estilos de impressão para garantir uma renderização perfeita em PDF. O IronPDF oferece suporte a recursos modernos de CSS3 para layouts de documentos sofisticados.

Por que usar tabelas para exibir dados em PDF?

As tabelas fornecem informações estruturadas e organizadas que se traduzem bem em documentos impressos. Mantêm uma formatação consistente em todas as plataformas e são legíveis em formato PDF. O mecanismo de renderização do IronPDF lida bem com layouts de tabelas, preservando bordas, espaçamento e alinhamento. Para formatação avançada, explore as margens personalizadas para otimizar o layout.

Quais são as considerações de estilo comuns para a saída em PDF?

Para saída em PDF, utilize consultas de mídia CSS específicas para impressão, valores de pixel fixos em vez de unidades relativas e fontes incorporadas para uma renderização consistente. O IronPDF suporta fontes da web e fontes de ícones para garantir a consistência da marca. Considere quebras de página para documentos com várias páginas e margens adequadas para uma aparência profissional.

Como configuro o arquivo Program.cs para renderização de PDF sem interface gráfica?

No arquivo "Program.cs", adicione este código. Ele usa RenderAsync de Razor para converter Razor Views em HTML, então instancia ChromePdfRenderer e passa o HTML para RenderHtmlAsPdf. Use RenderingOptions para texto personalizado, cabeçalhos, rodapés, margens e números de página.

app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
app.MapGet("/PrintPdf", async () =>
{
    // Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01";

    // Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

    // Render the Razor view to an HTML string
    string html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");

    // Create a new instance of ChromePdfRenderer 
    ChromePdfRenderer renderer = new ChromePdfRenderer();

    // Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4;
    renderer.RenderingOptions.MarginTop = 25;
    renderer.RenderingOptions.MarginBottom = 25;
    renderer.RenderingOptions.MarginLeft = 20;
    renderer.RenderingOptions.MarginRight = 20;

    // Render the HTML string as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");

    // Return the PDF file as a response
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
});
Imports IronPdf
Imports Microsoft.AspNetCore.Builder

app.MapGet("/PrintPdf", Async Function()
    ' Set your IronPDF license key
    IronPdf.License.LicenseKey = "IRONPDF-MYLICENSE-KEY-1EF01"

    ' Enable detailed logging for troubleshooting
    IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All

    ' Render the Razor view to an HTML string
    Dim html As String = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")

    ' Create a new instance of ChromePdfRenderer 
    Dim renderer As New ChromePdfRenderer()

    ' Configure rendering options for professional output
    renderer.RenderingOptions.PaperSize = IronPdf.PdfPaperSize.A4
    renderer.RenderingOptions.MarginTop = 25
    renderer.RenderingOptions.MarginBottom = 25
    renderer.RenderingOptions.MarginLeft = 20
    renderer.RenderingOptions.MarginRight = 20

    ' Render the HTML string as a PDF document
    Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html, "./wwwroot")

    ' Return the PDF file as a response
    Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
End Function)
$vbLabelText   $csharpLabel

Quais opções de renderização posso aplicar aos meus PDFs?

O IronPDF oferece diversas opções de renderização. Adicione cabeçalhos e rodapés , defina tamanhos de papel personalizados , controle a orientação da página e adicione marcas d'água . ChromePdfRenderer oferece mais de 50 propriedades para personalizar a geração de PDFs.

Como lidar com erros durante a geração de PDFs?

Implementar tratamento de erros para geração robusta de PDFs:

try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
try
{
    var html = await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml");
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot");
    return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf");
}
catch (Exception ex)
{
    // Log the error details
    IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}");
    return Results.Problem("Failed to generate PDF", statusCode: 500);
}
Imports IronPdf
Imports System.Threading.Tasks

Public Class PdfGenerator
    Public Shared Async Function GeneratePdfAsync() As Task(Of IResult)
        Try
            Dim html = Await RazorTemplateEngine.RenderAsync("Views/Home/Data.cshtml")
            Dim renderer = New ChromePdfRenderer()
            Dim pdf = renderer.RenderHtmlAsPdf(html, "./wwwroot")
            Return Results.File(pdf.BinaryData, "application/pdf", "razorViewToPdf.pdf")
        Catch ex As Exception
            ' Log the error details
            IronPdf.Logging.Logger.Log($"PDF generation failed: {ex.Message}")
            Return Results.Problem("Failed to generate PDF", statusCode:=500)
        End Try
    End Function
End Class
$vbLabelText   $csharpLabel

Quando devo ativar o registro detalhado?

Ative o registro detalhado durante o desenvolvimento e a resolução de problemas. O sistema de registro de logs do IronPDF fornece informações sobre a renderização, ajudando a identificar problemas de análise HTML, carregamento de recursos ou configuração. Para produção, utilize o registro personalizado para integrar com a infraestrutura de registro do seu aplicativo.

Navegue até Views > Shared > "_Layout.cshtml". Nas tags de link, altere "~/" para "./" porque "~/" não funciona bem com o IronPDF.

Que outros problemas relacionados ao percurso devo observar?

Além da questão do caminho com til (~), certifique-se de que as fontes de imagem usem caminhos absolutos ou referências relativas adequadas. Para recursos externos, utilize URLs base para garantir que os arquivos sejam carregados corretamente. Para imagens do Armazenamento de Blobs do Azure, consulte Incorporando imagens do Armazenamento de Blobs do Azure .

Como os recursos estáticos afetam a geração de PDFs?

Os recursos estáticos (CSS, JavaScript, imagens) afetam o desempenho e a qualidade da geração de PDFs. Garanta que os recursos estejam acessíveis durante a renderização, use imagens otimizadas e considere incorporar o CSS crítico diretamente no código para uma renderização mais rápida. Saiba mais sobre atrasos e tempos limite de renderização para conteúdo com uso intensivo de JavaScript.

Como faço para testar minha geração de PDF sem interface gráfica?

Execute o projeto para gerar um documento PDF.

Visual Studio showing running ASP.NET Core MVC app with Program.cs open and successful debug output

PDF de saída

Qual deve ser o formato do meu PDF final?

Seu PDF deve manter toda a formatação do Razor View — estruturas de tabelas, fontes, cores e layout. Deve ter o tamanho adequado, margens limpas e aparência profissional. Para verificar a qualidade da saída, use os recursos de rasterização do IronPDF para visualizar as páginas como imagens.

Como posso solucionar problemas comuns de renderização de PDF?

Problemas comuns incluem estilos ausentes, layouts quebrados ou conteúdo incompleto. Ative o registro detalhado de logs, verifique os caminhos dos recursos e assegure-se de que o HTML seja validado corretamente. Para layouts complexos, use as ferramentas de depuração do Chrome para visualizar o HTML antes da conversão. Para problemas específicos de renderização, use atrasos WaitFor para garantir que o conteúdo seja carregado antes da renderização.

Onde posso baixar um exemplo completo e funcional?

Baixe o código completo como um projeto compactado do Visual Studio ASP.NET Core Web App (Model-View-Controller).

Clique aqui para baixar o projeto.

Quais são os pré-requisitos para executar o projeto de exemplo?

Você precisa do Visual Studio 2019 ou posterior com o SDK do .NET 6.0 ou superior. O projeto requer conexão com a internet para a restauração de pacotes NuGet . Atualize sua chave de licença do IronPDF no arquivo Program.cs antes de executar o programa. Para a implementação, consulte o guia de instalação do Windows para obter requisitos adicionais.

Como faço para personalizar o exemplo para o meu caso de uso?

A amostra fornece uma base para suas necessidades específicas. Adicione modelos de dados dinâmicos, implemente o armazenamento em cache para PDFs gerados com frequência ou integre-se com a autenticação existente. Para cenários avançados, explore a geração assíncrona de PDFs para obter melhor desempenho ou implemente a compressão de PDFs para reduzir o tamanho dos arquivos. Adicione assinaturas digitais para autenticidade de documentos ou proteção por senha para documentos confidenciais.

Perguntas frequentes

Como faço para converter Razor Views em PDF sem uma interface gráfica em C#?

Use o Razor.Templating.Core para converter arquivos cshtml em HTML e, em seguida, use o método RenderHtmlAsPdf do IronPDF para gerar PDFs sem interface gráfica. Esse processo em duas etapas permite transformar Views do Razor em documentos PDF sem a necessidade de uma interface gráfica ou janela do navegador.

Qual é a maneira mais rápida de renderizar uma view Razor em PDF sem usar interface gráfica?

A abordagem mais rápida é usar duas linhas de código: primeiro converta sua visualização Razor em HTML com RazorTemplateEngine.RenderAsync, depois use o método ChromePdfRenderer().RenderHtmlAsPdf(html).SaveAs() do IronPDF para criar e salvar o arquivo PDF.

Por que devo usar Razor.Templating.Core em vez de IronPDF.Extensions.Razor?

Razor.Templating.Core oferece recursos de renderização headless (sem interface gráfica), permitindo converter Views Razor em HTML sem um contexto web ou janela do navegador. Embora IronPDF.Extensions.Razor seja útil, ele requer um contexto web para funcionar, tornando Razor.Templating.Core mais adequado para serviços em segundo plano e aplicativos de console.

Que tipo de projeto ASP.NET Core eu preciso para geração de PDFs sem interface gráfica?

Utilize um projeto de aplicativo Web ASP.NET Core (Model-View-Controller), que fornece a infraestrutura Razor View necessária com opções de implantação flexíveis. Essa configuração funciona bem com o IronPDF para serviços em segundo plano, Azure Functions ou aplicativos de console.

Como faço para instalar os pacotes necessários para a conversão de Razor para PDF?

Instale o Razor.Templating.Core usando o Gerenciador de Pacotes NuGet com o comando 'Install-Package Razor.Templating.Core'. Você também precisará ter o IronPDF instalado em seu projeto para lidar com a etapa de conversão de HTML para PDF.

Posso usar essa abordagem de geração de PDF sem interface gráfica em ambientes de nuvem?

Sim, a conversão headless de Razor para PDF do IronPDF funciona de forma excelente em ambientes de nuvem, incluindo Azure Functions, AWS Lambda e aplicativos em contêineres, tornando-a ideal para serviços escaláveis de geração de documentos.

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
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.