Search
Close this search box.
Aprenda a criar arquivos PDF com Python
arquivos PDF

Posts Relacionados:

Aprenda facilmente como gerar arquivos PDF com Python para automatizar inúmeras tarefas rotineiras de forma simples e eficiente.

Receba nossa newsletter

Arquivos PDF com Python

arquivos PDF com Python

Você provavelmente já está familiarizado com as diversas bibliotecas e ferramentas disponíveis para manipular e gerar conteúdos com Python. Entre suas muitas habilidades extremamente úteis está a sua capacidade de criar arquivos PDF. Através deste recurso, podemos gerar relatórios automaticamente a partir de nossos dados, criar manuais do usuário, guias ou documentos técnicos que podem ser facilmente compartilhados e acessados, produzir versões digitais de livros, revistas ou outras publicações. Portanto, neste post, exploraremos a criação de PDFs com Python.

Bibliotecas do Python para a Criação de arquivos PDF

Para criar arquivos PDF com Python, você precisará de uma biblioteca que suporte essa funcionalidade. Algumas opções populares incluem:

ReportLab: biblioteca madura com documentação extensa, ideal para criar relatórios e documentos complexos.

PyPDF2: biblioteca leve perfeita para manipulação e criação de PDFs simples.

fpdf2: outra opção leve, adequada para geração básica de PDFs. Esta biblioteca é um fork da biblioteca anterior, fpdf.

Para este post, nos concentraremos na biblioteca fpdf2 devido à sua simplicidade e facilidade de uso.

biblioteca fpdf2

Apesar de leve e fácil de usar, a biblioteca fpdf2 não decepciona em termos de recursos. Ela tem praticamente tudo que você precisa para criar PDFs com Python, incluindo:

  • Incorporação de subconjunto de fontes TrueType Unicode (UTF-8)

  • Links internos / externos

  • Incorporação de imagens, incluindo transparência e canal alfa

  • Importação básica de SVG

  • Incorporação de códigos de barras, tabelas e gráficos, emojis, símbolos e dingbats

  • Tabelas e escrita de células / multicélulas

  • Textos simples, com quebras de página automáticas, quebra de linha e justificação de texto

  • Escolha da unidade de medida, formato de página e margens

  • Cabeçalho e rodapé de página opcionais

  • Conversão básica de HTML para PDF

  • Um sistema de modelos para renderizar PDFs em lotes

  • Imagens e links com descrições alternativas, para acessibilidade 

  • Índice e esboço do documento

  • Criptografia e assinatura de documentos 

  • Anotações, incluindo realces de texto e anexos de arquivo

  • Modo de apresentação com controle sobre a duração e as transições de exibição de página
  • Estilo básico opcional semelhante ao Markdown: **negrito**, __italics__

  • Pode renderizar equações matemáticas e gráficos

Neste post, cobriremos alguns de seus recursos básicos. Para os interessados em avançar nas funcionalidades da biblioteca, consulte a documentação oficial (aqui).

fpdf2 em código

Para usar a biblioteca fpdf2, você precisará instalá-la usando o pip ou conda:

				
					pip install fpdf2
conda install conda-forge::fpdf2
				
			

Vamos começar com um exemplo básico para ilustrar como criar um arquivo PDF com fpdf2. Num código Python, importamos a classe FPDF da biblioteca:

				
					from fpdf import FPDF

				
			

Em seguida, iniciamos uma instância da classe FPDF e criamos uma página:

				
					
# Cria uma instância da classe FPDF
pdf = FPDF()

# Adiciona uma página ao PDF
pdf.add_page()
				
			

No formato padrão, as páginas estão em modo retrato A4 e a unidade de medida é milímetro. Estes valores podem ser alterados. Consulte a documentação oficial para conhecer outras opções.

Após criarmos uma página, definimos a fonte que será usada:

				
					# Define fonte e tamanho
pdf.set_font("Helvetica", size=15)
				
			

Nesta etapa, podemos definir diferentes estilos para a nossa fonte como negrito ou itálico. Para isto, basta adicionar style=’B’, ou style=’I’, no comando mostrado acima.

Em seguida, criamos uma célula com o comando cell. Uma célula é uma área retangular que contém algum texto. Ela pode ser emoldurada. A área retangular é renderizada na posição atual. Especificamos suas dimensões, seu texto (text, centralizado (C) ou alinhado), se as bordas devem ser desenhadas e para onde a posição atual se move depois dela (para a direita, abaixo ou para o início da próxima linha). Veja um exemplo de como adicionar uma célula:

				
					# Adiciona texto centralizado na página
pdf.cell(0, 10, text="Olá Mundo!", align='C')
				
			

Por fim, salvamos o arquivo PDF com o comando:

				
					# Salva o arquivo PDF
pdf.output("olá_mundo.pdf")
				
			

Ao executar o código, você verá o arquivo PDF ser gerado contendo o texto “Ola Mundo!”.

Arquivo PDF de um Relatório Simples: cabeçalho

Agora partiremos para um exemplo um pouco mais complexo, mostrando como usar a biblioteca fpdf2 para gerar um relatório simples. Primeiro, criaremos o cabeçalho e o rodapé do nosso documento. Este exemplo usa os métodos header e footer definidos na classe FPDF. Eles são ideais para adicionar cabeçalhos e rodapés de página em poucas linhas de código. Eles são chamados automaticamente, mas temos que estender a classe para adicionar conteúdos. Veja o código de exemplo abaixo. Ele cria o cabeçalho do documento:

				
					from fpdf import FPDF

class PDF(FPDF):
    def header(self):
        # Renderiza um logo:
        self.image("local_da_sua_imagem/minha_imagem.png", 10, 8, 23)
        # Define uma fonte e seu tamanho: helvetica negrito 15
        self.set_font("helvetica", style="B", size=15)
        # Move o cursor para a direita:
        self.cell(80)
        # Imprime o título:
        self.cell(30, 10, "Título", border=1, align="C")
        # Executa uma quebra de linha:
        self.ln(20)
				
			

Neste exemplo, primeiro importamos a classe FPDF. Depois, definimos um cabeçalho. Nosso cabeçalho possui um logotipo e o título do documento. O logotipo é impresso com o método de imagem (preencha corretamente o local da sua imagem no código acima, use formatos PNG ou JPEG/JPG). Especificamos que o logo deve ser posicionado no canto superior esquerdo da página e definimos a sua largura. A altura é calculada automaticamente para respeitar as proporções da imagem. Note que o cabeçalho conta ainda com a quebra automática de página (ln). Assim que uma célula ultrapassa um limite na página (a 2 centímetros da parte inferior por padrão), uma quebra é executada e a fonte é restaurada.

Arquivo PDF de um Relatório Simples: rodapé e corpo de texto

Dando sequência à classe sendo expandida como mostrado acima, faremos agora o rodapé do documento. Ele mostrará o número da página atual e o número total de páginas do documento. Veja o nosso código:

				
					from fpdf import FPDF

class PDF(FPDF):
    def header(self):
        ...
    
    def footer(self):
        # Posiciona o cursor a 1,5 cm da parte inferior
        self.set_y(-15)
        # Define a font: helvetica itálico 8
        self.set_font("helvetica", style="I", size=8)
        # Imprime o número da página
        self.cell(0, 10, f"Página {self.page_no()}/{{nb}}", align="C")

				
			

No rodapé mostrado acima, para imprimir o número da página, um valor nulo é passado como a largura da célula. Isso significa que a célula deve se estender até a margem direita da página. O número da página atual é retornado pelo método page_no. Quanto ao número total de páginas, ele é obtido por meio do valor especial {nb} que será substituído no fechamento do documento. Observe que usamos também o método set_y(). Ele permite definir a posição do texto em um local absoluto na página, começando de cima ou de baixo.

Após a definição do cabeçalho e rodapé mostrados acima, estendemos o código para demostrar como adicionar um corpo de texto:

				
					# Instanciação da classe herdada
pdf = PDF()

# Adiciona uma página ao PDF
pdf.add_page()

# Define fonte e tamanho
pdf.set_font("Times", size=12)

# Adiciona texto
for i in range(1, 41):
    pdf.cell(0, 20, f"Imprime número da linha {i}", new_x="LMARGIN", new_y="NEXT")

# Salva arquivo PDF
pdf.output("rel.pdf")

				
			

Neste trecho do código, fazemos a instanciação da classe expandida contendo o cabeçalho e rodapé. Depois, adicionamos uma nova página ao documento e definimos a fonte do corpo do texto como Times. Em seguida, usamos um for loop simples para inserir um texto como conteúdo para nosso relatório. Neste exemplo, o texto consiste somente na frase “Imprime o número da linha” seguida do número correto. Por fim, geramos o PDF com o conteúdo completo.

Conclusão

Criar arquivos PDF com Python é uma habilidade valiosa para qualquer desenvolvedor. Com bibliotecas como a fpdf2, você pode gerar relatórios, documentação digital e livros eletrônicos com facilidade. Lembre-se de visitar a página oficial da biblioteca para conhecer outros recursos e opções de layout para criar documentos profissionais. Fique de olho por mais tutoriais sobre Python e IA!

Imagem com IA Generativa – Dia 513

IA generativa - img512

Arte com IA generativa: imagem do dia

Todos os dias postamos um exemplo de imagem artística gerada com inteligência artificial.

Tutoriais

Postagens Mais Recentes

Outras Postagens Que Podem Interessar

Veja
Mais

Fique em contato

Se inscreva para receber nossa newsletter com novidades.

aprendiz artificial