Spaces:
Configuration error
Configuration error
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) | |