Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
En el mundo digital de hoy en día, es crucial tener la capacidad de convertir páginas web o documentos HTML en archivos PDF. Esto puede ser útil para generar informes, crear facturas o simplemente compartir información en un formato más presentable. En esta entrada del blog, exploraremos cómo convertir páginas HTML a PDF utilizando Node.js y Puppeteer, una biblioteca de código abierto desarrollada por Google.
Puppeteer es una potente librería Node.js que permite a los desarrolladores controlar navegadores headless, principalmente Google Chrome o Chromium, y realizar diversas acciones como web scraping, tomar capturas de pantalla y generar PDFs. Puppeteer proporciona una amplia API para interactuar con el navegador, lo que lo convierte en una excelente opción para convertir HTML a PDF.
Antes de empezar, necesitarás configurar un nuevo proyecto NodeJS. Sigue estos pasos para empezar:
Instale NodeJS si aún no lo ha hecho(puede descargarlo de la páginaSitio web de NodeJS).
Cree una nueva carpeta para su proyecto y ábrala en Visual Studio Code o en cualquier editor de código específico.
Ejecute npm init
para crear un nuevo archivo package.json
para su proyecto. Siga las instrucciones y rellene la información solicitada.
Instale Puppeteer ejecutando npm install puppeteer
.
Ahora que tenemos nuestro proyecto configurado, vamos a sumergirnos en el código.
Para convertir plantillas HTML a un archivo PDF utilizando Puppeteer, siga estos pasos:
Cree un archivo llamado "HTML To PDF.js" en la carpeta.
const puppeteer = require('puppeteer');
const fs = require('fs');
El código comienza importando dos bibliotecas esenciales: puppeteer
, una herramienta versátil para controlar navegadores headless como Chrome y Chromium, y fs
, un módulo incorporado en NodeJS para manejar operaciones del sistema de archivos. Puppeteer le permite automatizar una amplia gama de tareas basadas en la web, como renderizar HTML, capturar pantallas y generar archivos PDF.
async function exportWebsiteAsPdf(html, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: 'new'
});
// Create a new page
const page = await browser.newPage();
await page.setContent(html, { waitUntil: 'domcontentloaded' });
// To reflect CSS used for screens instead of print
await page.emulateMediaType('screen');
// Download the PDF
const PDF = await page.pdf({
path: outputPath,
margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
printBackground: true,
format: 'A4',
});
// Close the browser instance
await browser.close();
return PDF;
}
La función exportWebsiteAsPdf
es el núcleo de nuestro fragmento de código. Esta función asíncrona acepta una cadena html
y una outputPath
como parámetros de entrada y devuelve un archivo PDF. La función realiza los siguientes pasos:
Lanza una nueva instancia de navegador headless usando Puppeteer.
Crea una nueva página del navegador.
Establece la cadena html
proporcionada como contenido de la página, esperando a que se cargue el contenido DOM. Cargamos las plantillas html
como una cadena HTML para convertirla al formato PDF.
Emula el tipo de medio 'screen' para aplicar el CSS utilizado para pantallas en lugar de estilos específicos de impresión.
Genera un archivo PDF a partir del contenido HTML cargado, especificando márgenes, impresión de fondo y formato.(A4).
Cierra la instancia del navegador.
// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');
exportWebsiteAsPdf(html, 'result.PDF').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
La última sección del código ilustra cómo utilizar la función exportWebsiteAsPdf
. Realizamos los siguientes pasos:
Lee el contenido HTML de un archivo HTML utilizando el método readFileSync
del módulo fs
. Aquí estamos cargando archivos de plantilla para generar PDF a partir de páginas HTML.
Llama a la función exportWebsiteAsPdf
con la cadena html
cargada y la outputPath
deseada.
Utilice un bloque .then
para gestionar la creación correcta del PDF, registrando un mensaje de éxito en la consola.
Emplee un bloque .catch
para gestionar cualquier error que se produzca durante el proceso de conversión de HTML a PDF, registrando un mensaje de error en la consola.
Este fragmento de código proporciona un ejemplo completo de cómo convertir una plantilla HTML en un archivo PDF utilizando NodeJS y Puppeteer. Implementando esta solución, podrá generar PDF de alta calidad de forma eficaz, satisfaciendo las necesidades de diversas aplicaciones y usuarios.
Además de convertir plantillas HTML, Puppeteer también permite convertir URL directamente en archivos PDF.
const puppeteer = require('puppeteer');
El código comienza importando la librería Puppeteer, que es una potente herramienta para controlar navegadores headless como Chrome y Chromium. Puppeteer le permite automatizar una serie de tareas basadas en la web, incluida la representación de su código HTML, la captura de pantallas y, en nuestro caso, la generación de archivos PDF.
async function exportWebsiteAsPdf(websiteUrl, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: 'new'
});
// Create a new page
const page = await browser.newPage();
// Open URL in current page
await page.goto(websiteUrl, { waitUntil: 'networkidle0' });
// To reflect CSS used for screens instead of print
await page.emulateMediaType('screen');
// Download the PDF
const PDF = await page.pdf({
path: outputPath,
margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
printBackground: true,
format: 'A4',
});
// Close the browser instance
await browser.close();
return PDF;
}
La función exportWebsiteAsPdf
es el núcleo de nuestro fragmento de código. Esta función asíncrona acepta una websiteUrl
y una outputPath
como parámetros de entrada y devuelve un archivo PDF. La función realiza los siguientes pasos:
Lanza una nueva instancia de navegador headless usando Puppeteer.
Crea una nueva página del navegador.
Navega a la websiteUrl
proporcionada y espera a que la red esté inactiva utilizando la opción waitUntil
establecida en networkidle0
.
Emula el tipo de medio "pantalla" para garantizar que se aplica el CSS utilizado para pantallas en lugar de estilos específicos de impresión.
Convierte la página web cargada en un archivo PDF con los márgenes, la impresión de fondo y el formato especificados.(A4).
Cierra la instancia del navegador.
// Usage example
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
La sección final del código muestra cómo utilizar la función exportWebsiteAsPdf
. Ejecutamos los siguientes pasos:
Llame a la función exportWebsiteAsPdf
con la websiteUrl
y la outputPath
deseadas.
Utilice un bloque then
para gestionar la creación correcta del PDF. En este bloque, registramos un mensaje de éxito en la consola.
Utilice un bloque catch
para gestionar cualquier error que se produzca durante el proceso de conversión de la página web a PDF. Si se produce un error, registramos un mensaje de error en la consola.
Integrando este fragmento de código en tus proyectos, podrás convertir sin esfuerzo URLs en archivos PDF de alta calidad utilizando NodeJS y Puppeteer.
Explorar IronPDF es una conocida biblioteca .NET que se utiliza para generar, editar y extraer contenido de archivos PDF. Proporciona una solución sencilla y eficaz para crear PDF a partir de HTML, texto, imágenes y documentos PDF existentes. IronPDF es compatible con proyectos .NET Core, .NET Framework y .NET 5.0+, lo que lo convierte en una opción versátil para diversas aplicaciones.
Conversión de HTML a PDF con IronPDF: IronPDF permite convertir contenido HTML, incluido CSS, en archivos PDF. Esta función le permite crear documentos PDF perfectos a partir de páginas web o plantillas HTML.
Procesamiento de URL: IronPDF puede obtener páginas web directamente de un servidor mediante una URL y convertirlas en archivos PDF, lo que facilita el archivado de contenidos web o la generación de informes a partir de páginas web dinámicas.
Fusión de texto, imágenes y PDF: IronPDF le permite fusionar texto, imágenes y archivos PDF existentes en un único documento PDF. Esta función es especialmente útil para crear documentos complejos con múltiples fuentes de contenido.
Manipulación de PDF: IronPDF proporciona herramientas para editar archivos PDF existentes, como añadir o eliminar páginas, modificar metadatos o incluso extraer texto e imágenes de documentos PDF.
En conclusión, la generación y manipulación de archivos PDF es un requisito común en muchas aplicaciones, y disponer de las herramientas adecuadas es crucial. Las soluciones proporcionadas en este artículo, como el uso de Puppeteer con NodeJS o IronPDF con .NET, ofrecen métodos potentes y eficaces para convertir contenido HTML y URL en documentos PDF profesionales y de alta calidad.
IronPDF, en particular, destaca por su amplio conjunto de funciones, que lo convierten en la mejor opción para los desarrolladores .NET. IronPDF ofrece unprueba gratuita permitiendo explorar sus capacidades.
Los usuarios también pueden beneficiarse de laIron Suite professional, un paquete de cinco bibliotecas .NET profesionales que incluyeIronXL, IronPDF, IronOCR y mucho más.
9 productos API .NET para sus documentos de oficina