Trabalhando com Arquivos PDF em Python: Guia Completo da Biblioteca PyPDF2
O PDF é um dos formatos mais populares para documentos eletrônicos. No entanto, manipulá-lo — como unir, dividir, criptografar ou extrair texto — exige ferramentas confiáveis. Em Python, uma das bibliotecas mais populares e robustas para trabalhar com PDF é a PyPDF2.
A PyPDF2 permite que o desenvolvedor leia, edite e crie arquivos PDF, além de obter metadados, gerenciar páginas, adicionar proteção e até mesmo inserir marcas d'água. É uma ferramenta poderosa tanto para automatizar fluxos de documentos quanto para integrar com outros serviços.
O que é PyPDF2
PyPDF2 é uma biblioteca Python para manipulação de arquivos PDF, desenvolvida como uma versão aprimorada da biblioteca original PyPDF. Ela oferece uma API de alto nível para ler, escrever e modificar documentos PDF sem a necessidade de entender a estrutura interna do formato PDF.
Principais recursos da biblioteca
- Leitura e extração de texto de arquivos PDF
- União de vários documentos PDF
- Divisão de PDF em páginas individuais
- Adição de marcas d'água e sobreposição de páginas
- Criptografia e descriptografia de arquivos PDF
- Trabalho com metadados de documentos
- Rotação e redimensionamento de páginas
- Gerenciamento de marcadores e sumário
Instalação do PyPDF2
A instalação da biblioteca é feita via pip:
pip install PyPDF2
Para um funcionamento mais estável, recomenda-se também instalar dependências adicionais:
pip install PyPDF2[crypto]
Principais classes e componentes
PdfReader
A classe PdfReader é usada para ler arquivos PDF. Ela fornece acesso às páginas, metadados e outras informações do documento.
PdfWriter
A classe PdfWriter é utilizada para criar novos arquivos PDF ou modificar os existentes. Permite adicionar páginas, aplicar criptografia e alterar metadados.
PdfMerger
A classe PdfMerger é especializada em unir vários arquivos PDF em um único documento, com a possibilidade de ajustar a ordem das páginas.
Operações básicas com PDF
Lendo arquivos PDF
from PyPDF2 import PdfReader
# Carregando o arquivo PDF
reader = PdfReader("exemplo.pdf")
# Obtendo o número de páginas
print(f"Número de páginas: {len(reader.pages)}")
# Extraindo texto da primeira página
primeira_pagina = reader.pages[0]
texto = primeira_pagina.extract_text()
print(texto)
Extraindo texto de todas as páginas
from PyPDF2 import PdfReader
reader = PdfReader("exemplo.pdf")
texto_completo = ""
for num_pagina, pagina in enumerate(reader.pages):
texto = pagina.extract_text()
texto_completo += f"--- Página {num_pagina + 1} ---\n{texto}\n\n"
print(texto_completo)
Verificando informações do documento
from PyPDF2 import PdfReader
reader = PdfReader("exemplo.pdf")
# Verificando se o arquivo está criptografado
if reader.is_encrypted:
print("Arquivo criptografado")
else:
print("Arquivo não criptografado")
# Obtendo as dimensões da primeira página
pagina = reader.pages[0]
print(f"Tamanho da página: {pagina.mediabox}")
print(f"Rotação: {pagina.rotation} graus")
Unindo arquivos PDF
União simples
from PyPDF2 import PdfMerger
merger = PdfMerger()
# Adicionando arquivos
merger.append("arquivo1.pdf")
merger.append("arquivo2.pdf")
merger.append("arquivo3.pdf")
# Salvando o resultado
merger.write("documento_unido.pdf")
merger.close()
União com seleção de intervalo de páginas
from PyPDF2 import PdfMerger
merger = PdfMerger() Também na biblioteca
Geração de PDF em Java: visão geral das melhores bibliotecas (iText, Apache PDFBox, OpenPDF)
Programação Reativa em C++: Bibliotecas e Prática
PhotosUI para Swift: guia completo com exemplos práticos
Métricas Prometheus em Go: criação e exportação de métricas em Golang
gRPC para C# (.NET): bibliotecas, configuração e exemplos de código