| | 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"
|
| | ) |