Cómo Convertir CSHTML a PDF en C#
Convertir CSHTML a PDF es un requisito común en muchas aplicaciones. Esta tarea se puede lograr fácilmente usando la biblioteca IronPDF en C#.
IronPDF es una popular biblioteca .NET que permite a los desarrolladores crear, leer, editar y convertir documentos PDF programáticamente. En este artículo, te guiaremos a través de los pasos para convertir CSHTML a PDF con IronPDF en C#, junto con ejemplos.
Antes de comenzar, discutamos algunos conceptos importantes que son necesarios para este tutorial.
Conceptos importantes
Convertidor de PDF
Un convertidor PDF es una herramienta que convierte cualquier documento imprimible o página web en un documento PDF. Se puede usar para generar archivos PDF a partir de HTML, Word, Excel o cualquier otro documento imprimible. Los convertidores PDF vienen en varias formas, incluyendo herramientas en línea, software de escritorio y bibliotecas.
Vista de navaja
Una vista Razor es un motor de vistas que se usa en ASP.NET Core para generar páginas HTML dinámicamente. Es una sintaxis de marcado que combina código HTML con código C#.
Vista Razor
La vista Razor facilita a los desarrolladores la creación de páginas web dinámicas al separar la lógica de presentación de la lógica de negocio.
Clase controladora
Una clase controladora es una clase C# que maneja solicitudes HTTP entrantes en una aplicación ASP.NET Core. Contiene métodos que corresponden a verbos HTTP específicos (p. ej., GET, POST, PUT, DELETE) y devuelve una respuesta HTTP.
Administrador de paquetes NuGet
El Administrador de Paquetes NuGet es una herramienta que se usa en Visual Studio para gestionar paquetes en proyectos .NET. Facilita a los desarrolladores instalar, actualizar y desinstalar paquetes en sus proyectos. Los paquetes NuGet son bibliotecas que contienen código reutilizable y se distribuyen a través del Administrador de Paquetes NuGet.
Inyección de dependencia
Inyección de dependencia es un patrón de diseño que permite a los desarrolladores desacoplar sus componentes de aplicación inyectando dependencias en sus clases. Facilita la prueba y mantenimiento de aplicaciones al reducir dependencias y haciendo el código más modular.
Ahora que hemos cubierto los conceptos importantes, profundicemos en el proceso de convertir CSHTML a PDF usando IronPDF.
¿Qué es CSHTML?
CSHTML significa HTML de sintaxis Razor de C#. Es un tipo de archivo que contiene tanto marcado HTML como código C#. Estos archivos se usan en aplicaciones ASP.NET Core MVC para definir la interfaz de usuario de páginas web. El motor de vistas Razor se usa para interpretar los archivos CSHTML y generar salida HTML que puede ser renderizada por un navegador web.
CSHTML5
¿Qué es IronPDF?
IronPDF es una potente biblioteca .NET que permite a los desarrolladores crear, leer, editar y convertir documentos PDF en C#. Es una herramienta popular para generar documentos PDF programáticamente en aplicaciones .NET. IronPDF soporta una amplia gama de características, incluyendo generación de PDF, manipulación de PDF, conversión de PDF y renderizado de PDF.
IronPDF para .NET
Cómo convertir una cadena HTML CSHTML a archivos PDF con IronPDF en C
Convertir CSHTML a PDF con IronPDF es un proceso simple. La biblioteca proporciona una API conveniente para convertir archivos HTML a documentos PDF. Aquí están los pasos para convertir CSHTML a PDF con IronPDF en C#:
Paso 1 Instalar IronPDF
El primer paso es instalar IronPDF desde el Administrador de Paquetes NuGet en tu proyecto C#. Puedes instalar IronPDF descargando el archivo IronPDF.dll y agregándolo a las referencias de tu proyecto. Para instalar IronPDF usando el Administrador de Paquetes NuGet, abre la Consola del Administrador de Paquetes y ejecuta el siguiente comando:
Paso 2: Crear un archivo CSHTML
A continuación, crea un archivo CSHTML que contenga el contenido que deseas convertir a PDF. En este ejemplo, crearemos un archivo de tutorial CSHTML sencillo que muestra el texto "Hello, World!".
@{
Layout = null;
}
Hello
Hello, World!@{
Layout = null;
}
Hello
Hello, World!@
If True Then
Layout = Nothing
End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Hello Hello, World!Guarda este archivo como "Hello.cshtml" en el directorio de tu proyecto.
Archivos PDF en C#
Paso 3 Convertir CSHTML a documento PDF
Para convertir el archivo CSHTML a PDF, usaremos la biblioteca IronPDF en C#. Aquí está el código para convertir "Hello.cshtml" a PDF:
using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;
namespace CSHTMLtoPDF.Controllers
{
public class HomeController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
public HomeController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Index()
{
var items = new[] { "Item 1", "Item 2", "Item 3" };
return View(items);
}
public IActionResult DownloadPDF()
{
var items = new[] { "Item 1", "Item 2", "Item 3" };
// Initialize a new instance of ChromePdfRenderer from IronPDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);
// Set the headers to force the browser to download the PDF
var contentDisposition = new System.Net.Mime.ContentDisposition
{
FileName = "Items.pdf",
Inline = false,
};
Response.Headers.Add("Content-Disposition", contentDisposition.ToString());
// Return the PDF document to the client
return File(pdf.BinaryData, "application/pdf");
}
}
}using System.IO;
using IronPdf;
using Microsoft.AspNetCore.Mvc;
namespace CSHTMLtoPDF.Controllers
{
public class HomeController : Controller
{
private readonly IRazorViewRenderer _viewRenderService;
public HomeController(IRazorViewRenderer viewRenderService)
{
_viewRenderService = viewRenderService;
}
public IActionResult Index()
{
var items = new[] { "Item 1", "Item 2", "Item 3" };
return View(items);
}
public IActionResult DownloadPDF()
{
var items = new[] { "Item 1", "Item 2", "Item 3" };
// Initialize a new instance of ChromePdfRenderer from IronPDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified Razor view to a PDF document
PdfDocument pdf = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items);
// Set the headers to force the browser to download the PDF
var contentDisposition = new System.Net.Mime.ContentDisposition
{
FileName = "Items.pdf",
Inline = false,
};
Response.Headers.Add("Content-Disposition", contentDisposition.ToString());
// Return the PDF document to the client
return File(pdf.BinaryData, "application/pdf");
}
}
}Imports System.IO
Imports IronPdf
Imports Microsoft.AspNetCore.Mvc
Namespace CSHTMLtoPDF.Controllers
Public Class HomeController
Inherits Controller
Private ReadOnly _viewRenderService As IRazorViewRenderer
Public Sub New(ByVal viewRenderService As IRazorViewRenderer)
_viewRenderService = viewRenderService
End Sub
Public Function Index() As IActionResult
Dim items = { "Item 1", "Item 2", "Item 3" }
Return View(items)
End Function
Public Function DownloadPDF() As IActionResult
Dim items = { "Item 1", "Item 2", "Item 3" }
' Initialize a new instance of ChromePdfRenderer from IronPDF
Dim renderer As New ChromePdfRenderer()
' Render the specified Razor view to a PDF document
Dim pdf As PdfDocument = renderer.RenderRazorViewToPdf(_viewRenderService, "Views/Home/Index.cshtml", items)
' Set the headers to force the browser to download the PDF
Dim contentDisposition = New System.Net.Mime.ContentDisposition With {
.FileName = "Items.pdf",
.Inline = False
}
Response.Headers.Add("Content-Disposition", contentDisposition.ToString())
' Return the PDF document to the client
Return File(pdf.BinaryData, "application/pdf")
End Function
End Class
End NamespaceVamos a analizar este código paso a paso:
- Primero importamos los espacios de nombres necesarios, incluyendo el espacio de nombres IronPDF, que contiene la funcionalidad de conversión de HTML a PDF.
- Luego definimos el método
Index, que simplemente devuelve una lista de ítems a una vista Razor. - Definimos el método
DownloadPDF, que es responsable de generar el documento PDF. - Comenzamos creando un renderizador
ChromePdfRenderer. - Luego usamos el método de extensión
RenderRazorViewToPdfpara generar una vista Razor con datos en un archivo PDF. - A continuación configuramos los encabezados
Content-Dispositionpara forzar que el PDF se descargue en lugar de mostrarse en el navegador. - Finalmente, retornamos el documento PDF como un archivo usando el método File.
Este es el código básico para convertir CSHTML a PDF con IronPDF en C#. Sin embargo, hay muchas opciones y configuraciones que se pueden usar para personalizar la salida PDF. Veamos algunas de estas opciones.
Personalización del archivo de retorno de salida PDF
IronPDF proporciona muchas opciones para personalizar la salida del archivo PDF. Puedes establecer opciones como tamaño de página, márgenes, orientación, encabezado y pie de página, y más. Aquí hay un ejemplo de cómo personalizar la salida del PDF:
using IronPdf;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// Initialize a new instance of ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Customize rendering options for the PDF
renderer.RenderingOptions.MarginTop = 10; // Set top margin in millimeters
renderer.RenderingOptions.MarginBottom = 10; // Set bottom margin in millimeters
renderer.RenderingOptions.MarginLeft = 20; // Set left margin in millimeters
renderer.RenderingOptions.MarginRight = 20; // Set right margin in millimeters
// Set HTML header for the PDF with a logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
MaxHeight = 20, // Height of header in millimeters
HtmlFragment = "<img src='logo.png'>",
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
// Set HTML footer for the PDF with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
MaxHeight = 15, // Height of footer in millimeters
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
DrawDividerLine = true // Draw a line above the footer
};
// Convert HTML content to PDF
var pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>");
// Save the PDF to the file system
pdf.SaveAs("Hello.PDF");
}
}
}using IronPdf;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
// Initialize a new instance of ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Customize rendering options for the PDF
renderer.RenderingOptions.MarginTop = 10; // Set top margin in millimeters
renderer.RenderingOptions.MarginBottom = 10; // Set bottom margin in millimeters
renderer.RenderingOptions.MarginLeft = 20; // Set left margin in millimeters
renderer.RenderingOptions.MarginRight = 20; // Set right margin in millimeters
// Set HTML header for the PDF with a logo
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
MaxHeight = 20, // Height of header in millimeters
HtmlFragment = "<img src='logo.png'>",
BaseUrl = new Uri(@"C:\assets\images\").AbsoluteUri
};
// Set HTML footer for the PDF with page numbers
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
MaxHeight = 15, // Height of footer in millimeters
HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
DrawDividerLine = true // Draw a line above the footer
};
// Convert HTML content to PDF
var pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>");
// Save the PDF to the file system
pdf.SaveAs("Hello.PDF");
}
}
}Imports IronPdf
Namespace ConsoleApp
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Initialize a new instance of ChromePdfRenderer
Dim renderer = New ChromePdfRenderer()
' Customize rendering options for the PDF
renderer.RenderingOptions.MarginTop = 10 ' Set top margin in millimeters
renderer.RenderingOptions.MarginBottom = 10 ' Set bottom margin in millimeters
renderer.RenderingOptions.MarginLeft = 20 ' Set left margin in millimeters
renderer.RenderingOptions.MarginRight = 20 ' Set right margin in millimeters
' Set HTML header for the PDF with a logo
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.MaxHeight = 20,
.HtmlFragment = "<img src='logo.png'>",
.BaseUrl = (New Uri("C:\assets\images\")).AbsoluteUri
}
' Set HTML footer for the PDF with page numbers
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.MaxHeight = 15,
.HtmlFragment = "<center><i>{page} of {total-pages}</i></center>",
.DrawDividerLine = True
}
' Convert HTML content to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<div>Hello, World!</div>")
' Save the PDF to the file system
pdf.SaveAs("Hello.PDF")
End Sub
End Class
End NamespaceEn este ejemplo, primero creamos una instancia de la clase ChromePdfRenderer. Luego configuramos varias opciones usando la propiedad RenderingOptions de la clase ChromePdfRenderer. Aquí están algunas de las opciones que establecemos:
MarginTop,MarginBottom,MarginLeft,MarginRight: Establece los márgenes del documento PDF.HtmlHeader: Establece el encabezado del documento PDF para mostrar un logo.HtmlFooter: Establece el pie de página del documento PDF para mostrar el número de página y el total de páginas.
Después de configurar las opciones, llamamos al método RenderHtmlAsPdf con el contenido HTML. Finalmente, guardamos el documento PDF en un archivo llamado "Hello.PDF".
Probar la aplicación
Con todo el código necesario en su lugar, ahora podemos probar la aplicación. Siga estos pasos:
- Ejecuta la aplicación presionando F5 o haciendo clic en el botón verde "Play" en Visual Studio.
- En tu navegador web, navega a
http://localhost:/Home/Index, donde es el número de puerto asignado por Visual Studio. - Verifica que la lista de ítems se muestre correctamente.
- Haz clic en el enlace "Descargar PDF" para generar y descargar el documento PDF.
Si todo funciona correctamente, deberías ver un documento PDF que contiene la lista de ítems que definiste anteriormente.
Convertir un PDF a un archivo CSHTML con IronPDF
PDF a CSHTML
Para demostrar cómo convertir un PDF a un archivo CSHTML con IronPDF, crearemos una nueva Aplicación de Consola en Visual Studio y usaremos IronPDF para convertir un documento PDF de ejemplo a un archivo CSHTML. Sigue estos pasos:
Paso 1 Crear una nueva aplicación de consola
Abre Visual Studio y crea una nueva Aplicación de Consola seleccionando "Archivo > Nuevo > Proyecto" del menú, luego seleccionando "Aplicación de Consola (.NET Framework)" o "Aplicación de Consola (.NET Core)" de la lista de plantillas de proyecto.
Paso 2: Instalar el paquete NuGet de IronPDF
A continuación, necesitamos instalar el paquete NuGet de IronPDF en nuestra Aplicación de Consola. Para hacer esto, haz clic derecho en el proyecto en el Explorador de Soluciones y selecciona "Gestionar Paquetes NuGet" del menú contextual.
En el Administrador de Paquetes NuGet, busca "IronPDF" y selecciona el paquete "IronPDF" de los resultados de búsqueda. Haz clic en el botón "Instalar" para instalar el paquete y sus dependencias.
Paso 3 Agregar archivos PDF y CSHTML al proyecto
Para este ejemplo, usaremos un archivo PDF de ejemplo que queremos convertir a un archivo CSHTML. Puedes usar cualquier archivo PDF que desees para este paso.
Agrega el archivo PDF al proyecto haciendo clic derecho en el proyecto en el Explorador de Soluciones y seleccionando "Agregar > Elemento Existente" del menú contextual.
También necesitamos crear un archivo CSHTML vacío que usaremos para almacenar la cadena HTML convertida. Para hacer esto, haz clic derecho en el proyecto en el Explorador de Soluciones y selecciona "Agregar > Nuevo Elemento" del menú contextual. Selecciona "Página HTML" de la lista de plantillas, luego da un nombre al archivo (por ejemplo, "convertido.cshtml") y haz clic en "Agregar".
Paso 4 Convierte el PDF a un archivo CSHTML
Con los archivos necesarios en su lugar, ahora podemos escribir el código para convertir el PDF a un archivo CSHTML usando IronPDF. Agrega el siguiente código al método Main de tu Aplicación de Consola:
using IronPdf;
namespace PdfToHtml
{
class Program
{
static void Main(string[] args)
{
// Load the PDF file
PdfDocument pdf = PdfDocument.FromFile("sample.PDF");
// Convert the PDF to an HTML string
string html = pdf.ToHtml();
// Save the HTML string to the CSHTML file
System.IO.File.WriteAllText("converted.cshtml", html);
}
}
}using IronPdf;
namespace PdfToHtml
{
class Program
{
static void Main(string[] args)
{
// Load the PDF file
PdfDocument pdf = PdfDocument.FromFile("sample.PDF");
// Convert the PDF to an HTML string
string html = pdf.ToHtml();
// Save the HTML string to the CSHTML file
System.IO.File.WriteAllText("converted.cshtml", html);
}
}
}Imports IronPdf
Namespace PdfToHtml
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Load the PDF file
Dim pdf As PdfDocument = PdfDocument.FromFile("sample.PDF")
' Convert the PDF to an HTML string
Dim html As String = pdf.ToHtml()
' Save the HTML string to the CSHTML file
System.IO.File.WriteAllText("converted.cshtml", html)
End Sub
End Class
End Namespace¿Por qué debería utilizar IronPDF?
IronPDF es una elección popular entre los desarrolladores .NET por varias razones clave:
Potentes capacidades de generación de PDF: IronPDF proporciona una amplia gama de características y opciones para crear y manipular documentos PDF programáticamente, incluyendo la capacidad de agregar texto, imágenes y otros contenidos a las páginas PDF, así como la capacidad de combinar y dividir documentos PDF existentes.
Capacidades versátiles de conversión de PDF: IronPDF no solo permite a los desarrolladores generar documentos PDF, sino que también proporciona funcionalidad para convertir PDFs a cadenas HTML o archivos CSHTML. Esto puede ser útil en situaciones donde necesitas mostrar contenido PDF en una Aplicación Web o extraer datos de documentos PDF y utilizarlos en un flujo de trabajo basado en web.
API fácil de usar: La API de IronPDF está diseñada para ser intuitiva y fácil de usar, con una amplia gama de métodos y propiedades auxiliares que facilitan a los desarrolladores generar y manipular documentos PDF programáticamente.
Fuerte soporte comunitario: IronPDF tiene una gran y activa comunidad de desarrolladores .NET quienes contribuyen a su desarrollo y proporcionan soporte a otros desarrolladores que usan la biblioteca.
Buena documentación: La documentación de IronPDF es extensa y está bien organizada, con documentación de referencia de API detallada, tutoriales y ejemplos que facilitan a los desarrolladores comenzar y aprender cómo usar la biblioteca.
La combinación de IronPDF de potentes capacidades de generación y conversión de PDF, API fácil de usar, fuerte soporte comunitario y buena documentación lo convierten en una elección popular entre los desarrolladores .NET que necesitan trabajar con documentos PDF en sus aplicaciones.
Conclusión
Convertir CSHTML a PDF es un requisito común en muchas aplicaciones. Con IronPDF, esta tarea se puede lograr fácilmente en C#. En este artículo, te guiamos a través de los pasos para convertir CSHTML a PDF con IronPDF, junto con ejemplos.
También te mostramos cómo personalizar la salida del PDF configurando varias opciones como tamaño de papel, márgenes, encabezado y pie de página, y más. Con IronPDF, puedes crear documentos PDF de alta calidad a partir de tus archivos CSHTML de manera rápida y fácil.
Ya sea que necesites crear documentos PDF desde cero, convertir PDFs a cadenas HTML o archivos CSHTML, o extraer datos de documentos PDF, IronPDF proporciona una API flexible e intuitiva que facilita realizar el trabajo.
Con su fuerte soporte comunitario y documentación extensa, IronPDF es una elección popular entre los desarrolladores .NET que necesitan trabajar con PDFs en sus aplicaciones. Y al adquirir el paquete de Iron Software, los desarrolladores pueden obtener acceso a un conjunto completo de bibliotecas .NET para trabajar con formatos de archivos comunes a un precio con descuento, lo que lo convierte en un excelente valor para cualquier equipo de desarrollo .NET.
Si necesitas trabajar con documentos PDF en tus aplicaciones .NET, IronPDF definitivamente vale la pena considerar. Con sus potentes características, facilidad de uso y variedad de opciones de licenciamiento, es una herramienta versátil y confiable que puede ayudarte a realizar el trabajo de manera rápida y eficiente.