Como converter Views em PDFs no ASP.NET MVC com C
O IronPDF permite converter PDF de Views do ASP.NET MVC em documentos usando o método ChromePdfRenderer.RenderView() com apenas algumas linhas de código. O pacote IronPDF oferece integração perfeita com projetos ASP.NET MVC para renderizar visualizações CSHTML como PDFs.
Uma View é um componente do framework ASP.NET usado para gerar marcação HTML em aplicações web. Faz parte do padrão Model-View-Controller (MVC), comumente usado em aplicações ASP.NET MVC e ASP.NET Core MVC. As views são responsáveis por apresentar os dados ao usuário, renderizando o conteúdo HTML dinamicamente. O poder do mecanismo de renderização de PDF para Chrome do IronPDF garante que suas visualizações sejam renderizadas com precisão perfeita em cada pixel, mantendo todos os estilos, layouts e elementos interativos.
ASP.NET Web Application (.NET Framework) MVC é uma estrutura de aplicação web fornecida pela Microsoft. Segue um padrão arquitetônico estruturado conhecido como Modelo-Visão-Controlador (MVC) para organizar e agilizar o desenvolvimento de aplicações web.
- Modelo: Gerencia dados, lógica de negócios e integridade de dados.
- Visualizar: Apresenta a interface do usuário e exibe as informações.
- Controlador: Lida com a entrada do usuário, processa solicitações e orquestra as interações entre o Modelo e a Visão.
O IronPDF simplifica o processo de criação de arquivos PDF a partir de Views em um projeto ASP.NET MVC. Isso torna a geração de PDFs fácil e direta no ASP.NET MVC. Seja para gerar faturas, relatórios ou qualquer documento a partir de suas visualizações da web, o IronPDF fornece as ferramentas necessárias para uma saída de PDF profissional. Para obter um guia de configuração completo, visite a página Visão geral da instalação .
Início Rápido: Converta Views ASP.NET MVC em PDF sem esforço
Aprenda como converter rapidamente suas Views ASP.NET MVC em documentos PDF usando o IronPDF. Com apenas algumas linhas de código, você pode renderizar suas visualizações CSHTML em PDFs de alta qualidade, aprimorando a funcionalidade do seu aplicativo. O IronPDF simplifica o processo, tornando-o acessível a desenvolvedores de todos os níveis. Comece integrando o IronPDF em seus projetos ASP.NET Core para gerar PDFs facilmente a partir de suas Views.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
// Install-Package IronPdf.Extensions.Razor var pdf = new IronPdf.ChromePdfRenderer.RenderRazorToPdf(this.ControllerContext); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Baixe a biblioteca C# para converter Views em PDFs no ASP.NET MVC.
- Adicione uma classe de modelo para os dados.
- Crie uma ação "Pessoa" no controlador e use o método `RenderView`
- Adicionar uma View usando o modelo de View do MVC 5
- Baixe o projeto de exemplo para começar rapidamente.
De qual pacote de extensão eu preciso?
Por que o IronPDF requer um pacote de extensão?
O pacote IronPDF é uma extensão do pacote principal IronPDF . Tanto o pacote IronPDF quanto o pacote IronPDF são necessários para renderizar Views em documentos PDF no ASP.NET MVC. Essa separação permite a otimização da funcionalidade específica para o framework MVC, mantendo ao mesmo tempo as capacidades essenciais de renderização de PDF.
Como instalar o pacote de extensão?
Install-Package IronPDF
Instalar com NuGet
Install-Package IronPDF
Como faço para renderizar visualizações em PDFs?
Que tipo de projeto eu preciso?
Para converter Views em arquivos PDF, você precisa de um projeto de Aplicativo Web ASP.NET (.NET Framework) MVC. O IronPDF é compatível com várias versões do MVC e oferece amplas opções de renderização para personalizar a saída em PDF de acordo com suas necessidades.
Como adiciono uma classe de modelo?
Onde devo criar o modelo?
- Navegue até a pasta "Modelos"
- Crie um novo arquivo de classe C# chamado "Person". Essa classe servirá como um modelo para representar dados individuais. Utilize o seguinte código:
:path=/static-assets/pdf/content-code-examples/how-to/cshtml-to-pdf-mvc-framework-model.cs
namespace ViewToPdfMVCSample.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 ViewToPdfMVCSample.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
Como faço para editar o controlador?
Que código devo adicionar ao controlador?
Navegue até a pasta "Controllers" e abra o arquivo "HomeController". Adicione a ação "Persons" usando o seguinte código:
No código fornecido, a classe ChromePdfRenderer é criada primeiro. Para usar o método RenderView, forneça um HttpContext, especifique o caminho para o arquivo "Persons.cshtml" e forneça um List<Person> contendo os dados necessários. Ao renderizar a visualização, você pode utilizar as opções de renderização (RenderingOptions) para personalizar as margens, adicionar texto personalizado e cabeçalhos e rodapés HTML , além de aplicar números de página ao documento PDF resultante.
O documento PDF pode ser baixado para o computador usando o seguinte código: File(pdf.BinaryData, "application/pdf", "viewToPdfMVC.pdf").
using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;
namespace ViewToPdfMVCSample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
// GET: Person
public ActionResult Persons()
{
// Create a list of Person objects
var 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" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Define the path to the View file
var viewPath = "~/Views/Home/Persons.cshtml";
// Instantiate the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the view to a PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
// Set headers to view the PDF in-browser
Response.Headers.Add("Content-Disposition", "inline");
// Return the generated PDF file
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
using IronPdf;
using System.Collections.Generic;
using System.Web.Mvc;
using ViewToPdfMVCSample.Models;
namespace ViewToPdfMVCSample.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
// GET: Person
public ActionResult Persons()
{
// Create a list of Person objects
var 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" }
};
if (HttpContext.Request.HttpMethod == "POST")
{
// Define the path to the View file
var viewPath = "~/Views/Home/Persons.cshtml";
// Instantiate the ChromePdfRenderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the view to a PDF document
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
// Set headers to view the PDF in-browser
Response.Headers.Add("Content-Disposition", "inline");
// Return the generated PDF file
return File(pdf.BinaryData, "application/pdf");
}
return View(persons);
}
public ActionResult About()
{
ViewBag.Message = "Your application description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
}
Imports IronPdf
Imports System.Collections.Generic
Imports System.Web.Mvc
Imports ViewToPdfMVCSample.Models
Namespace ViewToPdfMVCSample.Controllers
Public Class HomeController
Inherits Controller
Public Function Index() As ActionResult
Return View()
End Function
' GET: Person
Public Function Persons() As ActionResult
' Create a list of Person objects
'INSTANT VB NOTE: The local variable persons was renamed since Visual Basic will not allow local variables with the same name as their enclosing function or property:
Dim persons_Conflict = 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"
}
}
If HttpContext.Request.HttpMethod = "POST" Then
' Define the path to the View file
Dim viewPath = "~/Views/Home/Persons.cshtml"
' Instantiate the ChromePdfRenderer
Dim renderer As New ChromePdfRenderer()
' Render the view to a PDF document
Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons_Conflict)
' Set headers to view the PDF in-browser
Response.Headers.Add("Content-Disposition", "inline")
' Return the generated PDF file
Return File(pdf.BinaryData, "application/pdf")
End If
Return View(persons_Conflict)
End Function
Public Function About() As ActionResult
ViewBag.Message = "Your application description page."
Return View()
End Function
Public Function Contact() As ActionResult
ViewBag.Message = "Your contact page."
Return View()
End Function
End Class
End Namespace
Como posso personalizar as opções de renderização de PDF?
Para cenários mais avançados, você pode personalizar a saída em PDF usando diversas opções de renderização. Aqui está um exemplo com margens personalizadas, tamanho do papel e configurações adicionais:
// Advanced rendering with custom options
public ActionResult PersonsAdvanced()
{
var persons = GetPersonsList();
if (HttpContext.Request.HttpMethod == "POST")
{
var viewPath = "~/Views/Home/Persons.cshtml";
// Configure the renderer with custom options
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set custom rendering options
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Set custom paper size
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
// Add header and footer
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}";
renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
renderer.RenderingOptions.TextHeader.FontSize = 12;
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
// Enable JavaScript execution if needed
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Wait for JS to execute
// Render the view to PDF
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
// Optional: Apply compression to reduce file size
pdf.CompressImages(60);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf");
}
return View("Persons", persons);
}
// Advanced rendering with custom options
public ActionResult PersonsAdvanced()
{
var persons = GetPersonsList();
if (HttpContext.Request.HttpMethod == "POST")
{
var viewPath = "~/Views/Home/Persons.cshtml";
// Configure the renderer with custom options
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set custom rendering options
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
// Set custom paper size
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait;
// Add header and footer
renderer.RenderingOptions.TextHeader.DrawDividerLine = true;
renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}";
renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica;
renderer.RenderingOptions.TextHeader.FontSize = 12;
renderer.RenderingOptions.TextFooter.DrawDividerLine = true;
renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial;
renderer.RenderingOptions.TextFooter.FontSize = 10;
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}";
// Enable JavaScript execution if needed
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Wait for JS to execute
// Render the view to PDF
PdfDocument pdf = renderer.RenderView(this.HttpContext, viewPath, persons);
// Optional: Apply compression to reduce file size
pdf.CompressImages(60);
Response.Headers.Add("Content-Disposition", "inline");
return File(pdf.BinaryData, "application/pdf");
}
return View("Persons", persons);
}
Imports System.Web.Mvc
Imports IronPdf
' Advanced rendering with custom options
Public Function PersonsAdvanced() As ActionResult
Dim persons = GetPersonsList()
If HttpContext.Request.HttpMethod = "POST" Then
Dim viewPath = "~/Views/Home/Persons.cshtml"
' Configure the renderer with custom options
Dim renderer As New ChromePdfRenderer()
' Set custom rendering options
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
' Set custom paper size
renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = IronPdf.Rendering.PdfPaperOrientation.Portrait
' Add header and footer
renderer.RenderingOptions.TextHeader.DrawDividerLine = True
renderer.RenderingOptions.TextHeader.CenterText = "{pdf-title}"
renderer.RenderingOptions.TextHeader.Font = IronPdf.Font.FontTypes.Helvetica
renderer.RenderingOptions.TextHeader.FontSize = 12
renderer.RenderingOptions.TextFooter.DrawDividerLine = True
renderer.RenderingOptions.TextFooter.Font = IronPdf.Font.FontTypes.Arial
renderer.RenderingOptions.TextFooter.FontSize = 10
renderer.RenderingOptions.TextFooter.RightText = "{page} of {total-pages}"
' Enable JavaScript execution if needed
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 500 ' Wait for JS to execute
' Render the view to PDF
Dim pdf As PdfDocument = renderer.RenderView(Me.HttpContext, viewPath, persons)
' Optional: Apply compression to reduce file size
pdf.CompressImages(60)
Response.Headers.Add("Content-Disposition", "inline")
Return File(pdf.BinaryData, "application/pdf")
End If
Return View("Persons", persons)
End Function
Para obter mais informações sobre como otimizar as margens, consulte nosso guia sobre como definir margens personalizadas . Se você precisar trabalhar com dimensões de papel específicas, consulte nossa documentação sobre Tamanhos de Papel Personalizados .
O que posso fazer com o PDF gerado?
Depois de obter o objeto PdfDocument através do método RenderView, você pode fazer várias melhorias e ajustes nele. Você pode converter o PDF para os formatos PDFA ou PDFUA , aplicar assinaturas digitais ao PDF criado ou mesclar e dividir documentos PDF conforme necessário. A biblioteca permite girar páginas, inserir anotações ou marcadores e aplicar marcas d'água distintas aos seus arquivos PDF.
Para otimizar o tamanho do arquivo, considere usar técnicas de compressão de PDF . Ao lidar com conteúdo que utiliza muito JavaScript, nosso guia de renderização em JavaScript fornece informações detalhadas sobre como lidar com atrasos de renderização personalizados. Para conhecer as diversas opções de exportação, consulte nosso guia completo sobre como salvar e exportar documentos PDF .
Como adiciono uma vista?
Quais etapas devo seguir para criar a visualização?
- Clique com o botão direito do mouse na ação Pessoa recém-adicionada e selecione "Adicionar Vista".

- Selecione "Vista MVC 5" para o novo item com estrutura de andaimes.

- Selecione o modelo "Lista" e a classe de modelo "Pessoa".

Isso cria um arquivo .cshtml chamado "Pessoas".
Como adicionar um botão de impressão à visualização?
- Navegue até a pasta "Views" -> pasta "Home" -> arquivo "Persons.cshtml".
Para adicionar um botão que invoque a ação "Pessoas", use o código abaixo:
@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
<input type="submit" value="Print Person" />
}
@using (Html.BeginForm("Persons", "Home", FormMethod.Post))
{
<input type="submit" value="Print Person" />
}
Como adiciono uma seção à barra de navegação superior?
Onde devo atualizar a navegação?
- Na pasta "Views", navegue até a pasta "Shared" e, em seguida, até o arquivo "_Layout.cshtml". Coloque o item de navegação "Pessoa" após "Início".
Certifique-se de que os valores do método ActionLink correspondam exatamente ao nome do nosso arquivo, que é "Persons".
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
<div class="container">
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
</ul>
</div>
</div>
</nav>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark">
<div class="container">
@Html.ActionLink("Application name", "Index", "Home", new { area = "" }, new { @class = "navbar-brand" })
<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" title="Toggle navigation" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li>@Html.ActionLink("Home", "Index", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("Persons", "Persons", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("About", "About", "Home", new { area = "" }, new { @class = "nav-link" })</li>
<li>@Html.ActionLink("Contact", "Contact", "Home", new { area = "" }, new { @class = "nav-link" })</li>
</ul>
</div>
</div>
</nav>
Como executar e testar o projeto?
Execute o projeto
Este guia mostra como executar o projeto e gerar um documento PDF.
PDF de saída
Onde posso baixar o projeto completo?
O que o projeto de exemplo inclui?
Você pode baixar o código completo deste guia. Ele está compactado em um arquivo zip que pode ser aberto no Visual Studio como um projeto ASP.NET Web Application (.NET Framework) MVC. O exemplo inclui todas as configurações, classes de modelo, controladores e visualizações necessárias para que você comece rapidamente a gerar PDFs em seus aplicativos MVC.
Perguntas frequentes
Como posso converter visualizações CSHTML em PDF no ASP.NET MVC?
Você pode converter visualizações CSHTML em PDF no ASP.NET MVC usando o método `ChromePdfRenderer.RenderView()` do IronPDF. Basta instalar o pacote `IronPDF.Extensions.Mvc.Framework` e usar o método de renderização para transformar suas visualizações em documentos PDF de alta qualidade com apenas algumas linhas de código.
Qual é o código mínimo necessário para renderizar uma visualização como PDF?
O código mínimo para renderizar uma visualização como PDF é: `var pdf = new IronPDF.ChromePdfRenderer.RenderRazorToPdf(this.ControllerContext);` Esta única linha de código, usando o IronPDF, converterá sua visualização atual em um documento PDF.
De qual pacote de extensão preciso para gerar PDFs em ASP.NET MVC?
Para aplicações ASP.NET MVC, você precisa do pacote IronPDF.Extensions.Mvc.Framework. Essa extensão proporciona integração perfeita com projetos ASP.NET MVC e funciona em conjunto com o pacote principal do IronPDF para habilitar a funcionalidade de conversão de visualização para PDF.
Qual mecanismo de renderização é usado para converter as visualizações em PDF?
O IronPDF utiliza o mecanismo de renderização de PDF do Chrome, que garante precisão perfeita em cada pixel ao converter visualizações para PDF. Esse mecanismo mantém todos os estilos, layouts e elementos interativos das suas visualizações CSHTML originais no PDF final.
Posso gerar faturas e relatórios a partir de views MVC?
Sim, o IronPDF é perfeito para gerar faturas, relatórios e quaisquer outros documentos a partir de suas views MVC. A biblioteca oferece recursos profissionais de saída em PDF, tornando-a ideal para criar documentos comerciais diretamente das views de sua aplicação web.
Quais são os passos básicos para implementar a conversão de visualização para PDF?
A implementação básica envolve 5 etapas: 1) Baixar e instalar a biblioteca IronPDF, 2) Adicionar uma classe de modelo para seus dados, 3) Criar uma ação de controlador usando o método RenderView, 4) Adicionar uma View usando o scaffolding de Views do MVC 5 e 5) Executar a conversão usando os métodos de renderização do IronPDF.
O arquivo PDF gerado mantém o estilo de visualização original?
Sim, o mecanismo de renderização Chrome do IronPDF garante que todos os estilos CSS, layouts e elementos interativos das suas visualizações CSHTML sejam preservados na saída PDF. Isso proporciona precisão perfeita em cada pixel e mantém a integridade visual das suas visualizações web originais.

