Como converter Razor Pages em PDFs em um aplicativo Web ASP.NET Core

Como converter Razor Pages em PDFs em um aplicativo ASP.NET Core C

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

O IronPDF permite a conversão perfeita de arquivos Razor Pages (.cshtml) em documentos PDF em aplicativos ASP.NET Core usando o método RenderRazorToPdf para converter PDF a partir de conteúdo da web, com suporte completo para renderização em C# e HTML.

Uma Razor Page é um arquivo com a extensão .cshtml que combina C# e HTML para gerar conteúdo web. No ASP.NET Core, as Razor Pages são uma maneira mais simples de organizar o código para aplicações web, tornando-as ideais para páginas simples, somente leitura ou que realizam entrada de dados simples.

Um aplicativo Web ASP.NET Core é um aplicativo Web criado usando o ASP.NET Core, uma estrutura multiplataforma para o desenvolvimento de aplicativos Web modernos.

O IronPDF simplifica o processo de criação de arquivos PDF a partir de Razor Pages em um projeto de aplicativo Web ASP.NET Core . Isso simplifica a geração de PDFs em aplicativos Web ASP.NET Core .

Início Rápido: Converta Páginas Razor para PDF em Segundos

Converta suas Razor Pages em PDFs de alta qualidade em uma aplicação ASP.NET Core . Ao utilizar o método RenderRazorToPdf, você pode transformar arquivos CSHTML em documentos PDF, otimizando seu fluxo de trabalho e aprimorando a distribuição de documentos. Este guia apresenta os passos simples necessários para alcançar esse objetivo em minutos.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

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

    // Install-Package o Razor IronPDF
    var pdf = new IronPdf.ChromePdfRenderer().RenderRazorToPdf("Views/Home/Index.cshtml");
  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

Introdução

As Razor Pages oferecem uma maneira poderosa e intuitiva de criar conteúdo web dinâmico em aplicações ASP.NET Core . Ao combinar essas funcionalidades com os recursos de renderização do IronPDF, os desenvolvedores podem criar documentos PDF profissionais diretamente a partir do conteúdo da web. Essa abordagem elimina a lógica complexa de geração de PDFs e permite que você utilize seus conhecimentos existentes de HTML e CSS.

A integração entre o IronPDF e o Razor Pages é particularmente valiosa para gerar relatórios, faturas, certificados e quaisquer outros documentos que exijam apresentação dinâmica de dados. Utilizando a mesma sintaxe Razor com a qual você já está familiarizado, é possível manter a consistência entre as visualizações da web e as saídas em PDF.

Quais pacotes NuGet eu preciso para a conversão de Razor para PDF?

O pacote IronPdf.Extensions.Razor é uma extensão do pacote principal IronPdf . Os pacotes IronPdf.Extensions.Razor e IronPdf são necessários para renderizar Razor Pages em documentos PDF em um aplicativo Web ASP.NET Core . Para obter instruções detalhadas de instalação, consulte nosso guia de visão geral da instalação .

# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package o Razor IronPDF
# Command to install IronPdf.Extensions.Razor package using NuGet Package Manager
Install-Package o Razor IronPDF
SHELL
Biblioteca NuGet C# para PDF

Instalar com NuGet

Install-Package o Razor IronPDF

Como converter Razor Pages em PDFs no ASP.NET Core?

Você precisará de um projeto de aplicativo Web ASP.NET Core para converter Razor Pages em arquivos PDF. O processo envolve a criação de um modelo para seus dados, a configuração de uma Razor Page para exibir esses dados e, em seguida, o uso do método RenderRazorToPdf do IronPDF para gerar a saída em PDF.

Por que preciso de uma classe modelo para geração de PDF?

As classes de modelo servem como a espinha dorsal da representação de dados em suas Razor Pages. Eles fornecem uma maneira estruturada de passar dados da lógica do seu controlador para a sua visualização, garantindo segurança de tipos e facilidade de manutenção. Ao gerar PDFs, esses modelos tornam-se ainda mais cruciais, pois definem a estrutura exata dos dados que aparecerão no documento final.

  • Crie uma nova pasta no projeto e nomeie-a como "Modelos". Adicione uma classe C# padrão à pasta e nomeie-a como "Pessoa". Essa classe servirá como modelo para dados individuais. Utilize o seguinte trecho de código:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-razor-model.cs
namespace RazorPageSample.Models
{
    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Title { get; set; }
        public string Description { get; set; }
    }
}
Namespace RazorPageSample.Models
	Public Class Person
		Public Property Id() As Integer
		Public Property Name() As String
		Public Property Title() As String
		Public Property Description() As String
	End Class
End Namespace
$vbLabelText   $csharpLabel

Como configuro uma página Razor para conversão em PDF?

Adicione uma página Razor vazia à pasta "Pages" e nomeie-a como "persons.cshtml".

  • Modifique o arquivo "Persons.cshtml" recém-criado usando o exemplo de código fornecido abaixo.

O código abaixo exibe as informações no navegador. Observe como a sintaxe Razor permite a integração perfeita de código C# em HTML, tornando-a ideal para gerar conteúdo dinâmico que pode ser convertido em PDF:

@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
@page
@using RazorPageSample.Models;
@model RazorPageSample.Pages.PersonsModel
@{
}

<table class="table">
    <tr>
        <th>Name</th>
        <th>Title</th>
        <th>Description</th>
    </tr>
    @foreach (var person in ViewData["personList"] as List<Person>)
    {
        <tr>
            <td>@person.Name</td>
            <td>@person.Title</td>
            <td>@person.Description</td>
        </tr>
    }
</table>

<form method="post">
    <button type="submit">Print</button>
</form>
HTML

Converter páginas Razor para PDFs

Em seguida, o código abaixo instancia a classe ChromePdfRenderer . Passar isso para o método RenderRazorToPdf é suficiente para converter esta página Razor em um documento PDF.

Você tem acesso completo aos recursos disponíveis em RenderingOptions . Essas funcionalidades incluem a capacidade de aplicar números de página ao PDF gerado, definir margens personalizadas e adicionar texto personalizado, bem como cabeçalhos e rodapés em HTML . Você também pode configurar metadados para seus PDFs para garantir a identificação e a capacidade de busca adequadas dos documentos.

  • Abra o menu suspenso do arquivo "Persons.cshtml" para visualizar o arquivo "Persons.cshtml.cs".
  • Modifique o arquivo "Persons.cshtml.cs" com o código abaixo.
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
using IronPdf.Razor;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using RazorPageSample.Models;

namespace RazorPageSample.Pages
{
    public class PersonsModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public List<Person> Persons { get; set; }

        // Handle GET request to load initial data
        public void OnGet()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;
        }

        // Handle POST request to convert Razor page to PDF
        public IActionResult OnPost()
        {
            Persons = new List<Person>
            {
                new Person { Name = "Alice", Title = "Mrs.", Description = "Software Engineer" },
                new Person { Name = "Bob", Title = "Mr.", Description = "Software Engineer" },
                new Person { Name = "Charlie", Title = "Mr.", Description = "Software Engineer" }
            };

            ViewData["personList"] = Persons;

            ChromePdfRenderer renderer = new ChromePdfRenderer();

            // Render Razor Page to PDF document
            PdfDocument pdf = renderer.RenderRazorToPdf(this);

            // Return the generated PDF file with appropriate content headers
            Response.Headers.Add("Content-Disposition", "inline");
            return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf");

            // Optionally view the output PDF in browser (uncomment below line if needed)
            // return File(pdf.BinaryData, "application/pdf");
        }
    }
}
Imports IronPdf.Razor
Imports Microsoft.AspNetCore.Mvc
Imports Microsoft.AspNetCore.Mvc.RazorPages
Imports RazorPageSample.Models

Namespace RazorPageSample.Pages
	Public Class PersonsModel
		Inherits PageModel

		<BindProperty(SupportsGet := True)>
		Public Property Persons() As List(Of Person)

		' Handle GET request to load initial data
		Public Sub OnGet()
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons
		End Sub

		' Handle POST request to convert Razor page to PDF
		Public Function OnPost() As IActionResult
			Persons = New List(Of Person) From {
				New Person With {
					.Name = "Alice",
					.Title = "Mrs.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Bob",
					.Title = "Mr.",
					.Description = "Software Engineer"
				},
				New Person With {
					.Name = "Charlie",
					.Title = "Mr.",
					.Description = "Software Engineer"
				}
			}

			ViewData("personList") = Persons

			Dim renderer As New ChromePdfRenderer()

			' Render Razor Page to PDF document
			Dim pdf As PdfDocument = renderer.RenderRazorToPdf(Me)

			' Return the generated PDF file with appropriate content headers
			Response.Headers.Add("Content-Disposition", "inline")
			Return File(pdf.BinaryData, "application/pdf", "razorPageToPdf.pdf")

			' Optionally view the output PDF in browser (uncomment below line if needed)
			' return File(pdf.BinaryData, "application/pdf");
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

O método RenderRazorToPdf retorna um objeto PdfDocument que pode ser submetido a processamento e edição adicionais. Você pode exportar o PDF como PDFA ou PDFUA, aplicar uma assinatura digital ao documento PDF renderizado ou mesclar e dividir documentos PDF. O método também permite girar páginas, adicionar anotações ou marcadores e inserir marcas d'água personalizadas em seu PDF.

Para uma gestão documental mais eficiente, também é possível compactar PDFs para reduzir o tamanho dos arquivos sem comprometer a qualidade. Isso é particularmente útil ao lidar com relatórios extensos ou quando a largura de banda é uma preocupação. Além disso, os amplos recursos de edição oferecidos pelo IronPDF estão documentados em nosso tutorial completo de edição de PDF.

Como adiciono navegação à página de geração de PDF?

A navegação é crucial para a experiência do usuário em sua aplicação ASP.NET Core . Ao integrar a página de geração de PDF na sua navegação principal, os usuários podem acessar facilmente a funcionalidade sem precisar digitar URLs manualmente.

  • Navegue até a pasta Páginas -> Pasta Compartilhada -> _Layout.cshtml. Coloque o item de navegação "Pessoa" depois de "Início".

Certifique-se de que o valor do atributo asp-page corresponda exatamente ao nome do nosso arquivo, que neste caso é "Persons". Isso garante o roteamento correto dentro da sua aplicação ASP.NET Core :

<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
<header>
    <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
        <div class="container">
            <a class="navbar-brand" asp-area="" asp-page="/Index">RazorPageSample</a>
            <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                    aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
                <ul class="navbar-nav flex-grow-1">
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Persons">Person</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a>
                    </li>
                </ul>
            </div>
        </div>
    </nav>
</header>
HTML

O que acontece quando eu executo a geração de PDF?

Este guia mostra como executar o projeto e gerar um documento PDF. Ao clicar no link de navegação "Pessoa", você verá os dados exibidos em formato de tabela. Clicar no botão "Imprimir" inicia o processo de geração de PDF, convertendo a visualização atual da página Razor em um documento PDF para download.

Visual Studio showing C# PersonsModel class with OnGet and OnPostAsync methods for PDF generation using IronPDF

O PDF gerado mantém todo o estilo e formatação da sua página Razor , garantindo uma aparência consistente entre a visualização na web e a saída em PDF. Essa abordagem é particularmente útil para gerar relatórios, faturas ou qualquer documento que exija dados do banco de dados ou da lógica de negócios do seu aplicativo.

Onde posso baixar um exemplo completo de aplicativo web ASP.NET Core ?

Você pode baixar o código completo deste guia como um arquivo compactado, que pode ser aberto no Visual Studio como um projeto de aplicativo Web ASP.NET Core .

Baixe o arquivo RazorPageSample.zip, um projeto de aplicativo Web ASP.NET Core.

Perguntas frequentes

Como faço para converter Razor Pages em PDF no ASP.NET Core?

Você pode converter Razor Pages para PDF no ASP.NET Core usando o método RenderRazorToPdf do IronPDF. Basta instalar o pacote IronPDF.Extensions.Razor e usar o ChromePdfRenderer para renderizar seus arquivos .cshtml diretamente em documentos PDF.

Quais pacotes NuGet são necessários para a conversão de Razor para PDF?

Você precisa de dois pacotes NuGet: IronPDF.Extensions.Razor (o pacote de extensão) e IronPDF (o pacote principal). Ambos os pacotes são necessários para renderizar Razor Pages em documentos PDF em aplicativos Web ASP.NET Core.

Posso usar dados dinâmicos em minhas páginas Razor ao convertê-las para PDF?

Sim, o IronPDF oferece suporte completo a dados dinâmicos em Razor Pages. Você pode usar código C#, vinculação de modelo e todos os recursos padrão da sintaxe Razor ao converter para PDF, tornando-o ideal para gerar relatórios, faturas e certificados com conteúdo dinâmico.

Que tipos de documentos posso gerar a partir do Razor Pages?

A conversão de Razor para PDF do IronPDF é perfeita para gerar diversos tipos de documentos, incluindo relatórios, faturas, certificados, recibos e quaisquer outros documentos que exijam apresentação dinâmica de dados, mantendo o estilo HTML e CSS existente.

Com que rapidez posso implementar a conversão de Razor para PDF no meu projeto?

Com o IronPDF, você pode implementar a conversão de Razor para PDF em minutos. O fluxo de trabalho mínimo envolve apenas 5 etapas: instalar a biblioteca, adicionar uma classe de modelo, criar uma página Razor, editar o arquivo .cs para usar o método RenderRazorToPdf e executar seu aplicativo.

A conversão mantém meu estilo HTML e CSS?

Sim, o IronPDF preserva o estilo HTML e CSS ao converter Razor Pages para PDF. Isso permite manter a consistência entre as visualizações da web e as saídas em PDF, usando o mesmo estilo e layout que você já criou.

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
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
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.