Ozgur Unlu commited on
Commit
d1fd071
Β·
1 Parent(s): 6eb4be5

more fonts changes due to errors

Browse files
Files changed (2) hide show
  1. pdf_generator.py +42 -21
  2. 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('DejaVu', size=16)
15
  self.pdf.cell(200, 10, txt="Marketing Content Validation Report", ln=True, align='C')
16
- self.pdf.set_font('DejaVu', size=10)
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('DejaVu', size=12)
22
  self.pdf.cell(200, 10, txt="Input Marketing Content:", ln=True)
23
- self.pdf.set_font('DejaVu', size=12)
24
- # Clean the text of any problematic characters
25
- cleaned_text = ''.join(char for char in text if ord(char) < 65536)
 
 
 
 
 
 
 
 
 
 
 
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('DejaVu', size=12)
37
- status_symbol = status_symbols.get(status.lower(), "?")
38
- self.pdf.cell(0, 10, txt=f"{check_name}: {status_symbol}", ln=True)
39
 
40
  if details:
41
- self.pdf.set_font('DejaVu', size=10)
42
- # Clean the details text of any problematic characters
43
- cleaned_details = ''.join(char for char in details if ord(char) < 65536)
 
 
 
 
 
 
 
 
 
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
- self.pdf.output(filename)
51
- return filename
 
 
 
 
 
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