Generación de PDF en JavaScript (Node.js): bibliotecas y herramientas

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Generación de PDF en JavaScript (Node.js): revisión de bibliotecas y herramientas



La creación de documentos PDF es una de las tareas comunes en el desarrollo web. Ya sea para generar facturas, informes, certificados o simplemente exportar datos, Node.js ofrece varias soluciones potentes. En este artículo, revisaremos las principales bibliotecas para trabajar con PDF en el lado del servidor de JavaScript, sus capacidades y ejemplos de uso.



¿Por qué generar PDF en el servidor?

La generación de PDF en el servidor (en Node.js) ofrece varias ventajas:

  • Uniformidad — el documento se ve igual en todos los dispositivos
  • Seguridad — los datos no salen del servidor
  • Automatización — se pueden crear PDF según un horario o ante eventos específicos
  • Soporte de lógica compleja — acceso a bases de datos, sistema de archivos y otros recursos


Bibliotecas principales para generar PDF en Node.js



1. PDFKit

PDFKit es la biblioteca más popular para crear PDF "desde cero". No requiere dependencias externas y permite controlar completamente el contenido del documento.

Ejemplo de uso:

const PDFDocument = require('pdfkit');const fs = require('fs');

const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));

// Agregamos contenidodoc.fontSize(25).text('¡Hola, mundo!', 100, 100);doc.fontSize(12).text('Este es un PDF creado con PDFKit.', 100, 150);

// Dibujamos una líneadoc.moveTo(100, 200).lineTo(500, 200).stroke();

// Finalizamos el documentodoc.end();

Capacidades:

  • Agregar texto con diferentes fuentes y tamaños
  • Insertar imágenes (JPEG, PNG)
  • Dibujar líneas, rectángulos y círculos
  • Soporte de enlaces y marcadores
  • Creación de documentos de varias páginas


2. Puppeteer

Puppeteer es una herramienta para controlar el navegador Chrome/Chromium. Permite generar PDF a partir de páginas HTML, lo cual es útil para diseños complejos.

Ejemplo de uso:

const puppeteer = require('puppeteer');

async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage();

await page.setContent('<h1>Título</h1><p>Texto del documento</p>'); await page.pdf({ path: 'page.pdf', format: 'A4' });

await browser.close();}

generatePDF();

Características:

  • Soporte de CSS, JavaScript y todas las tecnologías web modernas
  • Ideal para convertir plantillas HTML a PDF
  • Posibilidad de imprimir con parámetros definidos (formato, márgenes, escala)
  • Requiere la instalación de Chromium (~300 MB)


3. jsPDF (con adaptación para Node.js)

jsPDF es una biblioteca del lado del cliente, pero existen envoltorios para usarla en Node.js (por ejemplo, jspdf-autotable).

Ejemplo (usando jspdf y html2canvas):

const { jsPDF } = require('jspdf');const fs = require('fs');

const doc = new jsPDF();doc.text('¡Hola desde Node.js!', 10, 10);doc.save('output.pdf');

Limitaciones: jsPDF no soporta diseños complejos y requiere bibliotecas adicionales para trabajar con HTML.



4. pdfmake

pdfmake es una biblioteca basada en la descripción declarativa del documento en formato JSON.

Ejemplo:

const pdfmake = require('pdfmake');const fs = require('fs');

const fonts = { Roboto: { normal: 'fonts/Roboto-Regular.ttf', bold: 'fonts/Roboto-Medium.ttf' }};

const printer = new pdfmake(fonts);

const docDefinition = { content: [ { text:

Recommendations