company-research-agent / utils /pdf_generator.py
jaimin's picture
Upload 44 files
0d18784 verified
raw
history blame
1.15 kB
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from io import BytesIO
import json
def generate_pdf(report_data: dict) -> BytesIO:
"""
Generates a PDF file from the given report data.
Args:
report_data (dict): The data to include in the PDF.
Returns:
BytesIO: A buffer containing the generated PDF.
"""
try:
# Create a buffer to store the PDF in memory
buffer = BytesIO()
c = canvas.Canvas(buffer, pagesize=letter)
# Set up the text properties
text = c.beginText(40, 750) # Starting position
text.setFont("Helvetica", 10)
# Convert the report data dictionary to a formatted JSON string
report_str = json.dumps(report_data, indent=4)
# Write each line of the JSON string to the PDF
for line in report_str.splitlines():
text.textLine(line)
c.drawText(text)
c.showPage()
c.save()
# Rewind the buffer to the beginning
buffer.seek(0)
return buffer
except Exception as e:
raise RuntimeError(f"Failed to generate PDF: {e}")