بناء أداة ترقيم صفحات PDF في المتصفح باستخدام JavaScript: دليل شامل


مساحة إعلانية - أضف كود أدسنس هنا

مقدمة

عند التعامل مع العقود، التقارير، الفواتير، الأدلة، أو المستندات الأكاديمية، تُسهّل أرقام الصفحات عملية التنقل بشكل كبير. بدلاً من التعديل اليدوي لكل صفحة، تتيح لك مكتبات JavaScript الحديثة إضافة أرقام الصفحات مباشرةً داخل المتصفح. في هذا الدليل، ستقوم ببناء أداة لترقيم صفحات PDF تعمل في المتصفح باستخدام JavaScript. سيتمكن المستخدمون من رفع ملف PDF، اختيار مكان ظهور أرقام الصفحات، تخصيص خيارات التنسيق، معاينة المستند، وتنزيل ملف PDF المُحدّث دون الحاجة لرفع الملفات إلى خادم. كل شيء يعمل محلياً داخل المتصفح لخصوصية أفضل ومعالجة أسرع.

صورة توضيحية للمقال

فهرس المحتويات

  • كيف يعمل ترقيم صفحات PDF
  • إعداد المشروع
  • ما هي المكتبة التي سنستخدمها؟
  • إنشاء واجهة الرفع
  • قراءة صفحات PDF
  • معاينة الصفحات المرفوعة
  • اختيار موضع رقم الصفحة
  • اختيار الصفحات المراد ترقيمها
  • تكوين تنسيق الرقم والنمط
  • توليد ملف PDF المُحدّث
  • معاينة وتنزيل ملف PDF النهائي
  • كيف تساعد أرقام صفحات PDF في المستندات الواقعية
  • عرض توضيحي: كيف تعمل أداة ترقيم صفحات PDF
  • ملاحظات هامة من الاستخدام العملي
  • أخطاء شائعة يجب تجنبها
  • الخاتمة

كيف يعمل ترقيم صفحات PDF

تقوم أداة ترقيم صفحات PDF بتحميل مستند PDF موجود، وتعديل الصفحات المختارة، وإدراج أرقام الصفحات قبل إنشاء ملف جديد قابل للتنزيل. يُستخدم ترقيم الصفحات بشكل شائع في التقارير، العقود، الفواتير، المستندات القانونية، الكتب الإلكترونية (eBooks)، الأدلة، والأوراق الأكاديمية حيث يحتاج القراء إلى طريقة سهلة للتنقل عبر صفحات متعددة. بدون أرقام الصفحات، قد يكون من الصعب الإشارة إلى أقسام محددة أو تحديد موقع المعلومات داخل المستندات الكبيرة. يقوم المتصفح بقراءة ملف PDF المرفوع، ومعالجة كل صفحة، وتطبيق قواعد الترقيم، وتصدير المستند المُحدّث. كل شيء يحدث محلياً داخل المتصفح. هذا يعني أن المستندات لا تغادر جهاز المستخدم أبداً، مما يحسن الخصوصية والأمان. في هذا الدليل، سنبني أداة تسمح للمستخدمين برفع ملف PDF، اختيار مكان ظهور أرقام الصفحات، تخصيص خيارات التنسيق، معاينة النتيجة، وتنزيل المستند المُحدّث مباشرةً من المتصفح.

إعداد المشروع

هذا المشروع بسيط بشكل مقصود. كل ما تحتاجه هو ملف HTML، ملف JavaScript، ومكتبة لمعالجة ملفات PDF. لا يلزم وجود خادم خلفي (backend server) أو قاعدة بيانات.

ما هي المكتبة التي سنستخدمها؟

سنستخدم PDF-lib لأنها تتيح لنا تحميل مستندات PDF وتعديلها وتصديرها مباشرةً داخل JavaScript. أضفها باستخدام CDN:

<script src="https://unpkg.com/pdf-lib"></script>

بمجرد تحميلها، يمكننا قراءة صفحات PDF وإضافة معلومات الترقيم مباشرةً داخل المتصفح.

إنشاء واجهة الرفع

يحتاج المستخدمون أولاً إلى طريقة لرفع ملفات PDF. يعمل مدخل ملف بسيط (file input):

<input type="file" id="pdfFile" accept=".pdf">

بعد تحديد ملف، يمكن لـ JavaScript معالجة ملف PDF وعرض معاينة.

صورة توضيحية للمقال

قراءة صفحات PDF

بعد رفع الملف، يجب تحميل ملف PDF في الذاكرة. على سبيل المثال:

const bytes = await file.arrayBuffer();
const pdfDoc = await PDFLib.PDFDocument.load(bytes);
const pages = pdfDoc.getPages();

هذا يمنحنا الوصول إلى كل صفحة داخل المستند.

معاينة الصفحات المرفوعة

قبل تطبيق أرقام الصفحات، يمكن للمستخدمين معاينة صفحات المستند مباشرةً داخل المتصفح. يساعد عرض معاينات الصفحات المستخدمين على التحقق من المستند قبل إجراء التغييرات. يتم تحديث قسم المعاينة تلقائياً بعد رفع ملف PDF.

صورة توضيحية للمقال

اختيار موضع رقم الصفحة

تتطلب المستندات المختلفة مواضع مختلفة لأرقام الصفحات. يفضل بعض المستخدمين الأرقام في المنتصف السفلي، بينما قد يستخدم آخرون الزوايا أو المواضع العلوية. توفر الأداة خيارات تحديد موضع متعددة. على سبيل المثال:

page.drawText(pageNumber, { x: 250, y: 20 });

هذا يسمح بوضع أرقام الصفحات في إحداثيات مختلفة.

صورة توضيحية للمقال

اختيار الصفحات المراد ترقيمها

ليست كل صفحة تحتاج إلى ترقيم. قد يرغب بعض المستخدمين في تطبيق الترقيم على جميع الصفحات. قد يختار آخرون نطاقاً مخصصاً أو يتخطون الصفحة الأولى. تدعم الأداة كل هذه الخيارات.

صورة توضيحية للمقال

تكوين تنسيق الرقم والنمط

يمكن للمستخدمين تخصيص كيفية ظهور أرقام الصفحات داخل المستند. يمكن أن يستخدم تنسيق الترقيم أرقاماً قياسية، أحرفاً صغيرة، أو أحرفاً كبيرة. على سبيل المثال:

const pageNumber = `${index + 1}`;

يمكن أيضاً إنشاء أنماط ترقيم مختلفة ديناميكياً.

صورة توضيحية للمقال

يمكن للمستخدمين أيضاً اختيار خطوط مختلفة.

صورة توضيحية للمقال

تسمح الأداة بتغيير حجم النص ولونه ومظهره.

صورة توضيحية للمقال

يمكن للمستخدمين أيضاً تخصيص أنماط الترقيم. على سبيل المثال:

Page 1

Page 1 of 20

Custom patterns

صورة توضيحية للمقال

تتحكم إعدادات الهوامش (margin settings) في المسافة بين رقم الصفحة وحواف المستند.

صورة توضيحية للمقال

توليد ملف PDF المُحدّث

بمجرد اكتمال التكوين، يمكن للمستخدمين توليد المستند المُحدّث. على سبيل المثال:

const pdfBytes = await pdfDoc.save();

يقوم المتصفح بمعالجة الصفحات وإدراج الترقيم تلقائياً.

صورة توضيحية للمقال

معاينة وتنزيل ملف PDF النهائي

بعد المعالجة، يتم عرض ملف PDF المُحدّث داخل منطقة المعاينة. يمكن للمستخدمين مراجعة النتائج قبل التنزيل. تعرض الواجهة أيضاً تفاصيل المستند مثل إجمالي الصفحات وحجم الملف. تسمح أزرار التنقل للمستخدمين بتصفح الصفحات مباشرةً داخل المتصفح. أخيراً، يمكن تنزيل ملف PDF المكتمل.

صورة توضيحية للمقال

كيف تساعد أرقام صفحات PDF في المستندات الواقعية

قد تبدو أرقام الصفحات تفصيلاً صغيراً، لكنها تصبح بالغة الأهمية كلما زادت أحجام المستندات. في تقارير الأعمال، تساعد أرقام الصفحات القراء على تحديد الأقسام المحددة بسرعة أثناء الاجتماعات، المراجعات، أو العروض التقديمية. بدلاً من التمرير عبر عشرات الصفحات، يمكن للشخص ببساطة الانتقال إلى رقم الصفحة المشار إليه.

تعتمد العقود والمستندات القانونية أيضاً بشكل كبير على ترقيم الصفحات. عند مناقشة الشروط أو البنود، من الشائع الإشارة إلى صفحة محددة لتجنب الارتباك وضمان أن الجميع ينظرون إلى نفس المعلومات.

غالباً ما تتطلب الأوراق الأكاديمية، مستندات البحث، وتقارير المشاريع أرقام صفحات للاستشهادات والمراجع وإرشادات التنسيق. تعتبر العديد من المؤسسات ترقيم الصفحات متطلباً قياسياً للمشاركات الاحترافية.

تُعد أرقام الصفحات مفيدة أيضاً للأدلة، الكتب الإلكترونية (eBooks)، أدلة المستخدم، والمواد التدريبية. يمكن للقراء العودة بسهولة إلى قسم سابق أو اتباع التعليمات التي تشير إلى صفحة أخرى داخل المستند. على سبيل المثال، قد يحتوي دليل شركة على 50 صفحة أو أكثر. بدون أرقام الصفحات، سيحتاج الموظفون إلى البحث يدوياً عن المعلومات. مع تطبيق الترقيم، يمكن للأقسام ببساطة الإشارة إلى صفحات مثل "انظر الصفحة 24 لتفاصيل سياسة الإجازات". وبالمثل، غالباً ما تستخدم الفواتير، المقترحات، والتقارير المالية تنسيقات مثل "Page 3 of 12" حتى يفهم القراء على الفور عدد الصفحات المتضمنة في المستند. إضافة أرقام الصفحات يحسن التنقل، التنظيم، الاحترافية، وسهولة القراءة بشكل عام، مما يجعل المستندات أسهل في الاستخدام لكل من المنشئين والقراء.

عرض توضيحي: كيف تعمل أداة ترقيم صفحات PDF

الخطوة 1: رفع ملف PDF

يقوم المستخدمون برفع مستند PDF إلى المتصفح.

صورة توضيحية للمقال

الخطوة 2: مراجعة معاينات الصفحات

تظهر صفحات المستند المرفوع داخل قسم المعاينة.

صورة توضيحية للمقال

الخطوة 3: تكوين إعدادات رقم الصفحة

يختار المستخدمون الموضع، نطاق الصفحات، نمط الترقيم، مظهر الخط، الشفافية، وخيارات التنسيق.

صورة توضيحية للمقال

الخطوة 4: توليد ملف PDF

بعد اكتمال التكوين، ينقر المستخدمون على زر التوليد.

صورة توضيحية للمقال

الخطوة 5: المراجعة والتنزيل

يظهر ملف PDF النهائي في منطقة المعاينة. يمكن للمستخدمين تصفح الصفحات، مراجعة الترقيم، إعادة التسمية، وتنزيل المستند المُحدّث.

صورة توضيحية للمقال

ملاحظات هامة من الاستخدام العملي

عند العمل مع ملفات PDF الكبيرة، يصبح الأداء واستخدام الذاكرة اعتبارات مهمة. قد تستغرق المستندات التي تحتوي على مئات الصفحات وقتاً أطول للمعالجة داخل المتصفح. يمكن أن يساعد فحص التحقق البسيط في منع معالجة الملفات غير المدعومة:

if (!file || file.type !== "application/pdf") {
  alert("Please upload a valid PDF file");
  return;
}

هذا يضمن أن المستخدمين يرفعون ملف PDF قبل بدء المعالجة.

تحسين مفيد آخر هو تحديد حجم الملفات الكبيرة جداً قبل تحميلها:

const MAX_SIZE = 20 * 1024 * 1024;
if (file.size > MAX_SIZE) {
  alert("PDF file is too large");
  return;
}

هذا يمنع الاستخدام المفرط للذاكرة ويحسن أداء المتصفح.

عند توليد أرقام الصفحات، من المفيد أيضاً معالجة الصفحات مرة واحدة فقط:

const pages = pdfDoc.getPages();
pages.forEach((page, index) => {
  page.drawText(`${index + 1}`);
});

هذا يحافظ على كفاءة عملية الترقيم حتى للمستندات الأكبر حجماً.

قبل تنزيل الملف النهائي، قم دائماً بمعاينة المستند الذي تم إنشاؤه. تساعد مراجعة المخرجات في التحقق من أن أرقام الصفحات تظهر في الموضع الصحيح، وتستخدم التنسيق المتوقع، ولا تتداخل مع محتوى المستند الهام.

أخطاء شائعة يجب تجنبها

أحد الأخطاء الشائعة هو تحديد مواضع أرقام الصفحات بشكل ثابت (hardcoding). يمكن أن تحتوي مستندات PDF المختلفة على أحجام صفحات مختلفة، لذا قد تضع الإحداثيات الثابتة أرقام الصفحات في مكان خاطئ. على سبيل المثال:

page.drawText(pageNumber, { x: 250, y: 20 });

بدلاً من ذلك، من الأفضل عادةً حساب المواضع ديناميكياً بناءً على أبعاد الصفحة.

خطأ آخر هو تطبيق الترقيم على كل صفحة بينما يجب تحديث مجموعة فرعية فقط من الصفحات. على سبيل المثال، قد يرغب المستخدمون في تخطي صفحة الغلاف أو ترقيم نطاقات صفحات محددة فقط. تحقق دائماً من إعدادات اختيار الصفحات قبل توليد الملف النهائي.

من المهم أيضاً معاينة المخرجات قبل التنزيل. على سبيل المثال:

const previewPage = pdfDoc.getPage(0);
renderPreview(previewPage);

هذا يساعد على ضمان ظهور أرقام الصفحات تماماً حيثما هو متوقع.

مشكلة شائعة أخرى هي الفشل في التحقق من صحة الملفات المرفوعة قبل المعالجة:

if (!file || file.type !== "application/pdf") {
  alert("Please upload a valid PDF file");
  return;
}

تساعد إضافة التحقق الأساسي في منع الأخطاء وتحسين تجربة المستخدم بشكل عام.

الخاتمة

في هذا الدليل، قمت ببناء أداة لترقيم صفحات PDF تعمل في المتصفح باستخدام JavaScript. لقد تعلمت كيفية رفع ملفات PDF، معاينة الصفحات، اختيار مواضع الترقيم، تخصيص خيارات التنسيق، وتوليد ملفات PDF قابلة للتنزيل مباشرةً داخل المتصفح. والأهم من ذلك، لقد رأيت كيف يمكن للمتصفحات الحديثة التعامل مع مهام تحرير المستندات محلياً دون الاعتماد على خادم خلفي (backend server). هذا النهج يجعل الأداة سريعة، خاصة، وسهلة الاستخدام.

إذا كنت ترغب في تجربة نسخة جاهزة للإنتاج، يمكنك استخدام AllInOneTools - PDF Page Number Tool.

بمجرد فهمك لسير العمل هذا، يمكنك توسيعه بشكل أكبر بميزات مثل الرؤوس (headers)، التذييلات (footers)، العلامات المائية (watermarks)، أختام PDF، تعليقات المستندات (document annotations)، أو إدارة الصفحات المتقدمة. وهذا هو المكان الذي تبدأ فيه الأمور في أن تصبح شيقة حقاً.

مساحة إعلانية - أضف كود أدسنس هنا