Generación de PDF en JavaScript: biblioteca PDFKit

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

¿Qué es PDFKit?

PDFKit es una potente biblioteca para generar documentos PDF en JavaScript (Node.js). Permite crear archivos PDF complejos de varias páginas con texto, imágenes, tablas, gráficos vectoriales y anotaciones. PDFKit implementa completamente la especificación PDF 1.7 y no requiere dependencias externas, lo que lo convierte en una opción ideal para aplicaciones de servidor en Node.js.

¿Por qué es necesaria la generación de PDF en JavaScript?

La generación de PDF en el lado del servidor es útil en varios escenarios: creación de facturas y recibos, generación de informes, creación de certificados, exportación de datos a un formato portátil. PDFKit permite automatizar estos procesos, funcionando completamente en el entorno de Node.js sin necesidad de un navegador. Puede crear documentos dinámicamente, insertar datos de una base de datos, agregar marcas de agua y firmas.

Instalación de PDFKit

La instalación de la biblioteca es sencilla y se realiza a través de npm:

npm install pdfkit

También se recomienda instalar pdfkit-table para trabajar cómodamente con tablas o svg-to-pdfkit para insertar gráficos SVG.

Funciones principales de PDFKit

  • Texto y fuentes: soporte para Unicode, incrustación de fuentes, alineación, saltos de línea, kerning.
  • Gráficos vectoriales: líneas, rectángulos, círculos, curvas de Bézier, degradados.
  • Imágenes: inserción de JPEG, PNG, SVG (a través de un plugin).
  • Tablas: creación de tablas con ancho de columna automático, estilos y encabezados.
  • Anotaciones: enlaces, marcadores, metadatos (autor, tema), marcas de agua.
  • Páginas: adición, configuración de tamaño, orientación, márgenes, numeración.

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

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

// Creamos el documentoconst doc = new PDFDocument();

// Guardamos en un archivoconst stream = fs.createWriteStream('output.pdf');doc.pipe(stream);

// Añadimos un títulodoc.fontSize(25).text('¡Hola, mundo!', 100, 100);

// Añadimos texto con salto de líneadoc.fontSize(12).text('Este es un ejemplo de PDF creado con PDFKit.', 100, 150);

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

// Insertamos una imagen (si existe)// doc.image('path/to/image.png', 100, 250, {width: 200});

// Nueva páginadoc.addPage();doc.fontSize(20).text('Página 2');

// Añadimos una tabla (a través de pdfkit-table)// doc.table({ headers: ['Nombre', 'Edad'], rows: [['Ana', 25], ['Iván', 30]] });

// Finalizamos el documentodoc.end();

stream.on('finish', () => { console.log('PDF creado exitosamente');});

¿Cuándo usar PDFKit?

PDFKit es adecuado para tareas donde se requiere un control total sobre el contenido del PDF: desde documentos de texto simples hasta informes complejos con gráficos, tablas y marcas de agua. Es más rápido y ligero que Puppeteer si no se necesita maquetación HTML. Use PDFKit si está creando documentos en un servidor Node.js y desea evitar ejecutar un navegador. Para tareas simples donde se necesita HTML-to-PDF, Puppeteer es una mejor opción.

Recommendations