USANDO IRON SUITE

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#.

Cómo convertir CSHTML a PDF en C#, Figura 1: Vista Razor 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.

Cómo convertir CSHTML a PDF en C#, Figura 2: CSHTML5 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.

Cómo convertir CSHTML a PDF en C#, Figura 3: IronPDF para .NET 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!
$vbLabelText   $csharpLabel

Guarda este archivo como "Hello.cshtml" en el directorio de tu proyecto.

Cómo convertir CSHTML a PDF en C#, Figura 4: Archivos PDF en C# 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 Namespace
$vbLabelText   $csharpLabel

Vamos 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 RenderRazorViewToPdf para generar una vista Razor con datos en un archivo PDF.
  • A continuación configuramos los encabezados Content-Disposition para 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 Namespace
$vbLabelText   $csharpLabel

En 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

Cómo convertir CSHTML a PDF en C#, Figura 7: PDF a CSHTML 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
$vbLabelText   $csharpLabel

¿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.