Html a pdf con dotnet 6 gratis!!
En este artículo, exploraremos cómo utilizar Dotnet 6 para crear una API que convierta HTML a PDF utilizando Chromium y Puppeteer. Crearemos dos endpoints: uno que acepta el contenido HTML como una carga útil codificada en base64 en el cuerpo de la solicitud y otro que acepta la URL de la página HTML a convertir. Utilizaremos la biblioteca “PuppeteerSharp”, que es un puerto .NET de la popular biblioteca de Node.js Puppeteer.
Requisitos previos:
- Visual Studio 2019 o posterior
- Dotnet 6 SDK
- Biblioteca “PuppeteerSharp” (se puede instalar a través del administrador de paquetes NuGet)
Paso 1: Crear un nuevo proyecto .NET 6 en Visual Studio
Crearemos un nuevo proyecto de ASP.NET Core Web API. Abra Visual Studio y vaya a Archivo > Nuevo > Proyecto. Seleccione “Aplicación web ASP.NET Core” como tipo de proyecto, déle un nombre y haga clic en Crear.
Paso 2: Instalar el paquete “PuppeteerSharp”
Abra la Consola del Administrador de paquetes y ejecute el siguiente comando para instalar el paquete “PuppeteerSharp”:
Install-Package PuppeteerSharp
Paso 3: Crear el endpoint de conversión de HTML a PDF que acepta la carga útil codificada en base64
Cree un nuevo controlador y agregue el siguiente código:
using Microsoft.AspNetCore.Mvc;
using PuppeteerSharp;
using System.IO;
using System.Threading.Tasks;
[ApiController]
[Route("[controller]")]
public class HtmlToPdfController : ControllerBase
{
[HttpPost("convertFromBase64")]
public async Task<IActionResult> ConvertFromBase64([FromBody] string base64Html)
{
var options = new LaunchOptions { Headless = true };
using var browser = await Puppeteer.LaunchAsync(options);
using var page = await browser.NewPageAsync();
await page.SetContentAsync(base64Html);
var pdfBytes = await page.PdfDataAsync();
return File(pdfBytes, "application/pdf");
}
}
Este endpoint toma una carga útil HTML codificada en base64 en el cuerpo de la solicitud y la convierte en un PDF utilizando Puppeteer. El PDF convertido se devuelve como un archivo.
Paso 4: Crear el endpoint de conversión de HTML a PDF que acepta una URL
Agregue el siguiente código al mismo controlador:
[HttpGet("convertFromUrl")]
public async Task<IActionResult> ConvertFromUrl([FromQuery] string url)
{
var options = new LaunchOptions { Headless = true };
using var browser = await Puppeteer.LaunchAsync(options);
using var page = await browser.NewPageAsync();
await page.GoToAsync(url);
var pdfBytes = await page.PdfDataAsync();
return File(pdfBytes, "application/pdf");
}
Este endpoint toma una URL en la cadena de consulta y convierte la página HTML en la URL especificada en un PDF utilizando Puppeteer. El PDF convertido se devuelve como un archivo.
Paso 5: Probar los endpoints
Ejecute el proyecto y pruebe los endpoints utilizando una herramienta como Postman o cURL. Debería poder convertir HTML a PDF utilizando ambos endpoints.
¡Eso es todo! Ahora ha aprendido cómo utilizar Dotnet 6 para crear una API que convierta HTML a PDF utilizando Chromium y Puppeteer.