histlearn commited on
Commit
f57deab
·
verified ·
1 Parent(s): 849c18f

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -81
app.py CHANGED
@@ -303,85 +303,4 @@ with gr.Blocks(theme=theme) as interface:
303
 
304
  generate_btn.click(fn=wrapper, inputs=[html_file, excel_files], outputs=[output_html, download_html_btn, download_pdf_btn])
305
 
306
- interface.launch()
307
-
308
- para solucionar, recebi as dicas a seguir, o que me diz?
309
-
310
- Para resolver os problemas de formatação da tabela e ajustar a largura da coluna "Nome do Aluno" no PDF, juntamente com a quebra automática de linha para nomes longos, podemos fazer as seguintes modificações no seu código:
311
-
312
- Largura Dinâmica das Colunas:
313
-
314
- Calcule a largura de cada coluna com base no conteúdo da tabela e na largura da página.
315
- Utilize a biblioteca fpdf.FPDF.get_string_width para obter a largura do texto em cada célula.
316
- Quebra de Linha Automática:
317
-
318
- Use o método fpdf.FPDF.multi_cell para as células da coluna "Nome do Aluno".
319
- Defina a largura da coluna "Nome do Aluno" e deixe a altura ser calculada automaticamente (h=0).
320
- Remover botões de download: Remova os componentes de download download_html_btn e download_pdf_btn , pois não há necessidade de usar JavaScript para baixar arquivos com gr.File().
321
-
322
- Código Modificado:
323
-
324
- Python
325
- import gradio as gr
326
- # ... (restante do seu código)
327
-
328
- def generate_pdf_report(dataframe, media_tempo_medio_turma, output_pdf_path):
329
- class PDF(FPDF):
330
- # ... (header e footer permanecem iguais)
331
-
332
- def add_table(self, dataframe):
333
- self.set_font("Arial", "B", 10)
334
-
335
- # Calcular larguras dinâmicas das colunas
336
- col_widths = []
337
- for col in dataframe.columns:
338
- max_width = max(self.get_string_width(str(cell)) for cell in dataframe[col])
339
- col_widths.append(max_width + 4) # Adicionar um pequeno espaçamento
340
-
341
- row_height = self.font_size * 2
342
-
343
- # Adiciona os cabeçalhos
344
- for i, col in enumerate(dataframe.columns):
345
- self.cell(col_widths[i], row_height, col, border=1, align="C")
346
- self.ln(row_height)
347
-
348
- # Adiciona os dados com quebra de linha na coluna "Nome do Aluno"
349
- self.set_font("Arial", "", 10)
350
- for row in dataframe.itertuples(index=False):
351
- for i, item in enumerate(row):
352
- if i == 0: # Coluna "Nome do Aluno"
353
- self.multi_cell(col_widths[i], row_height, str(item), border=1, align="C", ln=3, max_line_height=row_height)
354
- else:
355
- self.cell(col_widths[i], row_height, str(item), border=1, align="C")
356
- self.ln(row_height)
357
-
358
- # ... (add_image permanece igual)
359
-
360
- # ... (restante do seu código)
361
-
362
- # --- Interface Gradio ---
363
- with gr.Blocks(theme=theme) as interface:
364
- gr.Markdown("# Processamento de Relatórios de Tarefas")
365
- with gr.Row():
366
- with gr.Column():
367
- gr.Markdown("## Arquivo HTML (alunos.htm)")
368
- html_file = gr.File(label="Arraste o arquivo .htm aqui", type="binary")
369
- with gr.Column():
370
- gr.Markdown("## Arquivos Excel (Relatórios de Tarefas)")
371
- excel_files = gr.Files(label="Arraste os arquivos .xlsx aqui", type="binary", file_count="multiple")
372
-
373
- generate_btn = gr.Button("Gerar Relatório", variant="primary")
374
- output_html = gr.HTML(elem_id="html_output")
375
- pdf_output = gr.File(label="Download PDF Report", elem_id="pdf_output")
376
-
377
- def wrapper(html_file, excel_files):
378
- html_content, html_path, pdf_path = processar_relatorio(html_file, excel_files)
379
- return {output_html: html_content, pdf_output: pdf_path} # Retorna o conteúdo HTML e o arquivo PDF
380
-
381
- generate_btn.click(
382
- fn=wrapper,
383
- inputs=[html_file, excel_files],
384
- outputs=[output_html, pdf_output]
385
- )
386
-
387
  interface.launch()
 
303
 
304
  generate_btn.click(fn=wrapper, inputs=[html_file, excel_files], outputs=[output_html, download_html_btn, download_pdf_btn])
305
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  interface.launch()