fschwartzer commited on
Commit
9690a2a
·
verified ·
1 Parent(s): 4321b86

Update src/app.py

Browse files
Files changed (1) hide show
  1. src/app.py +69 -1
src/app.py CHANGED
@@ -11,6 +11,10 @@ from reportlab.lib.pagesizes import A4
11
  from reportlab.lib import colors
12
  from reportlab.lib.units import cm
13
  from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY, TA_LEFT, TA_RIGHT
 
 
 
 
14
 
15
  # =================================================================================
16
  # FUNÇÃO DE GERAÇÃO DE PDF (MODIFICADA PARA ACEITAR DADOS E RETORNAR BYTES)
@@ -160,6 +164,55 @@ def create_pdf_report(user_data):
160
  buffer.close()
161
  return pdf_bytes
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  # =================================================================================
164
  # INTERFACE DO STREAMLIT
165
  # =================================================================================
@@ -230,4 +283,19 @@ if 'pdf_bytes' in st.session_state and st.session_state.pdf_bytes:
230
  data=st.session_state.pdf_bytes,
231
  file_name=st.session_state.file_name,
232
  mime="application/pdf"
233
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  from reportlab.lib import colors
12
  from reportlab.lib.units import cm
13
  from reportlab.lib.enums import TA_CENTER, TA_JUSTIFY, TA_LEFT, TA_RIGHT
14
+ from docx import Document
15
+ from docx.shared import Inches
16
+ from io import BytesIO
17
+ from datetime import date
18
 
19
  # =================================================================================
20
  # FUNÇÃO DE GERAÇÃO DE PDF (MODIFICADA PARA ACEITAR DADOS E RETORNAR BYTES)
 
164
  buffer.close()
165
  return pdf_bytes
166
 
167
+ def create_docx_report(user_data):
168
+ doc = Document()
169
+
170
+ # Título principal
171
+ doc.add_heading(f"INFORMAÇÃO TÉCNICA - IT_{user_data['it_numero']}", 0)
172
+
173
+ doc.add_heading("SOLICITAÇÃO", level=1)
174
+ doc.add_paragraph(f"Unidade demandante: {user_data['unidade_demandante']}")
175
+ doc.add_paragraph(f"Finalidade da Avaliação: {user_data['finalidade_avaliacao']}")
176
+
177
+ doc.add_heading("IMÓVEL OBJETO", level=1)
178
+ doc.add_paragraph(f"Endereço - SMF: {user_data['endereco_smf']}")
179
+ doc.add_paragraph(f"Bairro - SMF: {user_data['bairro_smf']}")
180
+ doc.add_paragraph(f"Lote Fiscal / Inscrição - SMF: {user_data['lote_fiscal']}")
181
+ doc.add_paragraph(f"Registro do Imóvel: {user_data['registro_imovel']}")
182
+ doc.add_paragraph(f"Finalidade Imóvel - SMF:\n{user_data['finalidade_imovel']}")
183
+ doc.add_paragraph(f"Área Territorial - SMF: {user_data['area_territorial']}")
184
+ doc.add_paragraph(f"Área construída – SMF:\n{user_data['area_construida']}")
185
+ doc.add_paragraph(f"Exercícios em análise:\n{user_data['exercicios_analise']}")
186
+ doc.add_paragraph(f"Valores Venais Guias IPTU (Exercícios): {user_data['valores_venais']}")
187
+
188
+ doc.add_heading("ANÁLISE TÉCNICA PRELIMINAR", level=1)
189
+ doc.add_paragraph(f"Unidade responsável: {user_data['unidade_responsavel']}")
190
+ doc.add_paragraph(f"Técnico responsável: {user_data['tecnico_responsavel']}")
191
+ doc.add_paragraph(f"Método de Avaliação:\n{user_data['metodo_avaliacao']}")
192
+
193
+ doc.add_heading("CONCLUSÃO TÉCNICA", level=1)
194
+ doc.add_paragraph(f"Características desvalorizantes: {user_data['caracteristicas_desvalorizantes']}")
195
+ doc.add_paragraph(f"Conclusão:\n{user_data['conclusao_preliminar']}")
196
+
197
+ doc.add_heading("1. CONSIDERAÇÕES INICIAIS", level=1)
198
+ doc.add_paragraph(user_data['texto_consideracoes'])
199
+
200
+ doc.add_heading("2. ANÁLISE TÉCNICA PRELIMINAR", level=1)
201
+ doc.add_paragraph(user_data['texto_analise'])
202
+
203
+ # Data final
204
+ today = date.today()
205
+ meses = ("janeiro", "fevereiro", "março", "abril", "maio", "junho",
206
+ "julho", "agosto", "setembro", "outubro", "novembro", "dezembro")
207
+ data_formatada = f"Porto Alegre, {today.day} de {meses[today.month - 1]} de {today.year}."
208
+ doc.add_paragraph("\n" + data_formatada)
209
+
210
+ # Salvar o DOCX em memória
211
+ doc_io = BytesIO()
212
+ doc.save(doc_io)
213
+ doc_io.seek(0)
214
+ return doc_io
215
+
216
  # =================================================================================
217
  # INTERFACE DO STREAMLIT
218
  # =================================================================================
 
283
  data=st.session_state.pdf_bytes,
284
  file_name=st.session_state.file_name,
285
  mime="application/pdf"
286
+ )
287
+
288
+ if st.button("Gerar Relatório em DOCX"):
289
+ with st.spinner("Gerando DOCX..."):
290
+ docx_buffer = create_docx_report(user_data)
291
+ st.session_state.docx_bytes = docx_buffer.read()
292
+ st.session_state.docx_file_name = f"IT_{user_data['it_numero'].replace('/', '_')}.docx"
293
+
294
+ if 'docx_bytes' in st.session_state and st.session_state.docx_bytes:
295
+ st.success("Seu relatório Word está pronto para download!")
296
+ st.download_button(
297
+ label="Baixar DOCX",
298
+ data=st.session_state.docx_bytes,
299
+ file_name=st.session_state.docx_file_name,
300
+ mime="application/vnd.openxmlformats-officedocument.wordprocessingml.document"
301
+ )