# quread/export_pdf.py from reportlab.lib.pagesizes import LETTER from reportlab.pdfgen import canvas from reportlab.lib.units import inch import textwrap def md_to_pdf(markdown_text: str, output_path: str): """ Convert Markdown-like text to a simple PDF. Pure Python, HF-Spaces safe (no system deps). """ c = canvas.Canvas(output_path, pagesize=LETTER) width, height = LETTER x_margin = 1 * inch y_margin = 1 * inch max_width = width - 2 * x_margin text_obj = c.beginText() text_obj.setTextOrigin(x_margin, height - y_margin) text_obj.setFont("Times-Roman", 11) for line in markdown_text.splitlines(): wrapped = textwrap.wrap(line, 95) or [""] for wline in wrapped: if text_obj.getY() < y_margin: c.drawText(text_obj) c.showPage() text_obj = c.beginText() text_obj.setTextOrigin(x_margin, height - y_margin) text_obj.setFont("Times-Roman", 11) text_obj.textLine(wline) c.drawText(text_obj) c.save()