برمج: شهادة النادي مع تذييل

خصص الصنف FPDF بالوراثة لترسم شهادة عضوية في نادي القراءة، ثم احفظها في ملف PDF من صفحة واحدة.

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

نفّذ هذا التمرين على جهازك. أنشئ المشروع وأضف حزمة fpdf2:

نزّل شارة النادي، واحفظها باسم badge.svg في مجلد المشروع، بجانب main.py وcertificate.py. تستعمل الشارة المرفقة مقاسًا ثابتًا كي تكون مواضع النص قابلة للمقارنة.

شارة نادي القراءة

المطلوب البرمجي

  • أكمل الصنف Certificate(FPDF) في certificate.py. أعد تعريف header وfooter، وأكمل add_member لإضافة بيانات العضو والشارة.
  • أكمل main.py لقراءة اسم العضو وإنشاء شهادة باتجاه P ومقاس A4، ثم إضافة صفحة ومحتوى العضو وحفظ certificate.pdf.
  • افترض أن الاسم مكتوب بحروف إنجليزية، وطوله من حرف إلى عشرين حرفًا. تستخدم الشهادة خط Helvetica.

تنفذ add_page الطريقة header تلقائيًا، وينفذ حفظ المستند الطريقة footer للصفحة الأخيرة. وتبقى add_page وimage وcell وoutput طرائق موروثة من FPDF. راجع مثال الرأس والتذييل للتعرف إلى طريقة استعمالها.

النتيجة

ترسم الصفحة العناصر التالية بالترتيب، والقياسات بالمليمتر:

  • عنوان أسود Reading Club Certificate في وسط الأعلى، بحجم خط 24 وخلية ارتفاعها 20.
  • سطر أسود Member ثم الاسم، في الوسط بحجم 16 وخلية ارتفاعها 12.
  • الشارة بعرض 180، في وسط الصفحة أفقيًا عند x = (210 - 180) / 2 وy = 50.
  • جملة بيضاء من الاسم ثم joined the club، بحجم 16، في وسط خلية بعرض الشارة وارتفاع 10 عند y = 120.
  • تذييل أسود Keep this page، بحجم 14، في وسط خلية ارتفاعها 10 عند y = -25، أي قبل أسفل الصفحة بـ 25.

مثال

شغّل البرنامج داخل مجلد المشروع:

افتح certificate.pdf: يجب أن تجد العنوان وMember Zaid والشارة وعليها Zaid joined the club، والتذييل الأسود، في صفحة واحدة. تعني input هنا عرض السؤال في الطرفية وإعادة النص الذي تكتبه، بينما تعرض print رسالة الحفظ.

مساعدة

شرح الحل

ملفات البداية

احفظ القطعتين التاليتين في مجلد المشروع وأكملهما، ثم شغّل main.py بالأمر السابق.

تحقق من النتيجة

  • افتح الملف وتحقق من أنه صفحة واحدة بمقاس A4 واتجاه طولي.
  • قارن العنوان وسطر العضو وموضع الشارة والجملة البيضاء بوصف النتيجة.
  • تحقق من ظهور Keep this page بالأسود قرب أسفل الصفحة نفسها.
  • أعد التشغيل باسم مختلف، وتحقق من تغير الاسم في الموضعين داخل الملف المحفوظ.