Generación de PDF en JavaScript: librería pdf-lib

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
```html

¿Qué es pdf-lib y para qué sirve?

pdf-lib es una potente y limpia librería de JavaScript para crear y modificar documentos PDF tanto en el lado del servidor (Node.js) como en el navegador. A diferencia de soluciones pesadas como Puppeteer, pdf-lib no requiere instalar un navegador ni dependencias externas. Trabaja directamente con la especificación PDF, lo que la convierte en una opción ideal para generar documentos simples y de complejidad media: informes, facturas, certificados, formularios y contratos.

Instalación

Para instalar en un proyecto Node.js, ejecuta el comando:

npm install pdf-lib

La librería no tiene dependencias nativas y es compatible con Node.js 10+.

Funcionalidades principales

  • Creación de PDF desde cero (páginas en blanco, texto, imágenes, incrustación de fuentes).
  • Edición de PDF existentes (extraer páginas, insertar, eliminar, rotar).
  • Trabajo con formularios (rellenar campos, crear casillas de verificación y botones de opción).
  • Soporte para Unicode y fuentes personalizadas (TTF, OTF).
  • Añadir metadatos (autor, título, fecha).
  • Exportación a ArrayBuffer, Uint8Array o Blob.

Ejemplo de código en JavaScript (Node.js)

A continuación se muestra un ejemplo simple de creación de un PDF con texto e imagen:

const { PDFDocument, rgb } = require('pdf-lib');const fs = require('fs');

async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage([600, 400]); // Añadimos texto page.drawText('¡Hola, mundo!', { x: 50, y: 350, size: 30, color: rgb(0, 0.53, 0.71), }); // Incrustamos una fuente (opcional) const fontBytes = fs.readFileSync('./fonts/roboto.ttf'); const font = await doc.embedFont(fontBytes); page.drawText('Fuente personalizada', { x: 50, y: 300, size: 20, font: font, }); // Guardamos const pdfBytes = await doc.save(); fs.writeFileSync('output.pdf', pdfBytes); console.log('¡PDF creado!');}

createPDF().catch(console.error);

Este código crea un documento con dos líneas, una de las cuales utiliza una fuente incrustada. Para trabajar con imágenes, usa doc.embedPng() o doc.embedJpg().

Cuándo usar pdf-lib

  • Necesitas generar un PDF rápidamente sin ejecutar un navegador.
  • El documento no contiene maquetación compleja (tablas, columnas) — para eso son mejores los motores de plantillas como Puppeteer.
  • Requieres una librería ligera con un tamaño mínimo (~500 KB).
  • Trabajas con formularios o editas PDF existentes.

Conclusión

pdf-lib es una excelente opción para proyectos que necesitan generar PDF en Node.js sin dependencias adicionales. Es fácil de aprender, está bien documentada y soporta todas las operaciones básicas. Para diseños complejos, considera Puppeteer o jsPDF, pero para el 80% de las tareas, pdf-lib será más que suficiente.

```

Recommendations