javascript

Exportar PDF de html2pdf.js (jsPDF) como Blob

En el tutorial de hoy vamos a trabajar con JavaScript y la librería html2pdf.js que a su vez usa jsPDF. Estas librerías sirven para generar un PDF y descargarlo, como ya te he mostrado en otro tutorial.

Lo que vamos a ver hoy es cómo obtener el PDF generado como un BLOB, es decir, como un montón de bytes que representan al archivo, ya sea para descargarlo, almacenarlo en otro lugar o enviarlo a algún servidor.

Creando PDF

Ya sea que estés usando html2pdf.js o jsPDF, este tutorial no cubre la generación del PDF; sino su exportación. Revisa el otro tutorial para saber cómo crear un PDF a partir de HTML en el lado del cliente.

Obtener PDF como archivo

Ahora veamos lo interesante: cómo obtener los bytes del PDF, obteniendo la representación BLOB del PDF. Se puede generar un PDF con:

html2pdf()
.set({
    margin: 1,
    filename: 'documento.pdf',
    image: {
        type: 'jpeg',
        quality: 0.98
    },
    html2canvas: {
        scale: 3, // A mayor escala, mejores gráficos, pero más peso
        letterRendering: true,
    },
    jsPDF: {
        unit: "in",
        format: "a3",
        orientation: 'portrait' // landscape o portrait
    }
})

Y después, al invocar a save, el documento PDF se va a guardar. Pero para obtenerlo como BLOB, hay que invocar a output pasándole una cadena como primer argumento indicando el formato, que según la documentación de jsPDF puede ser arraybuffer, blob, bloburi, datauristring y otras más.

En este caso quiero el PDF como Blob así que indico blob en el argumento, y al hacerlo, se nos devolverá una promesa que al ser resuelta traerá consigo los bytes para armar el PDF.

const $elementoParaConvertir = document.body; // <-- Aquí puedes elegir cualquier elemento del DOM
const pdfComoBlob = await html2pdf()
.set({
    margin: 1,
    filename: 'documento.pdf',
    image: {
        type: 'jpeg',
        quality: 0.98
    },
    html2canvas: {
        scale: 3, // A mayor escala, mejores gráficos, pero más peso
        letterRendering: true,
    },
    jsPDF: {
        unit: "in",
        format: "a3",
        orientation: 'portrait' // landscape o portrait
    }
})
.from($elementoParaConvertir)
.output("blob");

La parte importante es al invocar output("blob"), que devolverá una promesa (por ello el uso de await) y al ser resuelta tendrá el PDF como bytes.

Alternativamente, si no quieres usar async y await para esperar la promesa, puedes usar then y especificar el callback:

html2pdf().set().from().output("blob").then((pdfComoBlob)=>{

// Aquí hacer algo con el PDF

});

Y así es como puedes exportar un PDF creado con html2pdf, jsPDF y obviamente JavaScript a su representación Blob. Cuando tengas el blob, puedes hacer varias cosas, entre ellas subirlo a un servidor con cualquier lenguaje de programación.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Entradas recientes

Servidor HTTP en Android con Flutter

El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…

4 días hace

Imprimir automáticamente todos los PDF de una carpeta

En este post te voy a enseñar a designar una carpeta para imprimir todos los…

5 días hace

Guía para imprimir en plugin versión 1 desde Android

En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…

1 semana hace

Añadir tasa de cambio en sistema de información

Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…

2 semanas hace

Comprobar validez de licencia de plugin ESC POS

Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…

2 semanas hace

Imprimir euro € en impresora térmica

Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…

4 semanas hace

Esta web usa cookies.