Salve salve Pythonista!
Neste artigo, vamos explorar como manipular arquivos PDF usando a linguagem de programação Python.
Veremos como criar arquivos PDF, ler texto de arquivos existentes, combinar vários arquivos PDF em um único e até mesmo dividir um arquivo PDF em páginas separadas.
Vamos nessa!
Vá Direto ao Assunto…
- Como criar um arquivo PDF do zero com Python?
- Como ler e extrair texto de um arquivo PDF?
- Como juntar (combinar) vários arquivos PDF em um só?
- Como dividir um PDF e extrair páginas separadas?
- Como girar uma página de um PDF?
Os arquivos PDF são amplamente utilizados para compartilhar documentos eletrônicos, como relatórios, e-books, manuais, entre outros.
Saber manipular esses arquivos usando programação pode trazer muitos benefícios, como automatizar tarefas relacionadas a documentos, extrair informações de arquivos, criar relatórios personalizados e até mesmo modificar documentos existentes para atender a requisitos específicos.
Felizmente, a biblioteca pypdf oferece uma maneira fácil de trabalhar com arquivos PDF em Python.
Você ainda usa
PyPDF2? OPyPDF2foi descontinuado e fundido nopypdf- métodos antigos comoPdfFileReader,.numPagese.extractText()foram removidos. Neste artigo usamos a biblioteca atual,pypdf. Consulte a documentação oficial.
Testado em Python 3.13 / pypdf 5.x. Todos os exemplos abaixo foram validados e funcionam em conjunto.
Antes de mergulhar nos detalhes, aqui está um mapa rápido das principais operações e o código pypdf correspondente:
| Operação | Código pypdf
|
|---|---|
| Ler / extrair texto | texto = PdfReader("a.pdf").pages[0].extract_text() |
| Contar páginas | total = len(PdfReader("a.pdf").pages) |
| Juntar PDFs | writer.append("a.pdf"); writer.append("b.pdf") |
| Extrair uma página | writer.add_page(reader.pages[0]) |
| Girar uma página | reader.pages[0].rotate(90) |
| Criar PDF (página em branco) | writer.add_blank_page(width=595, height=842) |
| Salvar no disco | with open("saida.pdf", "wb") as f: writer.write(f) |
Vamos explorar cada um desses recursos em detalhes!
Como criar um arquivo PDF do zero com Python?
Vamos começar criando um arquivo PDF do zero!
Para fazer isso, precisamos instalar a biblioteca pypdf usando o gerenciador de pacotes pip.
Primeiro, crie e ative um Ambiente Virtual para esse projeto.
E se ainda não sabe o que é um Ambiente Virtual, pare tudo e leia esse artigo onde vou te mostrar como criar e utilizar Ambientes Virtuais com Virtualenv
Com seu ambiente virtual ativo, abra o terminal e execute o seguinte comando:
1
pip install pypdf
Agora, vamos ao código! O processo tem 3 passos:
- Importar a classe
PdfWriterda bibliotecapypdfe criar um objetoPdfWriter. - Adicionar uma página em branco ao arquivo PDF.
- Salvar o arquivo final no disco.
1
2
3
4
5
6
7
8
9
10
11
from pypdf import PdfWriter
# Criando um objeto PdfWriter
pdf_writer = PdfWriter()
# Adicionando uma página em branco no tamanho A4 (em points)
pdf_writer.add_blank_page(width=595, height=842)
# Salvando o arquivo PDF no disco
with open("meu_arquivo.pdf", "wb") as output_pdf:
pdf_writer.write(output_pdf)
No código acima, criamos um objeto PdfWriter usando PdfWriter() e, em seguida, adicionamos uma página em branco ao arquivo PDF usando o método add_blank_page(), informando a largura e a altura em points (595 x 842 corresponde ao tamanho A4).
Por fim, salvamos o arquivo final usando write(output_pdf) e especificando o nome do arquivo como "meu_arquivo.pdf".
Ao executar esse código, um PDF com uma página em branco será criado e salvo no diretório atual.
Atenção: chamar
pdf_writer.add_page()sem argumento lançaTypeError, pois esse método espera uma página já existente (de umPdfReader). Para criar uma página nova useadd_blank_page().
Está curtindo esse conteúdo? ![]()
Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?
Como ler e extrair texto de um arquivo PDF?
Agora que sabemos como criar um arquivo PDF, vamos aprender como ler o texto de um arquivo PDF existente.
Para isso, usamos a classe PdfReader da biblioteca pypdf.
Vamos abrir um arquivo PDF existente, extrair o texto dele e exibi-lo no console. São 4 passos:
- Criar um objeto
PdfReaderapontando para o arquivo. - Descobrir quantas páginas o PDF tem com
len(reader.pages). - Percorrer as páginas e chamar
extract_text()em cada uma. - Imprimir o texto resultante.
1
2
3
4
5
6
7
8
9
10
11
12
13
from pypdf import PdfReader
# Abrindo um arquivo PDF existente
pdf_reader = PdfReader("meu_arquivo.pdf")
# Obtendo o número de páginas do arquivo PDF
num_pages = len(pdf_reader.pages)
# Lendo o texto de cada página
for page_number in range(num_pages):
page = pdf_reader.pages[page_number]
text = page.extract_text()
print("Texto da página", page_number + 1, ":", text)
No código acima, criamos um objeto PdfReader passando o caminho do arquivo diretamente - o pypdf cuida de abrir e fechar o arquivo para nós.
Usamos len(pdf_reader.pages) para obter o número total de páginas do arquivo PDF.
Depois, usamos um loop for para iterar sobre cada página do arquivo PDF.
Acessamos pdf_reader.pages[page_number] para obter uma página específica e extract_text() para extrair o texto dessa página.
Finalmente, imprimimos o texto resultante no console.
A extração de texto depende de o PDF conter texto “de verdade”. PDFs que são apenas imagens escaneadas não retornam texto - nesse caso você precisaria de OCR (por exemplo, com
pytesseract).
Estou construindo o Ebookr.ai, uma plataforma onde você cria ebooks profissionais com IA sobre qualquer assunto - do zero ao PDF pronto, com capas e infográficos gerados automaticamente. Dá uma olhada!
Como juntar (combinar) vários arquivos PDF em um só?
Às vezes, é necessário combinar vários arquivos PDF em um único arquivo.
Felizmente, a biblioteca pypdf oferece suporte a essa funcionalidade através do próprio PdfWriter (o antigo PdfFileMerger foi descontinuado).
Vamos criar um exemplo simples para combinar dois arquivos PDF em um único arquivo, em 3 passos:
- Criar um objeto
PdfWriter. - Anexar cada PDF com
writer.append(). - Salvar o arquivo combinado no disco.
1
2
3
4
5
6
7
8
9
10
11
12
from pypdf import PdfWriter
# Criando um objeto PdfWriter
pdf_writer = PdfWriter()
# Anexando os arquivos PDF ao objeto PdfWriter
pdf_writer.append("arquivo1.pdf")
pdf_writer.append("arquivo2.pdf")
# Salvando o arquivo combinado
with open("arquivo_combinado.pdf", "wb") as output_pdf:
pdf_writer.write(output_pdf)
No código acima, criamos um objeto PdfWriter e anexamos dois arquivos PDF usando o método append(), que aceita o caminho do arquivo diretamente.
Em seguida, salvamos o arquivo combinado usando write(output_pdf).
Como dividir um PDF e extrair páginas separadas?
Às vezes, temos um arquivo PDF grande e precisamos dividi-lo em várias páginas separadas. Vamos ver como fazer isso usando a biblioteca pypdf, em 4 passos:
- Abrir o arquivo original com
PdfReader. - Descobrir o número de páginas com
len(reader.pages). - Para cada página, criar um
PdfWritere adicionar essa página comadd_page(). - Salvar cada página em um arquivo separado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from pypdf import PdfReader, PdfWriter
# Abrindo o arquivo PDF original
pdf_reader = PdfReader("arquivo_grande.pdf")
# Obtendo o número de páginas do arquivo PDF
num_pages = len(pdf_reader.pages)
# Dividindo o arquivo em várias páginas separadas
for page_number in range(num_pages):
# Criando um objeto PdfWriter
pdf_writer = PdfWriter()
# Copiando a página atual para o novo arquivo
page = pdf_reader.pages[page_number]
pdf_writer.add_page(page)
# Salvando a página separada
with open(f"pagina_{page_number + 1}.pdf", "wb") as output_pdf:
pdf_writer.write(output_pdf)
No código acima, criamos um objeto PdfReader a partir do arquivo original e usamos len(pdf_reader.pages) para obter o número total de páginas.
Usamos um loop for para iterar sobre cada página do arquivo PDF original.
Em cada iteração, criamos um novo objeto PdfWriter e copiamos a página atual (pdf_reader.pages[page_number]) para esse novo arquivo usando add_page().
Em seguida, salvamos a página separada no disco usando write(output_pdf).
Como girar uma página de um PDF?
Outra operação comum é girar uma página - útil para corrigir documentos escaneados de lado. No pypdf, basta chamar rotate() na página (o ângulo precisa ser múltiplo de 90):
1
2
3
4
5
6
7
8
9
10
11
12
13
from pypdf import PdfReader, PdfWriter
pdf_reader = PdfReader("arquivo.pdf")
pdf_writer = PdfWriter()
# Girando a primeira página em 90 graus no sentido horário
page = pdf_reader.pages[0]
page.rotate(90)
pdf_writer.add_page(page)
# Salvando o resultado
with open("arquivo_girado.pdf", "wb") as output_pdf:
pdf_writer.write(output_pdf)
Aqui usamos page.rotate(90) para girar a página em 90 graus e, em seguida, adicionamos a página girada ao PdfWriter antes de salvar.
Conclusão
Neste artigo, vimos como manipular arquivos PDF usando Python.
Aprendemos como criar arquivos PDF do zero, ler texto de arquivos existentes, combinar vários arquivos PDF em um único e dividir um arquivo PDF em páginas separadas.
Essas habilidades podem ser úteis em uma variedade de cenários, desde automatizar tarefas relacionadas a documentos até extrair informações úteis de arquivos PDF existentes.
A biblioteca pypdf é uma ferramenta poderosa e fácil de usar para o trabalho com arquivos PDF em Python - e, por ser a sucessora oficial do antigo PyPDF2, é a escolha recomendada hoje.
Recomendo que você explore mais recursos dessa biblioteca na documentação oficial do pypdf e experimente diferentes manipulações de arquivo PDF por conta própria.
Até a próxima!
Perguntas frequentes
Como ler e extrair texto de um PDF com Python?
Para ler e extrair texto de um PDF, use a biblioteca pypdf: abra o arquivo com reader = PdfReader('arquivo.pdf'), acesse a página com reader.pages[0] e chame page.extract_text(). Para todas as páginas, percorra reader.pages em um for.
Como juntar (combinar) vários PDFs em um só com Python?
Crie um PdfWriter, use writer.append('arquivo1.pdf') e writer.append('arquivo2.pdf') para anexar cada PDF e salve com with open('saida.pdf', 'wb') as f: writer.write(f). No pypdf atual, o PdfWriter substitui o antigo PdfFileMerger.
O PyPDF2 ainda funciona em 2026?
Não use mais o PyPDF2: ele foi descontinuado e fundido no pypdf. Métodos antigos como PdfFileReader, .numPages e .extractText() foram removidos. Instale a versão atual com pip install pypdf e use PdfReader, len(reader.pages) e extract_text().
Como extrair uma página específica de um PDF com pypdf?
Para extrair uma página específica, indexe reader.pages[i] (a contagem começa em 0). Para salvá-la isolada, adicione-a a um PdfWriter com writer.add_page(reader.pages[i]) e grave o arquivo com writer.write().
Como criar e escrever um arquivo PDF do zero com Python?
Crie um PdfWriter, adicione uma página em branco com writer.add_blank_page(width=595, height=842) (tamanho A4 em points) e salve com with open('novo.pdf', 'wb') as f: writer.write(f). Chamar add_page() sem argumento gera TypeError.
"Porque o Senhor dá a sabedoria, e da sua boca vem a inteligência e o entendimento" Pv 2:6