Generación de PDF en TypeScript: revisión de herramientas
La generación de documentos PDF es una de las tareas comunes en el desarrollo web. Gracias a TypeScript y a potentes bibliotecas, puede crear informes complejos, facturas, certificados y otros documentos directamente en el navegador o en el servidor (Node.js). En este artículo, revisaremos las principales bibliotecas para trabajar con PDF en TypeScript, sus características y ejemplos de uso.
1. jsPDF — biblioteca ligera y popular
jsPDF es una de las bibliotecas más comunes para crear PDF en el lado del cliente. Permite generar documentos directamente en el navegador usando solo JavaScript/TypeScript. La biblioteca admite texto, imágenes, tablas y formato básico.
Instalación
npm install jspdf @types/jspdfEjemplo: creación de un PDF simple
import { jsPDF } from 'jspdf';
const doc = new jsPDF();doc.text('¡Hola, mundo!', 10, 10);doc.save('document.pdf');Ventajas y desventajas
- ✅ Facilidad de uso
- ✅ Funciona en el navegador y Node.js (con módulos adicionales)
- ❌ Soporte limitado para diseños complejos
- ❌ Difícil trabajar con tablas (requiere configuración manual)
2. PDFKit — potente herramienta para generación en servidor
PDFKit es una biblioteca para Node.js que proporciona control total sobre la creación de PDF. Es ideal para la generación en servidor de documentos complejos: informes, facturas, folletos. Admite fuentes, degradados, gráficos vectoriales y documentos de varias páginas.
Instalación
npm install pdfkit @types/pdfkitEjemplo: creación de PDF con texto e imagen
import PDFDocument from 'pdfkit';import fs from 'fs';
const doc = new PDFDocument();doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Título', 100, 100);doc.image('path/to/image.png', 100, 150, { width: 200 });doc.end();Ventajas y desventajas
- ✅ Flexibilidad y control total
- ✅ Soporte para gráficos complejos
- ❌ No funciona en el navegador (solo Node.js)
- ❌ API más compleja en comparación con jsPDF
3. Puppeteer — generación de HTML a PDF
Puppeteer es una biblioteca para controlar el navegador Chrome sin interfaz gráfica. Permite convertir páginas HTML en PDF, lo cual es útil si ya tiene el diseño del documento (por ejemplo, una factura o informe). Es adecuado tanto para generación en cliente como en servidor.
Instalación
npm install puppeteerEjemplo: generación de PDF desde HTML
import puppeteer from 'puppeteer';
async function generatePDF() { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setContent('<h1>¡Hola, PDF!</h1><p>Este es un informe.</p>'); await page.pdf({ path: 'report.pdf', format: 'A4' }); await browser.close();}
generatePDF();Ventajas y desventajas
- ✅ Uso completo de CSS y HTML
- ✅ Soporte para diseños y estilos complejos
- ❌ Requiere instalar Chrome (gran tamaño)
- ❌ Más lento que las bibliotecas especializadas
4. pdfmake — generación basada en estructura JSON
pdfmake es una biblioteca que utiliza un enfoque declarativo: usted describe la estructura del documento en JSON y la biblioteca construye el PDF por sí misma. Es ideal para crear tablas, listas e informes.
Instalación
npm install pdfmake @types/pdfmakeEjemplo: creación de PDF con tabla
import pdfMake from 'pdfmake/build/pdfmake';import pdfFonts from 'pdfmake/build/vfs_fonts';
pdfMake.vfs = pdfFonts.pdfMake.vfs;
const docDefinition = { content: [ { text: 'Informe' También en la biblioteca
Migraciones de bases de datos en C# (.NET): Entity Framework, FluentMigrator y otros enfoques
once_cell en Rust: guía completa con ejemplos prácticos
Cliente HTTP para JavaScript (Node.js): top bibliotecas para trabajar con API
Chai para JavaScript (Node.js): guía completa con ejemplos