v3 / modules /utils /export_utils.py
AIdeaText's picture
Upload 216 files
c58df45 verified
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"
)