Spaces:
Running
Running
import streamlit as st | |
from reportlab.lib.pagesizes import letter | |
from reportlab.pdfgen import canvas | |
from docx import Document | |
import io | |
def export_data(user_data, t, format='pdf'): | |
if format == 'pdf': | |
return export_to_pdf(user_data, t) | |
elif format == 'docx': | |
return export_to_docx(user_data, t) | |
else: | |
raise ValueError(f"Unsupported format: {format}") | |
def export_to_pdf(user_data, t): | |
buffer = io.BytesIO() | |
c = canvas.Canvas(buffer, pagesize=letter) | |
width, height = letter | |
# Título | |
c.setFont("Helvetica-Bold", 16) | |
c.drawString(50, height - 50, t['analysis_report']) | |
# Resumen | |
c.setFont("Helvetica", 12) | |
c.drawString(50, height - 80, f"{t['morpho_analyses']}: {len(user_data['morphosyntax_analyses'])}") | |
c.drawString(50, height - 100, f"{t['semantic_analyses']}: {len(user_data['semantic_analyses'])}") | |
c.drawString(50, height - 120, f"{t['discourse_analyses']}: {len(user_data['discourse_analyses'])}") | |
# Aquí agregarías más detalles de los análisis... | |
c.save() | |
buffer.seek(0) | |
return buffer | |
def export_to_docx(user_data, t): | |
doc = Document() | |
doc.add_heading(t['analysis_report'], 0) | |
doc.add_paragraph(f"{t['morpho_analyses']}: {len(user_data['morphosyntax_analyses'])}") | |
doc.add_paragraph(f"{t['semantic_analyses']}: {len(user_data['semantic_analyses'])}") | |
doc.add_paragraph(f"{t['discourse_analyses']}: {len(user_data['discourse_analyses'])}") | |
# Aquí agregarías más detalles de los análisis... | |
buffer = io.BytesIO() | |
doc.save(buffer) | |
buffer.seek(0) | |
return buffer | |
def display_export_options(t): | |
format = st.radio(t['select_export_format'], ['PDF', 'DOCX']) | |
if st.button(t['export']): | |
user_data = st.session_state.user_data | |
if format == 'PDF': | |
buffer = export_data(user_data, t, format='pdf') | |
st.download_button( | |
label=t['download_pdf'], | |
data=buffer, | |
file_name="analysis_report.pdf", | |
mime="application/pdf" | |
) | |
elif format == 'DOCX': | |
buffer = export_data(user_data, t, format='docx') | |
st.download_button( | |
label=t['download_docx'], | |
data=buffer, | |
file_name="analysis_report.docx", | |
mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document" | |
) |