Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -7,6 +7,7 @@ from fpdf import FPDF
|
|
7 |
import tempfile
|
8 |
import os
|
9 |
import matplotlib
|
|
|
10 |
matplotlib.use('Agg')
|
11 |
|
12 |
def extrair_tabelas_pdf(pdf_path):
|
@@ -193,16 +194,26 @@ def processar_boletim(file):
|
|
193 |
# Verificar se o arquivo é válido
|
194 |
if file is None:
|
195 |
return None, "Nenhum arquivo foi fornecido."
|
196 |
-
|
197 |
# Criar diretório temporário
|
198 |
temp_dir = tempfile.mkdtemp()
|
199 |
print(f"Diretório temporário criado: {temp_dir}")
|
200 |
|
201 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
temp_pdf = os.path.join(temp_dir, 'boletim.pdf')
|
203 |
-
|
204 |
-
|
205 |
-
|
|
|
|
|
|
|
206 |
|
207 |
# Extrair tabelas do PDF
|
208 |
print("Iniciando extração das tabelas...")
|
@@ -211,7 +222,17 @@ def processar_boletim(file):
|
|
211 |
|
212 |
# Verificar se o DataFrame foi criado corretamente
|
213 |
if df is None or df.empty:
|
214 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
215 |
|
216 |
# Processar notas
|
217 |
colunas_notas = ['Nota B1', 'Nota B2', 'Nota B3', 'Nota B4']
|
@@ -231,9 +252,16 @@ def processar_boletim(file):
|
|
231 |
pdf_path = gerar_relatorio_pdf(df, grafico1_path, grafico2_path)
|
232 |
print("Relatório PDF gerado")
|
233 |
|
|
|
|
|
|
|
|
|
234 |
# Ler PDF gerado
|
235 |
with open(pdf_path, 'rb') as f:
|
236 |
pdf_content = f.read()
|
|
|
|
|
|
|
237 |
|
238 |
return pdf_content, "Relatório gerado com sucesso!"
|
239 |
|
@@ -245,9 +273,7 @@ def processar_boletim(file):
|
|
245 |
# Limpar arquivos temporários
|
246 |
if temp_dir and os.path.exists(temp_dir):
|
247 |
try:
|
248 |
-
|
249 |
-
os.remove(os.path.join(temp_dir, file))
|
250 |
-
os.rmdir(temp_dir)
|
251 |
print("Arquivos temporários limpos")
|
252 |
except Exception as e:
|
253 |
print(f"Erro ao limpar arquivos temporários: {str(e)}")
|
|
|
7 |
import tempfile
|
8 |
import os
|
9 |
import matplotlib
|
10 |
+
import shutil
|
11 |
matplotlib.use('Agg')
|
12 |
|
13 |
def extrair_tabelas_pdf(pdf_path):
|
|
|
194 |
# Verificar se o arquivo é válido
|
195 |
if file is None:
|
196 |
return None, "Nenhum arquivo foi fornecido."
|
197 |
+
|
198 |
# Criar diretório temporário
|
199 |
temp_dir = tempfile.mkdtemp()
|
200 |
print(f"Diretório temporário criado: {temp_dir}")
|
201 |
|
202 |
+
# Verificar se o arquivo tem conteúdo
|
203 |
+
if not hasattr(file, 'name') or not os.path.exists(file.name):
|
204 |
+
return None, "Arquivo inválido ou corrompido."
|
205 |
+
|
206 |
+
if os.path.getsize(file.name) == 0:
|
207 |
+
return None, "O arquivo está vazio."
|
208 |
+
|
209 |
+
# Copiar o arquivo para o diretório temporário
|
210 |
temp_pdf = os.path.join(temp_dir, 'boletim.pdf')
|
211 |
+
shutil.copy2(file.name, temp_pdf)
|
212 |
+
print(f"PDF copiado para: {temp_pdf}")
|
213 |
+
|
214 |
+
# Verificar se a cópia foi bem sucedida
|
215 |
+
if not os.path.exists(temp_pdf) or os.path.getsize(temp_pdf) == 0:
|
216 |
+
return None, "Erro ao copiar o arquivo."
|
217 |
|
218 |
# Extrair tabelas do PDF
|
219 |
print("Iniciando extração das tabelas...")
|
|
|
222 |
|
223 |
# Verificar se o DataFrame foi criado corretamente
|
224 |
if df is None or df.empty:
|
225 |
+
return None, "Não foi possível extrair dados do PDF."
|
226 |
+
|
227 |
+
try:
|
228 |
+
# Renomear colunas
|
229 |
+
df.columns = ['Disciplina', 'Nota B1', 'Freq B1', '%Freq B1', 'AC B1',
|
230 |
+
'Nota B2', 'Freq B2', '%Freq B2', 'AC B2',
|
231 |
+
'Nota B3', 'Freq B3', '%Freq B3', 'AC B3',
|
232 |
+
'Nota B4', 'Freq B4', '%Freq B4', 'AC B4',
|
233 |
+
'CF', 'Nota Final', 'Freq Final', 'AC Final']
|
234 |
+
except:
|
235 |
+
return None, "O formato do PDF não corresponde ao esperado."
|
236 |
|
237 |
# Processar notas
|
238 |
colunas_notas = ['Nota B1', 'Nota B2', 'Nota B3', 'Nota B4']
|
|
|
252 |
pdf_path = gerar_relatorio_pdf(df, grafico1_path, grafico2_path)
|
253 |
print("Relatório PDF gerado")
|
254 |
|
255 |
+
# Verificar se o PDF foi gerado
|
256 |
+
if not os.path.exists(pdf_path) or os.path.getsize(pdf_path) == 0:
|
257 |
+
return None, "Erro ao gerar o relatório PDF."
|
258 |
+
|
259 |
# Ler PDF gerado
|
260 |
with open(pdf_path, 'rb') as f:
|
261 |
pdf_content = f.read()
|
262 |
+
|
263 |
+
if not pdf_content:
|
264 |
+
return None, "O relatório PDF gerado está vazio."
|
265 |
|
266 |
return pdf_content, "Relatório gerado com sucesso!"
|
267 |
|
|
|
273 |
# Limpar arquivos temporários
|
274 |
if temp_dir and os.path.exists(temp_dir):
|
275 |
try:
|
276 |
+
shutil.rmtree(temp_dir)
|
|
|
|
|
277 |
print("Arquivos temporários limpos")
|
278 |
except Exception as e:
|
279 |
print(f"Erro ao limpar arquivos temporários: {str(e)}")
|