from reportlab.pdfgen import canvas from io import BytesIO def generate(transcription: str, summary: str): buffer = BytesIO() c = canvas.Canvas(buffer) # Title c.setFont("Helvetica-Bold", 14) c.drawString(100, 800, "📄 Video Summary Report") c.setFont("Helvetica", 12) # Transcription section c.drawString(100, 770, "Transcription (first 1000 characters):") for i, line in enumerate(split_lines(transcription[:1000], 90)): c.drawString(100, 750 - i * 15, line) # Summary section offset = 750 - (len(transcription[:1000]) // 90 + 1) * 15 - 30 c.drawString(100, offset, "Summary (first 1000 characters):") for i, line in enumerate(split_lines(summary[:1000], 90)): c.drawString(100, offset - 20 - i * 15, line) c.save() buffer.seek(0) return buffer.read() def split_lines(text, width): return [text[i:i + width] for i in range(0, len(text), width)]