الرئيسية › طباعة وحفظ اختبار فورمز PDF

طباعة اختبار فورمز وحفظه PDF: دليل الحاسوب و iPad و Android

تحديث 14 نوفمبر 2026 · قراءة 9 دقائق · ExamParser

عبارة «احفظ النموذج PDF» قد تعني خمسة أشياء مختلفة. هذا الدليل يفرزها، ثم يعطيك الخطوات الدقيقة على Chrome وiPad Safari وAndroid، مع قواعد طباعة CSS وسكربت Python يولّد ملفاً عربياً بخط مضمّن حين لا تكفي طباعة المتصفح.

مبدأ ثابت: تحويل حتمي بلا ذكاء اصطناعي. تُنقل أسئلتك كما كُتبت؛ لا صياغة جديدة، ولا تخمين لإجابة صحيحة.

كلمة «حفظ» تعني خمسة أشياء مختلفة

قبل اختيار الطريقة، حدّد ما تريده فعلاً. خلط هذه المعاني هو السبب الأول وراء «الملف لا يشبه النموذج».

ما تريدهالطريقة الصحيحةما ستحصل عليه
نسخة مطابقة لما يراه الطالبطباعة صفحة العرض من المتصفحPDF بتخطيط الشاشة ومساحات إجابة
ملف منظّم بالأسئلة والخياراتمحوّل Google Form to PDFPDF مرتّب للطباعة والأرشفة
ملف قابل للتعديلتحويل إلى Word (.docx)مستند قابل للتحرير
أرشيف لإجابات الطلابجدول الاستجابات في Sheets ثم التصديربيانات الردود، لا الأسئلة
رابط دائم للنموذجمشاركة رابط «إرسال»لا ملف على الإطلاق
تنبيه: طباعة PDF من المتصفح لا تُنتج مفتاح الإجابة، ولا تفصل كل سؤال في صفحة، ولا تضمن بقاء الصور إن كانت محمّلة ديناميكياً. إن احتجت ذلك، استخدم التحويل المخصّص لا الطباعة.

على الحاسوب: Chrome وطباعة نظيفة

افتح رابط العرض (الذي يراه الطالب)، لا صفحة التحرير. ثم Ctrl+P على Windows أو Cmd+P على macOS، واختر «حفظ كـ PDF» كطابعة.

على iPad: Safari وإيماءة المعاينة

من Safari افتح رابط النموذج ← زر المشاركة ← طباعة ← ستظهر معاينة صغيرة. كبّرها بإيماءة الإصبعين حتى تتحول إلى معاينة متعددة الصفحات، ثم اضغط المشاركة من هذه الشاشة واختر «حفظ في الملفات».

خطآن متكرران: الحفظ قبل أن تظهر كل الصفحات (ينتج ملفاً بحجم صفري أو صفحة واحدة)، واستخدام خيار «إنشاء PDF» من قائمة المشاركة قبل تكبير المعاينة (ينتج صورة صفحة واحدة). انتظر اكتمال الرسم، ثم احفظ. إن كان Safari يمنع النوافذ المنبثقة، اسمح بها للصفحة وأعد المحاولة.

على Android: خدمة الطباعة

من Chrome افتح القائمة ← مشاركة ← طباعة ← اختر «حفظ كـ PDF» من قائمة الطابعات ← حدد مجلد الحفظ. على بعض الأجهزة لا تكون خدمة الطباعة النظامية مفعّلة، فتظهر القائمة فارغة؛ فعّلها من إعدادات النظام أو ثبّت خدمة الطباعة الخاصة بالشركة المصنّعة.

لا تغلق التبويب ولا تبدّل التطبيق أثناء الحفظ؛ إيقاف Chrome في الخلفية قد يُنهي الكتابة قبل إغلاق الملف.

ضبط CSS للطباعة: منع قطع السؤال بين صفحتين

إن كنت تطبع صفحة HTML تحتوي الأسئلة (وليس واجهة Google Forms نفسها)، فهذه القواعد تمنع أكثر العيوب شيوعاً. أضفها داخل @media print:

@media print {
  @page { size: A4; margin: 16mm; }
  body { direction: rtl; font-family: "Noto Naskh Arabic", Tahoma, serif; }
  .question {
    break-inside: avoid;
    page-break-inside: avoid;
    margin-bottom: 12mm;
  }
  .question h3 { break-after: avoid; page-break-after: avoid; }
  .no-print, nav, footer, .btn { display: none !important; }
  a { text-decoration: none; color: inherit; }
  a[href^="http"]::after { content: ""; }   /* hide URLs in print */
  img { max-width: 100%; break-inside: avoid; }
}

لاحظ أن break-inside وpage-break-inside مكتوبان معاً: الأول للمحركات الحديثة والثاني للإصدارات القديمة من WebKit التي ما زالت موجودة في متصفحات iOS.

سكربت يعمل: توليد PDF عربي قابل للطباعة من الأسئلة

حين تحتاج خطاً عربياً مضمّناً وترتيباً مضموناً بدل طباعة الشاشة، استخدم reportlab مع arabic_reshaper وpython-bidi. سبب هاتين الحزمتين أن reportlab لا يطبّق تشكيل الحروف العربية ولا الاتجاه RTL تلقائياً؛ بدونهما تظهر الحروف مفصولة ومعكوسة. ثبّت بـ pip install reportlab arabic-reshaper python-bidi.

# -*- coding: utf-8 -*-
import arabic_reshaper
from bidi.algorithm import get_display
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont

FONT = "NotoNaskhArabic-Regular.ttf"   # put the TTF next to this script
pdfmetrics.registerFont(TTFont("Arabic", FONT))

QUESTIONS = [
    ("ما عاصمة المملكة العربية السعودية؟", ["الرياض", "جدة", "مكة", "الدمام"]),
    ("أي مما يلي عدد أولي؟", ["4", "7", "9", "12"]),
]

def rtl(text):
    return get_display(arabic_reshaper.reshape(text))

def build(path="exam.pdf"):
    c = canvas.Canvas(path, pagesize=A4)
    w, h = A4
    y = h - 60
    c.setFont("Arabic", 14)
    for i, (q, opts) in enumerate(QUESTIONS, 1):
        if y < 140:
            c.showPage(); c.setFont("Arabic", 14); y = h - 60
        c.drawRightString(w - 50, y, rtl("%d. %s" % (i, q)))
        y -= 30
        for j, o in enumerate(opts):
            c.setFont("Arabic", 12)
            c.drawRightString(w - 70, y, rtl("%s) %s" % ("أبجد"[j], o)))
            y -= 24
        c.setFont("Arabic", 14)
        y -= 18
    c.save()
    print("wrote", path)

if __name__ == "__main__":
    build()

السكربت يرسم من اليمين بـ drawRightString ويعالج كل سطر على حدة. لا يضيف إجابات صحيحة، ولا يفصل نسخة المعلم عن نسخة الطالب تلقائياً، ويحتاج ملف الخط TTF بجانبه. هذه الحدود مقصودة: الهدف ملف يُطبع، لا نظام تصحيح.

ما لا يعطيك إياه PDF المطبوع

المطلوبهل توفره طباعة المتصفح؟البديل
مفتاح الإجابةلامحوّل مخصّص أو ملف معلم منفصل
سؤال واحد لكل صفحةلاقواعد break-inside أو سكربت
صور بجودة الأصلغالباً لاروابط صور عامة + خطوة تحميل
نص قابل للبحث والنسخ باتجاه سليمغير مضمونتوليد PDF بخط مضمّن كما في السكربت
ردود الطلابلاتصدير من Google Sheets
نموذج قابل للإجابةلارابط النموذج نفسه

الفروق بين الأجهزة والخطوط

الفروق التالية تظهر فعلياً عند التصدير والطباعة، وليست افتراضية:

ثمانية أخطاء وحلولها

  1. صفحة بيضاء أو ملف صفري: حفظت قبل اكتمال المعاينة؛ انتظر ثم أعد الحفظ.
  2. سؤال مقطوع بين صفحتين: break-inside: avoid على حاوية السؤال.
  3. الحروف العربية مفصولة في PDF المولّد: نسيت arabic_reshaper أو python-bidi.
  4. اختفت الحدود والألوان: فعّل «رسومات الخلفية» في مربع الطباعة.
  5. رابط الصفحة أعلى كل ورقة: عطّل «الرؤوس والتذييلات».
  6. مربعات الاختيار مشوّهة: عناصر CSS خاصة بالشاشة؛ استبدلها بأحرف [ ] في نسخة الطباعة.
  7. قائمة الطابعات فارغة على Android: فعّل خدمة الطباعة النظامية.
  8. الملف يختلف بين جهاز وآخر: الخط غير مضمّن؛ استخدم TTF مضمّناً كما في السكربت أو صدّر من جهاز واحد دائماً.

حدود التحويل

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

واجهة منتج ExamParser بالإنجليزية حالياً ولا توجد نسخة عربية من صفحة المنتج؛ لكن النص العربي داخل أسئلتك يُنقل كما كتبته، لأن التحويل يتعامل مع النص كبيانات. واتجاه العرض في الملف الناتج يعتمد على الخط وعلى إعدادات RTL، لا على لغة الواجهة.

الأسئلة الشائعة

كل الإجابات تفترض أنك تملك صلاحية قراءة النموذج وتصدير محتواه.

كيف أحفظ Google Form كملف PDF من الآيفون أو الآيباد؟

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

هل تحتوي النسخة المطبوعة على الإجابات الصحيحة؟

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

لماذا تظهر الحروف العربية مفصولة في ملف PDF الذي ولّدته؟

لأن مكتبة الرسم لا تطبّق تشكيل الحروف العربية ولا الاتجاه من اليمين إلى اليسار. استخدم arabic_reshaper لتشكيل الحروف و python-bidi لترتيبها، مع خط عربي مضمّن.

هل يمكنني منع قطع السؤال بين صفحتين؟

نعم في صفحة HTML تملكها: أضف break-inside:avoid و page-break-inside:avoid إلى حاوية السؤال داخل @media print. أما واجهة Google Forms نفسها فلا تتيح التحكم في CSS، لذا تحتاج مسار تحويل مخصّص.

هل أستطيع تصدير ردود الطلاب بالطباعة نفسها؟

لا. الطباعة تعطي بنية النموذج. الردود تُصدَّر من جدول الاستجابات في Google Sheets، وهي عملية منفصلة تماماً عن حفظ النموذج كملف PDF.

صدّر أسئلتك الآن

ارفع رابط Google Form واحصل على الملف الذي تحتاجه. صفحة المنتج بالإنجليزية حالياً؛ محتوى أسئلتك العربي يبقى كما هو.

جرّب ExamParser →