Generación de PDF en TypeScript: guía completa para desarrolladores
La creación de documentos PDF es una de las tareas más demandadas en el desarrollo web moderno. En el lenguaje TypeScript existen varias bibliotecas potentes que permiten generar PDF tanto del lado del cliente como del servidor (Node.js). En este artículo, analizaremos tres herramientas principales: PDFKit, jsPDF y pdf-lib, y mostraremos ejemplos prácticos de su uso.
¿Por qué generar PDF en TypeScript?
TypeScript añade tipado estático, lo cual es especialmente importante al trabajar con documentos de estructura compleja. El uso de TypeScript para la generación de PDF permite:
- Evitar errores de tipo al crear tablas y estilos
- Simplificar la refactorización de proyectos grandes
- Integrar la generación de PDF con proyectos TypeScript existentes (React, Angular, Node.js)
Resumen de bibliotecas para la generación de PDF
1. PDFKit (Node.js)
PDFKit es la biblioteca más popular para crear PDF en el servidor. Proporciona acceso de bajo nivel a los objetos PDF, admite fuentes, imágenes, incrustación de gráficos vectoriales y caracteres cirílicos (al conectar las fuentes correspondientes).
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(24).text('¡Hola, mundo!', 100, 100);doc.fontSize(12).text('Este es un PDF creado con PDFKit y TypeScript', 100, 150);doc.end();Características:
- Funciona solo en Node.js (no es adecuado para el navegador)
- Requiere configuración manual de fuentes para cirílico
- Admite diseños complejos, tablas y gráficos
2. jsPDF (navegador y Node.js)
jsPDF es una biblioteca universal que funciona tanto en el navegador como en el servidor. Es más fácil de aprender, pero tiene limitaciones en cuanto a la complejidad de los diseños.
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('Generación de PDF en TypeScript', 10, 10);doc.save('document.pdf');Características:
- API simple para documentos básicos
- Soporte para cirílico (requiere conectar fuentes mediante addFont)
- Puede trabajar con canvas y elementos HTML
3. pdf-lib (moderno y flexible)
pdf-lib es una biblioteca ligera con excelente soporte para TypeScript. Permite crear PDF desde cero o editar documentos existentes.
import { PDFDocument, StandardFonts, rgb } from 'pdf-lib';
async function createPDF() { const doc = await PDFDocument.create(); const page = doc.addPage(); const font = await doc.embedFont(StandardFonts.Helvetica);
page.drawText('PDF con pdf-lib', { x: 50, y: 700, size: 24, font, color: rgb(0, 0, 0), });
const pdfBytes = await doc.save(); // Guardar o enviar}Características:
- Soporte completo para TypeScript (tipos incluidos)
- Puede funcionar en el navegador y Node.js
- Permite modificar PDF existentes
- Requiere trabajo manual con fuentes para cirílico
Comparación de bibliotecas
| Característica | PDFKit | jsPDF | pdf-lib |
|---|---|---|---|
| Entorno de ejecución | Node.js | Navegador + Node.js | Navegador + Node.js |
| Soporte para TypeScript | Parcial (a través de @types) | Parcial | Completo |
| Cirílico | Requiere fuentes | Requiere fuentes | Requiere fuentes |
| Diseños complejos | Excelente |