File size: 2,522 Bytes
d52122b d1fd071 d52122b d1fd071 d52122b d1fd071 d52122b d1fd071 d52122b d1fd071 6eb4be5 d52122b d1fd071 d52122b d1fd071 d52122b d1fd071 6eb4be5 d52122b d1fd071 |
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 72 |
from fpdf import FPDF
from datetime import datetime
class ReportGenerator:
def __init__(self):
self.pdf = FPDF()
self.pdf.add_page()
self.pdf.set_font("Helvetica", size=12)
def add_header(self):
self.pdf.set_font("Helvetica", style="B", size=16)
self.pdf.cell(200, 10, txt="Marketing Content Validation Report", ln=True, align='C')
self.pdf.set_font("Helvetica", size=10)
self.pdf.cell(200, 10, txt=f"Generated on: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}", ln=True, align='R')
self.pdf.ln(10)
def add_input_text(self, text):
self.pdf.set_font("Helvetica", style="B", size=12)
self.pdf.cell(200, 10, txt="Input Marketing Content:", ln=True)
self.pdf.set_font("Helvetica", size=12)
# Clean and encode the text
cleaned_text = (text
.replace('"', '"')
.replace('"', '"')
.replace(''', "'")
.replace(''', "'")
.replace('β', '-')
.replace('β', '-')
.encode('ascii', 'replace')
.decode()
)
self.pdf.multi_cell(0, 10, txt=cleaned_text)
self.pdf.ln(10)
def add_check_result(self, check_name, status, details=None):
status_symbols = {
"pass": "(PASS)",
"fail": "(FAIL)",
"warning": "(WARNING)"
}
self.pdf.set_font("Helvetica", style="B", size=12)
status_symbol = status_symbols.get(status.lower(), "(?)")
self.pdf.cell(0, 10, txt=f"{check_name} {status_symbol}", ln=True)
if details:
self.pdf.set_font("Helvetica", size=10)
# Clean and encode the details
cleaned_details = (details
.replace('"', '"')
.replace('"', '"')
.replace(''', "'")
.replace(''', "'")
.replace('β', '-')
.replace('β', '-')
.encode('ascii', 'replace')
.decode()
)
self.pdf.multi_cell(0, 10, txt=cleaned_details)
self.pdf.ln(5)
def save_report(self):
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"marketing_report_{timestamp}.pdf"
try:
self.pdf.output(filename)
return filename
except Exception as e:
print(f"Error saving PDF: {str(e)}")
return None |