1. Conhecendo o PDFPlumber
Extraindo tabelas e estruturas complexas com o PDFPlumber
O PDFPlumber é perfeito para extrair dados de PDFs, especialmente tabelas e estruturas complexas, como colunas. Ele permite identificar e extrair dados que são difíceis de acessar com o PyPDF2.
Instalando o PDFPlumber
pip install pdfplumber
Extraindo tabelas com o PDFPlumber
import pdfplumber
with pdfplumber.open("sample_with_table.pdf") as pdf:
for page in pdf.pages:
table = page.extract_table()
if table:
for row in table:
print(row)
Este código extrai tabelas de cada página de um PDF, o que é útil para processar relatórios financeiros e analíticos, onde tabelas contêm os dados principais.
2. Conhecendo o ReportLab
Criando relatórios em PDF com o ReportLab
Se você quiser criar PDFs do zero, como relatórios ou documentos automatizados, a biblioteca ReportLab oferece funcionalidades flexíveis para construir PDFs com texto, tabelas, imagens e gráficos.
Instalando o ReportLab
pip install reportlab
Criando um documento PDF simples
from reportlab.lib.pagesizes import A4
from reportlab.pdfgen import canvas
# Criando o PDF
pdf_file = canvas.Canvas("generated_report.pdf", pagesize=A4)
width, height = A4
# Adicionando um título
pdf_file.setFont("Helvetica-Bold", 16)
pdf_file.drawString(100, height - 100, "Relatório de Vendas")
# Adicionando texto
pdf_file.setFont("Helvetica", 12)
pdf_file.drawString(100, height - 130, "Este relatório contém os dados de vendas do último mês.")
# Salvando o PDF
pdf_file.showPage()
pdf_file.save()
Este código cria um PDF com um título e um texto. Ele também permite adicionar logotipos, imagens e outros elementos de design.
Criando uma tabela em PDF com o ReportLab
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle
# Dados para a tabela
data = [
["Mês", "Vendas"],
["Janeiro", "200"],
["Fevereiro", "300"],
["Março", "250"]
]
# Criando o PDF com a tabela
pdf_file = SimpleDocTemplate("sales_report.pdf", pagesize=A4)
table = Table(data)
table.setStyle(TableStyle([
('BACKGROUND', (0, 0), (-1, 0), colors.grey),
('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
('ALIGN', (0, 0), (-1, -1), 'CENTER'),
('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),
('BOTTOMPADDING', (0, 0), (-1, 0), 12),
('BACKGROUND', (0, 1), (-1, -1), colors.beige),
]))
# Construindo o PDF
elements = [table]
pdf_file.build(elements)
Este código cria uma tabela e a salva em um PDF. Com o ReportLab, você também pode adicionar estilos, alterar cores, tamanhos de fonte e formatar texto.
3. Voltando ao PyPDF2
Por que PyPDF2?
Como você sabe, documentos PDF são praticamente o padrão para todos os tipos de documentação, desde relatórios até white papers. Mas quando se trata de automação, trabalhar com PDF em Python pode ser um verdadeiro inferno. O PyPDF2 ajuda a sair desse labirinto: ele permite extrair texto, combinar e dividir páginas, entre outras coisas. E fazer isso com ele é um prazer. É como um bom café da manhã para o programador, só que em vez de te deixar animado, ele te deixa mais tranquilo!
Vamos dar uma olhada no básico, para que você tenha uma base sólida antes de encarar tarefas mais complexas. Sem uma introdução suave, é fácil se perder.
Importação e exemplo básico
A primeira coisa que precisamos fazer é importar a biblioteca. Como o velho e bom `import this`, mas agora com tarefas específicas.
import PyPDF2
Como exemplo simples, vamos tentar abrir um documento PDF e ler seu conteúdo.
# Abrindo o arquivo no modo binário para leitura
with open('example.pdf', 'rb') as pdf_file:
# Criando o objeto PDFReader
pdf_reader = PyPDF2.PdfReader(pdf_file)
# Extraindo texto da primeira página
page = pdf_reader.pages[0]
text = page.extract_text()
print(text)
Este código faz tudo o que é necessário para começar: abre um documento PDF, extrai o texto da primeira página e o exibe. Simples e funcional.
Visão geral da funcionalidade do PyPDF2
O PyPDF2 oferece várias funcionalidades para trabalhar com PDF:
- Extração de texto: já vimos isso.
- Combinação de PDFs: cria um novo documento PDF, unindo vários existentes.
- Divisão de páginas: seleciona páginas específicas e as salva em arquivos separados.
- Adição de anotações e comentários: isso já é nível avançado!
Neste ponto, você deve ter uma ideia geral de como o PyPDF2 funciona e o que ele oferece. Claro, é impossível dominar tudo em uma aula, mas vamos explorar passo a passo o que essa biblioteca pode fazer.
Feedback e erros comuns
Muitas vezes o código não funciona de primeira, e todo o aprendizado vira uma "caçada ao bug". O erro mais comum ao usar o PyPDF2 é fornecer um caminho incorreto para o arquivo. Certifique-se de que o documento PDF está no mesmo diretório que o seu script ou especifique o caminho completo. Além disso, não se esqueça de abrir os arquivos no modo binário ('rb'), pois isso ajuda a evitar problemas de codificação. Como disse um sábio programador: "Erros no código não são bugs, são apenas recursos inesperados".
GO TO FULL VERSION