Generación de códigos QR en Node.js: bibliotecas qrcode y qr-image
\n\nLos códigos QR se han convertido en una parte esencial de las aplicaciones web modernas: desde enlaces a sitios web y autenticación hasta la transmisión de datos de contacto e información de pago. En el ecosistema de Node.js, existen varias bibliotecas maduras que permiten generar códigos QR sin necesidad de API externas ni editores gráficos pesados. En este artículo, analizaremos en detalle las dos más populares: qrcode y qr-image. Aprenderá cómo instalar cada una, qué formatos de salida admiten y obtendrá ejemplos de código listos para integrar en su proyecto.
1. Biblioteca qrcode — generador universal
\n\nqrcode es una potente biblioteca compatible con JavaScript, TypeScript e incluso navegadores. Permite generar códigos QR en formatos PNG, SVG, canvas e incluso como texto simple. Su principal ventaja es la configuración detallada: puede cambiar colores, nivel de corrección de errores, agregar logotipos y gestionar los márgenes.
\n\nInstalación
\nnpm install qrcode\n\nEjemplo básico: creación de una imagen PNG
\nconst QRCode = require('qrcode');\n\n// Cadena simple para codificar\nconst data = 'https://pythonlib.ru';\n\nQRCode.toFile('qrcode.png', data, {\n color: {\n dark: '#000000', // color de los módulos (cuadrados)\n light: '#FFFFFF' // color de fondo\n },\n errorCorrectionLevel: 'H' // corrección de errores máxima\n}, function (err) {\n if (err) throw err;\n console.log('Código QR guardado como qrcode.png');\n});\n\nGeneración SVG (formato vectorial)
\nconst QRCode = require('qrcode');\n\nQRCode.toString('https://pythonlib.ru', {\n type: 'svg',\n color: {\n dark: '#2c3e50',\n light: '#ecf0f1'\n }\n}, function (err, svgString) {\n if (err) throw err;\n console.log(svgString); // muestra el marcado SVG en la consola\n});\n\nGeneración en buffer (para enviar por HTTP)
\nconst QRCode = require('qrcode');\n\nQRCode.toBuffer('https://pythonlib.ru', {\n type: 'png',\n width: 400,\n margin: 2\n}, function (err, buffer) {\n if (err) throw err;\n // buffer es un objeto Buffer que se puede enviar como respuesta HTTP\n // res.setHeader('Content-Type', 'image/png');\n // res.send(buffer);\n});\n\n2. Biblioteca qr-image — alternativa ligera
\n\nqr-image es una biblioteca minimalista sin dependencias innecesarias. Está orientada a la generación rápida de PNG, SVG, EPS e incluso PDF (mediante la instalación de un módulo adicional). Si no necesita configuraciones complejas de color ni logotipos, qr-image será una excelente opción.
Instalación
\nnpm install qr-image\n\nEjemplo: creación de una imagen PNG
\nconst qr = require('qr-image');\nconst fs = require('fs');\n\nconst data = 'https://pythonlib.ru';\nconst qr_png = qr.image(data, { type: 'png', size: 10 });\nqr_png.pipe(fs.createWriteStream('qr-image.png'));\n\nconsole.log('Código QR guardado como qr-image.png');\n\nGeneración SVG
\nconst qr = require('qr-image');\nconst fs = require('fs');\n\nconst data = 'https://pythonlib.ru';\nconst qr_svg = qr.image(data, { type: 'svg', size: 10 });\nqr_svg.pipe(fs.createWriteStream('qr-image.svg'));\n\nconsole.log('Código QR guardado como qr-image.svg');\n\nObtención de una cadena SVG sin guardar en archivo
\nconst qr = require('qr-image');\n\nconst data = 'https://pythonlib.ru';\nconst svgString = qr.imageSync(data, { type: 'svg' });\nconsole.log(svgString); // marcado SVG listo\n\n3. Comparación de bibliotecas
\n\n- \n
- qrcode — más configuraciones (color, márgenes, corrección de errores, logotipo), soporte para TypeScript, promesas y async/await. Es más adecuada para proyectos en producción donde se necesitan colores personalizados y alta confiabilidad.
También en la biblioteca
Envío de SMS en Swift (iOS/macOS): API MessageUI y servicios de terceros
Registro en C++: revisión de las mejores bibliotecas y soluciones
Cliente Redis Swift: RediStack para iOS/macOS
Envío de SMS en Java: resumen de bibliotecas API (Twilio, Nexmo, pasarelas SMS)
Biblioteca WebSocket Java: Tyrus — implementación de JSR 356 para tiempo real
Recommendations