Génération de codes QR sur Node.js avec la bibliothèque qrcode
Les codes QR sont devenus une partie intégrante du web moderne : des liens Wi-Fi à la confirmation de paiements. Si vous développez un backend en Node.js et souhaitez créer des codes QR par programmation, la bibliothèque qrcode est l'outil le plus populaire et le plus simple. Elle ne nécessite pas l'installation de paquets graphiques supplémentaires et peut produire un résultat dans différents formats : PNG, SVG, canvas HTML et même un affichage textuel pour le terminal.
Installation
Installez le paquet via npm :
npm install qrcodeAprès l'installation, importez le module dans votre projet :
const QRCode = require('qrcode');Méthodes principales
La bibliothèque fournit trois méthodes principales pour la génération :
QRCode.toDataURL(text, options)— retourne une Data URL (chaîne base64 avec une image PNG).QRCode.toBuffer(text, options)— retourne un Buffer avec une image PNG (pratique pour sauvegarder dans un fichier ou envoyer via HTTP).QRCode.toString(text, options)— retourne une chaîne sous forme de SVG ou de caractères de terminal (le type de sortie est défini dansoptions.type).QRCode.toCanvas(canvasElement, text, options)— pour un environnement navigateur (canvas).
Exemple simple : création d'un code QR en PNG (buffer)
Le scénario le plus courant est de générer une image et de la sauvegarder dans un fichier ou de la fournir à l'utilisateur. Voici comment faire :
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('Code QR sauvegardé dans qrcode.png');}).catch(err => console.error(err));Dans cet exemple, nous définissons une taille de 400 pixels, une marge de 2 modules et un schéma de couleurs noir et blanc. La méthode toBuffer retourne une Promise, nous utilisons donc .then() ou async/await.
Génération d'un code QR en SVG
Pour les applications web, il est souvent plus pratique d'utiliser le format vectoriel SVG : il se redimensionne sans perte de qualité et prend moins de place. Spécifiez type: 'svg' dans les options :
const QRCode = require('qrcode');
QRCode.toString('https://pythonlib.ru', { type: 'svg', width: 300, color: { dark: '#1a73e8', light: '#ffffff' }}).then(svgString => { console.log(svgString); // Vous pouvez maintenant sauvegarder svgString dans un fichier ou l'insérer dans du HTML}).catch(err => console.error(err));Affichage du code QR directement dans le terminal
Parfois, vous avez besoin de vérifier rapidement un lien sans ouvrir le navigateur. La bibliothèque peut dessiner un code QR avec des caractères Unicode dans la console :
const QRCode = require('qrcode');
QRCode.toString('Bonjour, PythonLib!', { type: 'terminal', small: true}).then(qr => { console.log(qr);}).catch(err => console.error(err));Le paramètre small: true rend le code QR plus compact (utilise des demi-bloc). Si vous le supprimez, l'image sera plus grande mais plus détaillée.
Paramètres et options
L'objet options permet de contrôler la génération de manière flexible. Les champs principaux sont :
width— largeur de l'image en pixels (par défaut 256).margin— marge par rapport au bord (en modules de code QR, par défaut 4).color.dark— couleur des modules sombres (hex, rgb ou nom de couleur).color.light— couleur de fond (par défaut blanc).errorCorrectionLevel— niveau de correction d'erreurs :'L'(7 %),'M'(15 %),'Q'(25 %),'H'(30 %). Plus le niveau est élevé, plus les données peuvent être restaurées, mais le code QR lui-même devient plus dense.