مولد رموز QR بلغة JavaScript (Node.js) باستخدام qrcode و qr-image

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

توليد رموز QR على Node.js: المكتبات qrcode و qr-image

\n\n

أصبحت رموز QR جزءًا لا يتجزأ من تطبيقات الويب الحديثة: من روابط المواقع والمصادقة إلى نقل بيانات الاتصال ومعلومات الدفع. في النظام البيئي Node.js، توجد العديد من المكتبات الناضجة التي تسمح بتوليد رموز QR دون الحاجة إلى واجهات برمجة تطبيقات خارجية أو محررات رسومية ثقيلة. في هذه المقالة، سنستعرض بالتفصيل المكتبتين الأكثر شيوعًا: qrcode و qr-image. ستتعلم كيفية تثبيت كل منهما، وما هي صيغ الإخراج التي يدعمانها، وستحصل على أمثلة جاهزة للتكامل مع مشروعك.

\n\n

1. مكتبة qrcode — مولد شامل

\n\n

qrcode هي مكتبة قوية تدعم JavaScript و TypeScript وحتى المتصفحات. تتيح توليد رموز QR بصيغ PNG و SVG و canvas وحتى كنص بسيط. الميزة الرئيسية هي الإعدادات التفصيلية: يمكنك تغيير الألوان ومستوى تصحيح الأخطاء وإضافة الشعارات والتحكم في الهوامش.

\n\n

التثبيت

\n
npm install qrcode
\n\n

مثال أساسي: إنشاء صورة PNG

\n
const 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 (صيغة متجهة)

\n
const 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)

\n
const 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\n

2. مكتبة qr-image — بديل خفيف الوزن

\n\n

qr-image هي مكتبة بسيطة بدون تبعيات إضافية. تركز على التوليد السريع لصيغ PNG و SVG و EPS وحتى PDF (عبر تثبيت وحدة إضافية). إذا كنت لا تحتاج إلى إعدادات ألوان معقدة أو شعارات، فإن qr-image ستكون خيارًا ممتازًا.

\n\n

التثبيت

\n
npm install qr-image
\n\n

مثال: إنشاء صورة PNG

\n
const 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

\n
const 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 بدون حفظ في ملف

\n
const qr = require('qr-image');\n\nconst data = 'https://pythonlib.ru';\nconst svgString = qr.imageSync(data, { type: 'svg' });\nconsole.log(svgString); // ترميز SVG جاهز
\n\n

3. مقارنة المكتبات

\n\n
    \n
  • qrcode — إعدادات أكثر (لون، هوامش، تصحيح أخطاء، شعار)، دعم TypeScript، الوعود (Promises) و async/await. مناسبة بشكل أفضل للمشاريع الإنتاجية التي تحتاج ألوانًا مخصصة وموثوقية عالية.

توصيات