from weasyprint import HTML | |
import pandas as pd | |
import logging | |
import os | |
logger = logging.getLogger(__name__) | |
def generate_pdf(df): | |
"""Generate a PDF report from log data.""" | |
logger.info("Generating PDF report...") | |
try: | |
html_content = f""" | |
<h1>LabOps Dashboard Report</h1> | |
<p>Generated on: {pd.Timestamp.now().strftime('%Y-%m-%d')}</p> | |
<h2>Log Data</h2> | |
{df.head().to_html(index=False)} | |
""" | |
pdf_path = "/tmp/labops_report.pdf" | |
HTML(string=html_content).write_pdf(pdf_path) | |
logger.info(f"PDF report saved to {pdf_path}") | |
return pdf_path | |
except Exception as e: | |
logger.error(f"Failed to generate PDF report: {e}") | |
raise |