Ozgur Unlu
commited on
Commit
Β·
d1fd071
1
Parent(s):
6eb4be5
more fonts changes due to errors
Browse files- pdf_generator.py +42 -21
- requirements.txt +1 -2
pdf_generator.py
CHANGED
@@ -5,47 +5,68 @@ class ReportGenerator:
|
|
5 |
def __init__(self):
|
6 |
self.pdf = FPDF()
|
7 |
self.pdf.add_page()
|
8 |
-
|
9 |
-
# Add Unicode font
|
10 |
-
self.pdf.add_font('DejaVu', '', '/usr/share/fonts/truetype/dejavu/DejaVuSansCondensed.ttf', uni=True)
|
11 |
-
self.pdf.set_font('DejaVu', size=12)
|
12 |
|
13 |
def add_header(self):
|
14 |
-
self.pdf.set_font(
|
15 |
self.pdf.cell(200, 10, txt="Marketing Content Validation Report", ln=True, align='C')
|
16 |
-
self.pdf.set_font(
|
17 |
self.pdf.cell(200, 10, txt=f"Generated on: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", ln=True, align='R')
|
18 |
self.pdf.ln(10)
|
19 |
|
20 |
def add_input_text(self, text):
|
21 |
-
self.pdf.set_font(
|
22 |
self.pdf.cell(200, 10, txt="Input Marketing Content:", ln=True)
|
23 |
-
self.pdf.set_font(
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
self.pdf.multi_cell(0, 10, txt=cleaned_text)
|
27 |
self.pdf.ln(10)
|
28 |
|
29 |
def add_check_result(self, check_name, status, details=None):
|
30 |
status_symbols = {
|
31 |
-
"pass": "
|
32 |
-
"fail": "
|
33 |
-
"warning": "
|
34 |
}
|
35 |
|
36 |
-
self.pdf.set_font(
|
37 |
-
status_symbol = status_symbols.get(status.lower(), "?")
|
38 |
-
self.pdf.cell(0, 10, txt=f"{check_name}
|
39 |
|
40 |
if details:
|
41 |
-
self.pdf.set_font(
|
42 |
-
# Clean the details
|
43 |
-
cleaned_details =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44 |
self.pdf.multi_cell(0, 10, txt=cleaned_details)
|
45 |
self.pdf.ln(5)
|
46 |
|
47 |
def save_report(self):
|
48 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
49 |
filename = f"marketing_report_{timestamp}.pdf"
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
|
|
|
5 |
def __init__(self):
|
6 |
self.pdf = FPDF()
|
7 |
self.pdf.add_page()
|
8 |
+
self.pdf.set_font("Helvetica", size=12)
|
|
|
|
|
|
|
9 |
|
10 |
def add_header(self):
|
11 |
+
self.pdf.set_font("Helvetica", style="B", size=16)
|
12 |
self.pdf.cell(200, 10, txt="Marketing Content Validation Report", ln=True, align='C')
|
13 |
+
self.pdf.set_font("Helvetica", size=10)
|
14 |
self.pdf.cell(200, 10, txt=f"Generated on: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", ln=True, align='R')
|
15 |
self.pdf.ln(10)
|
16 |
|
17 |
def add_input_text(self, text):
|
18 |
+
self.pdf.set_font("Helvetica", style="B", size=12)
|
19 |
self.pdf.cell(200, 10, txt="Input Marketing Content:", ln=True)
|
20 |
+
self.pdf.set_font("Helvetica", size=12)
|
21 |
+
|
22 |
+
# Clean and encode the text
|
23 |
+
cleaned_text = (text
|
24 |
+
.replace('"', '"')
|
25 |
+
.replace('"', '"')
|
26 |
+
.replace(''', "'")
|
27 |
+
.replace(''', "'")
|
28 |
+
.replace('β', '-')
|
29 |
+
.replace('β', '-')
|
30 |
+
.encode('ascii', 'replace')
|
31 |
+
.decode()
|
32 |
+
)
|
33 |
+
|
34 |
self.pdf.multi_cell(0, 10, txt=cleaned_text)
|
35 |
self.pdf.ln(10)
|
36 |
|
37 |
def add_check_result(self, check_name, status, details=None):
|
38 |
status_symbols = {
|
39 |
+
"pass": "(PASS)",
|
40 |
+
"fail": "(FAIL)",
|
41 |
+
"warning": "(WARNING)"
|
42 |
}
|
43 |
|
44 |
+
self.pdf.set_font("Helvetica", style="B", size=12)
|
45 |
+
status_symbol = status_symbols.get(status.lower(), "(?)")
|
46 |
+
self.pdf.cell(0, 10, txt=f"{check_name} {status_symbol}", ln=True)
|
47 |
|
48 |
if details:
|
49 |
+
self.pdf.set_font("Helvetica", size=10)
|
50 |
+
# Clean and encode the details
|
51 |
+
cleaned_details = (details
|
52 |
+
.replace('"', '"')
|
53 |
+
.replace('"', '"')
|
54 |
+
.replace(''', "'")
|
55 |
+
.replace(''', "'")
|
56 |
+
.replace('β', '-')
|
57 |
+
.replace('β', '-')
|
58 |
+
.encode('ascii', 'replace')
|
59 |
+
.decode()
|
60 |
+
)
|
61 |
self.pdf.multi_cell(0, 10, txt=cleaned_details)
|
62 |
self.pdf.ln(5)
|
63 |
|
64 |
def save_report(self):
|
65 |
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
66 |
filename = f"marketing_report_{timestamp}.pdf"
|
67 |
+
try:
|
68 |
+
self.pdf.output(filename)
|
69 |
+
return filename
|
70 |
+
except Exception as e:
|
71 |
+
print(f"Error saving PDF: {str(e)}")
|
72 |
+
return None
|
requirements.txt
CHANGED
@@ -6,5 +6,4 @@ fpdf2==2.7.8
|
|
6 |
pandas==2.1.4
|
7 |
numpy==1.24.3
|
8 |
requests==2.31.0
|
9 |
-
python-dotenv==1.0.0
|
10 |
-
fonts-dejavu-core
|
|
|
6 |
pandas==2.1.4
|
7 |
numpy==1.24.3
|
8 |
requests==2.31.0
|
9 |
+
python-dotenv==1.0.0
|
|