توليد رموز QR على Node.js: المكتبات qrcode و qr-image
\n\nأصبحت رموز QR جزءًا لا يتجزأ من تطبيقات الويب الحديثة: من روابط المواقع والمصادقة إلى نقل بيانات الاتصال ومعلومات الدفع. في النظام البيئي Node.js، توجد العديد من المكتبات الناضجة التي تسمح بتوليد رموز QR دون الحاجة إلى واجهات برمجة تطبيقات خارجية أو محررات رسومية ثقيلة. في هذه المقالة، سنستعرض بالتفصيل المكتبتين الأكثر شيوعًا: qrcode و qr-image. ستتعلم كيفية تثبيت كل منهما، وما هي صيغ الإخراج التي يدعمانها، وستحصل على أمثلة جاهزة للتكامل مع مشروعك.
1. مكتبة qrcode — مولد شامل
\n\nqrcode هي مكتبة قوية تدعم JavaScript و TypeScript وحتى المتصفحات. تتيح توليد رموز QR بصيغ PNG و SVG و canvas وحتى كنص بسيط. الميزة الرئيسية هي الإعدادات التفصيلية: يمكنك تغيير الألوان ومستوى تصحيح الأخطاء وإضافة الشعارات والتحكم في الهوامش.
\n\nالتثبيت
\nnpm install qrcode\n\nمثال أساسي: إنشاء صورة PNG
\nconst QRCode = require('qrcode');\n\n// سلسلة نصية بسيطة للتشفير\nconst data = 'https://pythonlib.ru';\n\nQRCode.toFile('qrcode.png', data, {\n color: {\n dark: '#000000', // لون الوحدات (المربعات)\n light: '#FFFFFF' // لون الخلفية\n },\n errorCorrectionLevel: 'H' // أقصى تصحيح للأخطاء\n}, function (err) {\n if (err) throw err;\n console.log('تم حفظ رمز QR كـ qrcode.png');\n});\n\nتوليد SVG (صيغة متجهة)
\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); // إخراج ترميز SVG في وحدة التحكم\n});\n\nالتوليد في مخزن مؤقت (للإرسال عبر 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 هو كائن Buffer يمكن إرساله كاستجابة HTTP\n // res.setHeader('Content-Type', 'image/png');\n // res.send(buffer);\n});\n\n2. مكتبة qr-image — بديل خفيف الوزن
\n\nqr-image هي مكتبة بسيطة بدون تبعيات إضافية. تركز على التوليد السريع لصيغ PNG و SVG و EPS وحتى PDF (عبر تثبيت وحدة إضافية). إذا كنت لا تحتاج إلى إعدادات ألوان معقدة أو شعارات، فإن qr-image ستكون خيارًا ممتازًا.
التثبيت
\nnpm install qr-image\n\nمثال: إنشاء صورة 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 كـ qr-image.png');\n\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('تم حفظ رمز QR كـ qr-image.svg');\n\nالحصول على سلسلة SVG بدون حفظ في ملف
\nconst qr = require('qr-image');\n\nconst data = 'https://pythonlib.ru';\nconst svgString = qr.imageSync(data, { type: 'svg' });\nconsole.log(svgString); // ترميز SVG جاهز\n\n3. مقارنة المكتبات
\n\n- \n
- qrcode — إعدادات أكثر (لون، هوامش، تصحيح أخطاء، شعار)، دعم TypeScript، الوعود (Promises) و async/await. مناسبة بشكل أفضل للمشاريع الإنتاجية التي تحتاج ألوانًا مخصصة وموثوقية عالية.