File size: 1,832 Bytes
600c297
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import json
from fpdf import FPDF

class PDF(FPDF):
    def header(self):
        self.set_font("Arial", "B", 12)
        self.cell(0, 10, "Questionnaire", align="C", ln=True)
        self.cell(0, 10, "", ln=True)

    def footer(self):
        self.set_y(-15)
        self.set_font("Arial", "I", 8)
        page_number = f"Page {self.page_no()}"
        self.cell(0, 10, page_number, align="C")

def generate_questions(data, pdf: PDF, print_response:  bool = False):
    pdf.add_page()

    question_number = 1
    # Add questions  to the PDF
    for question_data in data:
        question = question_data["question"]
        options = [
            f"A{question_data['A']}",
            f"B{question_data['B']}",
            f"C{question_data['C']}",
            f"D{question_data['D']}"
        ]

        # Add question
        pdf.multi_cell(0, 10, f"{question_number} . {question}")

        # Add options
        for option in options:
            pdf.multi_cell(0, 10, option)

        # Add response
        response = "?"
        if print_response:
            response = question_data["reponse"]
        pdf.cell(0, 10, f"Response: {response}", ln=True)
        pdf.cell(0, 10, "", ln=True)
        question_number += 1
        
    pdf.add_page()

def generate_pdf(filename , json_data):

    # Create PDF document
    pdf = PDF()
    pdf.add_page()

    # Set font style and size
    pdf.set_font("Arial", size=10)

    generate_questions(json_data, pdf, print_response=False)
    generate_questions(json_data, pdf, print_response=True)

    # Save PDF to a file
    pdf.output(filename)

def generate_pdf_quiz(file_name, json_data):

    # remove extension .pdf from file name
    if file_name.endswith(".json"):
        file_name = file_name[:-5]

    # Generate PDF
    generate_pdf(f"{file_name}.pdf", json_data)