| 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
|
|
|
|
|
| c.setFont("Helvetica-Bold", 16)
|
| c.drawString(50, height - 50, t['analysis_report'])
|
|
|
|
|
| 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'])}")
|
|
|
|
|
|
|
| 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'])}")
|
|
|
|
|
|
|
| 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"
|
| ) |