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