andresmeza.com

Dev Stuff

Language / Idioma

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.