Generación de informes PDF en TypeScript: 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 informes PDF en TypeScript: resumen de bibliotecas y ejemplos prácticos



La generación de documentos PDF es una de las tareas clave en el desarrollo de aplicaciones web modernas y sistemas empresariales. Informes, facturas, certificados, paneles analíticos: todo esto requiere una herramienta conveniente y flexible para crear PDF en el lado del servidor o del cliente. TypeScript, como superconjunto estrictamente tipado de JavaScript, ofrece excelentes oportunidades para implementar dicha funcionalidad. En este artículo, revisaremos las principales bibliotecas para generar PDF en TypeScript, sus características, ventajas y ejemplos de uso.



¿Por qué usar TypeScript para generar PDF?



TypeScript añade tipado estático, lo que simplifica enormemente el desarrollo de sistemas complejos de generación de informes. El IDE proporciona autocompletado, verificación de tipos y refactorización, lo que reduce la cantidad de errores. Además, el código TypeScript es fácil de mantener y escalar, especialmente en proyectos grandes.



Principales bibliotecas para generar PDF en TypeScript



Consideremos las tres herramientas más populares: PDFKit, jsPDF y Puppeteer. Cada una tiene su nicho y características particulares.



1. PDFKit

PDFKit es una potente biblioteca para crear documentos PDF en Node.js. Está completamente escrita en JavaScript y es compatible con TypeScript a través de definiciones de tipos (@types/pdfkit). PDFKit permite crear documentos desde cero, añadir texto, imágenes, gráficos vectoriales, tablas y mucho más.



Ventajas:

  • Control total sobre el contenido y la estructura del PDF.
  • Soporte para fuentes, colores, transparencia.
  • Soporte integrado para cirílico (al cargar fuentes).
  • Alto rendimiento.


Ejemplo de uso de PDFKit con TypeScript:

import PDFDocument from 'pdfkit';import * as fs from 'fs';

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

doc.fontSize(25).text('Informe de ventas', 100, 100);doc.fontSize(12).text('Fecha: 2025-03-15', 100, 150);doc.moveDown();

doc.text('Nombre: Portátil');doc.text('Cantidad: 10');doc.text('Importe: 1 200 000 RUB');

doc.end();


Para trabajar correctamente con cirílico, es necesario cargar una fuente, por ejemplo:

doc.registerFont('Roboto', 'fonts/Roboto-Regular.ttf');doc.font('Roboto').text('¡Hola, mundo!');


2. jsPDF

jsPDF es una biblioteca del lado del cliente para generar PDF directamente en el navegador. También tiene tipos para TypeScript. jsPDF es ideal para crear informes simples, facturas y albaranes sin procesamiento en el servidor.



Ventajas:

  • Funciona del lado del cliente (no necesita servidor).
  • Configuración y uso sencillos.
  • Soporte para maquetación HTML mediante el plugin html2canvas.


Ejemplo de uso de jsPDF con TypeScript:

import { jsPDF } from 'jspdf';

const doc = new jsPDF();doc.setFontSize(18);doc.text('Informe del proyecto', 10, 20);doc.setFontSize(12);doc.text('Completado: 75%', 10, 40);doc.text('Presupuesto: 2 500 000 RUB', 10, 50);

doc.save('project-report.pdf');


Importante: jsPDF no admite cirílico "de fábrica". Para trabajar con texto en ruso, es necesario cargar fuentes mediante addFileToVFS y addFont.



3. Puppeteer

Puppeteer es una biblioteca para controlar el navegador Chrome/Chromium a través del protocolo DevTools. Permite generar PDF a partir de HTML/CSS con la máxima precisión, ya que utiliza el renderizado real del navegador. Puppeteer tiene tipos oficiales de TypeScript.



Ventajas:

  • Soporte completo de CSS, Flexbox, Grid, cirílico.

Recommendations