5
respostas

Relatórios em Python (PDF) com gráficos

Olá pessoal! Qual ferramenta vocês indicam para geração de relatório em Python, no formato PDF, que envolva textos, gráficos, tabelas... Já tentei criar o dashboard com o tkinter, foi super fácil de montar e o gráfico ficou ótimo, mas não consigo gerar o PDF com a mesma qualidade. Já pensei em usar o reportLab, mas não ficou bom, o visual não ficou legal também. Qual seria a melhor ferramenta? Gostaria que ficasse com a aparência parecida com a imagem em dashboard de vendas com textos e gráficosObrigada!

5 respostas

Olá, já que tem todo o layout pronto, por quê não tenta exportá-lo em imagem e anexar esta imagem a um PDF? acho que seria retrabalho gerar toda a lógica do layout novamente.

Bons estudos!

Olá Matheus, Obrigada por responder! Foi a minha primeira tentativa. Mas com esse design, feito em tinker, a forma que eu encontrei foi como se eu tivesse fazendo a captura da tela (printscreen) e colocado a imagem no pdf. A imagem não fica com uma boa resolução. Você conhece alguma outra forma de fazer? Obrigada!

Neste caso precisamos de uma solução um pouco mais sofisticada.

Pensei em algo assim:

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

def exportar_para_pdf():
    pdf_file = "conteudo_exportado.pdf"

    # Criar um novo PDF
    with PdfPages(pdf_file) as pdf:
        # Renderizar e salvar o gráfico
        fig, ax = plt.subplots()
        ax.plot([1, 2, 3, 4], [1, 4, 2, 3])
        ax.set_xlabel('X')
        ax.set_ylabel('Y')
        ax.set_title('Gráfico de Exemplo')
        pdf.savefig()  # Salvar o gráfico no PDF

        # Fechar o gráfico após salvar
        plt.close()

    print("PDF exportado com sucesso.")

# Criar a janela Tkinter
root = tk.Tk()
root.title("Exportar para PDF")

# Criar um botão para acionar a exportação para PDF
botao_exportar = tk.Button(root, text="Exportar Gráfico para PDF", command=exportar_para_pdf)
botao_exportar.pack()

root.mainloop()

Lembre-se de instalar as bibliotecas, alterações serão necessárias para se enquadrar no seu caso de uso.

Se nada assim funcionar, uma 'gambiarra' seria subir um site com os gráficos organizados no tamanho de uma folha A4 e chamar uma função de screenshot, ai jogar esse screenshot no PDF, mas desta forma precisariamos usar django ou algo assim, seria uma gambiarra mas talvez funcione!

Estou indo no caminho de fazer o layout em Html.. eu já tentei a solução que você colocou acima, mas não dá para organizar da forma que eu queria. Fiz o layout em Html, gerando os gráficos e salvando a imagem.. e depois substituindo com o jinja... quando finalizar coloco a solução aqui

Beleza!