Génération de codes QR dans Node.js : la bibliothèque qrcode et exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 qrcode


Aprè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 dans options.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.

Recommendations