Génération de QR codes sur Node.js : bibliothèques qrcode et qr-image
\n\nLes QR codes sont devenus une partie intégrante des applications web modernes : des liens vers des sites web et l'authentification jusqu'au transfert de données de contact et d'informations de paiement. Dans l'écosystème Node.js, il existe plusieurs bibliothèques matures qui permettent de générer des QR codes sans API tierces ni éditeurs graphiques lourds. Dans cet article, nous allons examiner en détail les deux plus populaires : qrcode et qr-image. Vous apprendrez comment installer chacune d'elles, quels formats de sortie elles prennent en charge, et vous obtiendrez des exemples de code prêts à l'emploi pour les intégrer dans votre projet.
1. Bibliothèque qrcode — un générateur universel
\n\nqrcode est une bibliothèque puissante prenant en charge JavaScript, TypeScript et même les navigateurs. Elle permet de générer des QR codes aux formats PNG, SVG, canvas et même sous forme de texte simple. Son principal avantage est la configuration détaillée : vous pouvez modifier les couleurs, le niveau de correction d'erreurs, ajouter des logos et gérer les marges.
\n\nInstallation
\nnpm install qrcode\n\nExemple de base : création d'une image PNG
\nconst QRCode = require('qrcode');\n\n// Chaîne simple à encoder\nconst data = 'https://pythonlib.ru';\n\nQRCode.toFile('qrcode.png', data, {\n color: {\n dark: '#000000', // couleur des modules (carrés)\n light: '#FFFFFF' // couleur de fond\n },\n errorCorrectionLevel: 'H' // correction d'erreurs maximale\n}, function (err) {\n if (err) throw err;\n console.log('QR code enregistré sous qrcode.png');\n});\n\nGénération SVG (format vectoriel)
\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); // affichage du balisage SVG dans la console\n});\n\nGénération en buffer (pour envoi via 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 est un objet Buffer qui peut être envoyé comme réponse HTTP\n // res.setHeader('Content-Type', 'image/png');\n // res.send(buffer);\n});\n\n2. Bibliothèque qr-image — une alternative légère
\n\nqr-image est une bibliothèque minimaliste sans dépendances superflues. Elle est conçue pour une génération rapide de PNG, SVG, EPS et même PDF (via l'installation d'un module supplémentaire). Si vous n'avez pas besoin de configurations complexes de couleurs et de logos, qr-image sera un excellent choix.
Installation
\nnpm install qr-image\n\nExemple : création d'une image 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('QR code enregistré sous qr-image.png');\n\nGénération 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('QR code enregistré sous qr-image.svg');\n\nObtention d'une chaîne SVG sans enregistrement dans un fichier
\nconst qr = require('qr-image');\n\nconst data = 'https://pythonlib.ru';\nconst svgString = qr.imageSync(data, { type: 'svg' });\nconsole.log(svgString); // balisage SVG prêt\n\n3. Comparaison des bibliothèques
\n\n- \n
- qrcode — plus de paramètres (couleur, marges, correction d'erreurs, logo), prise en charge de TypeScript, des promesses et async/await. Mieux adapté aux projets de production où des couleurs personnalisées et une haute fiabilité sont nécessaires.
Aussi dans la bibliothèque
Recommendations