Generación de códigos QR en Node.js: biblioteca qrcode y ejemplos

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 códigos QR en Node.js con la biblioteca qrcode



Los códigos QR se han convertido en una parte esencial de la web moderna: desde enlaces a Wi-Fi hasta confirmación de pagos. Si estás desarrollando un backend en Node.js y deseas crear códigos QR mediante programación, la biblioteca qrcode es la herramienta más popular y sencilla. No requiere instalar paquetes gráficos adicionales y puede generar resultados en diferentes formatos: PNG, SVG, lienzo HTML e incluso en formato de texto para la terminal.



Instalación

Instala el paquete a través de npm:

npm install qrcode


Después de la instalación, importa el módulo en tu proyecto:

const QRCode = require('qrcode');


Métodos principales

La biblioteca proporciona tres métodos principales para la generación:

  • QRCode.toDataURL(text, options) — devuelve una URL de datos (cadena base64 con una imagen PNG).
  • QRCode.toBuffer(text, options) — devuelve un Buffer con una imagen PNG (útil para guardar en un archivo o enviar a través de HTTP).
  • QRCode.toString(text, options) — devuelve una cadena en formato SVG o caracteres de terminal (el tipo de salida se define en options.type).
  • QRCode.toCanvas(canvasElement, text, options) — para entornos de navegador (canvas).


Ejemplo simple: creación de un código QR en PNG (buffer)

El escenario más común es generar una imagen y guardarla en un archivo o entregarla al usuario. Así es como se hace:

const QRCode = require('qrcode');const fs = require('fs');

QRCode.toBuffer('https://pythonlib.ru', { width: 400, margin: 2, color: { dark: '#000000', light: '#ffffff' }}).then(buffer => { fs.writeFileSync('qrcode.png', buffer); console.log('Código QR guardado en qrcode.png');}).catch(err => console.error(err));


En este ejemplo, establecemos un tamaño de 400 píxeles, un margen de 2 módulos y un esquema de color blanco y negro. El método toBuffer devuelve una Promise, por lo que usamos .then() o async/await.



Generación de código QR en SVG

Para aplicaciones web, a menudo es más conveniente usar el formato vectorial SVG: se escala sin pérdida de calidad y ocupa menos espacio. Especifica type: 'svg' en las opciones:

const QRCode = require('qrcode');

QRCode.toString('https://pythonlib.ru', { type: 'svg', width: 300, color: { dark: '#1a73e8', light: '#ffffff' }}).then(svgString => { console.log(svgString); // Ahora puedes guardar svgString en un archivo o insertarlo en HTML}).catch(err => console.error(err));


Mostrar el código QR directamente en la terminal

A veces es necesario verificar rápidamente un enlace sin abrir el navegador. La biblioteca puede dibujar un código QR con caracteres Unicode en la consola:

const QRCode = require('qrcode');

QRCode.toString('¡Hola, PythonLib!', { type: 'terminal', small: true}).then(qr => { console.log(qr);}).catch(err => console.error(err));


El parámetro small: true hace que el código QR sea más compacto (usa medios bloques). Si se elimina, la imagen será más grande pero más detallada.



Configuraciones y parámetros

El objeto options permite controlar la generación de forma flexible. Los campos principales son:

  • width — ancho de la imagen en píxeles (por defecto 256).
  • margin — margen desde el borde (en módulos del código QR, por defecto 4).
  • color.dark — color de los módulos oscuros (hex, rgb o nombre del color).
  • color.light — color de fondo (por defecto blanco).
  • errorCorrectionLevel — nivel de corrección de errores: 'L' (7%), 'M' (15%), 'Q' (25%), 'H' (30%). Cuanto mayor es el nivel, más datos se pueden recuperar, pero el código QR se vuelve más denso.

Recommendations